iOS安全攻防(十五)使用hopper修改字符串
2014-12-25 09:59 16字节 阅读(9032) 评论(4) 编辑 收藏 举报个人原创,转帖请注明来源:cnblogs.com/jailbreaker
逆向iOS的mach-o文件,除了用耳熟能详的ida反汇编器外,在mac下还有个叫做hopper的反汇编器,hopper可谓是性价比很高的利器,一年约600rmb的价格,让我等屌丝可以承受,官网地址http://www.hopperapp.com,有demo版可以试用,这篇帖子使用hopper来讲解修改字符串。
真机运行程序,控制台输出如下:
今天是圣诞节,这篇帖子的内容是把 "hello world" 修改成 “Christmas",先把目标文件拖入到hopper中,光标定位到main函数:
hopper也有类似ida的f5功能,把arm汇编逆向成伪代码,ida中的这个功能,在上一篇帖子里已经用过了,这里主要讲hopper,使用快捷键alt+enter:
明显看出hopper的伪代码已经是接近oc源代码了,而ida是纯c的伪代码。
从伪代码窗口中看出main生产了一个Atom实例,而没有输出字符串的代码,但是init的方法是可以自定义的,进入Atom的init一窥究竟。
成功加载mach-o文件之后,hopper的左侧面板会出现分析出来的类和其方法:
进入init方法,看其伪代码:
果然在init里输出了 “hello world”,看一下init的arm汇编代码:
在 0000b248 add r0, pc
从这行后面的注释可以看出”hello world”是NSLog的参数,定位到这行,使其处于高亮状态,接着看hopper右侧栏:
上图第一个区域指“被谁引用”,第二个区域指“从哪里引用”,在第2个区域里双击显示的指令,跳转至:
继续看右侧“从哪里引用”区域:
上图显示有2行指令,第一行直接看到“hello world”字符串,点击跳转:
这里就是我们目的地了,除了”hello world”外,还有其他分析出来的字符串,在这行,我们打开hopper的16进制编辑器:
高亮的那行16进制数字就是代表”hello world”,其中包含空格键和字符串结尾’/0。'
双击修改成相应字符串ascii码:
由于”Christmas”比原来的”hello world”字符串短,需要在’s’的后面的字节修改成00,即字符串结尾。
修改完毕后,保存文件:
接下来只要把app重新安装到ios设备里,就能显示“Cristmas”: