代码改变世界

iOS安全攻防(十五)使用hopper修改字符串

2014-12-25 09:59 by 16字节, ... 阅读, ... 评论, 收藏, 编辑

个人原创,转帖请注明来源:cnblogs.com/jailbreaker

逆向iOS的mach-o文件,除了用耳熟能详的ida反汇编器外,在mac下还有个叫做hopper的反汇编器,hopper可谓是性价比很高的利器,一年约600rmb的价格,让我等屌丝可以承受,官网地址http://www.hopperapp.com,有demo版可以试用,这篇帖子使用hopper来讲解修改字符串。

真机运行程序,控制台输出如下:

NewImage
 今天是圣诞节,这篇帖子的内容是把 "hello world" 修改成 “Christmas",先把目标文件拖入到hopper中,光标定位到main函数:

NewImage

hopper也有类似ida的f5功能,把arm汇编逆向成伪代码,ida中的这个功能,在上一篇帖子里已经用过了,这里主要讲hopper,使用快捷键alt+enter:

NewImage

明显看出hopper的伪代码已经是接近oc源代码了,而ida是纯c的伪代码。

从伪代码窗口中看出main生产了一个Atom实例,而没有输出字符串的代码,但是init的方法是可以自定义的,进入Atom的init一窥究竟。

成功加载mach-o文件之后,hopper的左侧面板会出现分析出来的类和其方法:

NewImage

进入init方法,看其伪代码:

NewImage

果然在init里输出了 “hello world”,看一下init的arm汇编代码:

NewImage

 

在 0000b248         add        r0, pc

从这行后面的注释可以看出”hello world”是NSLog的参数,定位到这行,使其处于高亮状态,接着看hopper右侧栏:

NewImage

 

上图第一个区域指“被谁引用”,第二个区域指“从哪里引用”,在第2个区域里双击显示的指令,跳转至:

 

NewImage

 

继续看右侧“从哪里引用”区域:

NewImage

 

上图显示有2行指令,第一行直接看到“hello world”字符串,点击跳转:

NewImage

 

这里就是我们目的地了,除了”hello world”外,还有其他分析出来的字符串,在这行,我们打开hopper的16进制编辑器:

NewImage

NewImage

 

高亮的那行16进制数字就是代表”hello world”,其中包含空格键和字符串结尾’/0。'

双击修改成相应字符串ascii码:

NewImage

由于”Christmas”比原来的”hello world”字符串短,需要在’s’的后面的字节修改成00,即字符串结尾。

修改完毕后,保存文件:

NewImage

接下来只要把app重新安装到ios设备里,就能显示“Cristmas”: