小黄书中指导的是为[SpringBoard _menuButtonDown:]
方法添加断点,
在IDA中解包SpringBoard后并没有发现书中所说的方法名,猜想是因为旧方法名已被废弃,我的越狱设备是iOS 12.2,书中是针对的iOS 8.0,尴尬!
非常想尝试为app动态添加断点,并验证ASLR后自己计算的偏移后地址是否正确,在IDA中找到这样一个方法:
[SBUIController handleHomeButtonDoublePressDown]
根据方法名可能是双击home键触发?
添加断点:
(lldb) br s -a 0x100a27724
Breakpoint 4: where = SpringBoard`___lldb_unnamed_symbol6598$$SpringBoard, address = 0x0000000100a27724
很明显添加成功了,双击home键,断点触发,断点触发之后可以输入continue
继续往下执行。
值得强调的是添加断点时的地址一定要计算正确,不正确的时候是这样的:
(lldb) br s -a 0x200167724
Breakpoint 3: address = 0x0000000200167724
即没有很多提示信息,这个也可以从侧面反映地址可能计算错误。
计算偏移后地址的万能公式(模块儿、符合基地址、指令基地址均适用):
偏移后地址 = 偏移前地址 + ASLR偏移
IDA中分析的是静态的二进制文件,所以IDA中看到的地址一定是偏移前地址,另外,LLDB调试的二进制文件一定要是跟IDA分析的是同一个文件,牢记这几点,计算的地址一般不会错。