前言
iOS逆向中使用Hopper可以帮助我们分析目标APP的方法地址来实现动态调试,本文只是简单介绍一个Hopper的基本用法
下载Hopper
Hopper目前在最新的Mac系统上没有破解版,每次可以试用半小时,不过对于一般的分析也是够用了,这里贴一下Hopper的官网Hopper
)
分析目标APP
这里主要是用自己新建的Demo用来分析,我Demo里就写了两个方法
工程编译之后把.app文件拖到Hopper的窗口
然后点击OK就行了
然后就可以进行分析了,我首先是在viewdidload里加了断点
可以先用image list 打印文件的基地址,由于iOS的ASLR特性,需要用基地址来计算其他地址,上图第一条就是可执行文件加载的基地址
上图右边Hopper选中的部分是say方法的地址,不过这里自己新建的工程拉到Hopper里面Hopper也有一个基地址0x100000000
可以在控制台用p/x
指令计算一下say方法的实际地址,计算方法是(可执行文件的基地址+Hopper中方法的偏移-Hoper加载的基地址),计算出结果后用b
指令下断点,可以看到已经对say方法下了断点了,这时候让程序继续执行就会断到say方法了
Hopper展示的都是汇编,我们也可以让xcode展示汇编,
选中Always Show Disassembly之后就可以看到汇编代码了
Xcode的汇编代码和Hopper的汇编代码相差的就是基地址了
Hopper和MachOView
MachO文件是iOS的可执行文件,里面的地址也可以跟Hopper反汇编出来的对应
Hopper还有很多用法,我这里只是做个基本的介绍。我是逆向初学者,如果文中有什么不对的地方,欢迎各位提出宝贵意见。