不用反汇编!LLDB对Objective-C函数下断点的黑科技


(nzt) #1

看过"小黄书"的朋友们应该都对函数OC函数下断点步骤很清楚:

  1. LLDB连接到程序
  2. 调动命令image -o -f查看app二进制偏移
  3. 在hopper或者IDA查看需要下断点的函数的文件偏移
  4. LLDB输入br s -a 'app二进制偏移+函数的文件偏移'

但是作为传统的方式以上方法存在两个问题

  1. 需要hopper或者IDA支持,这两个软件对电脑配置的要求较高,而且反汇编速度较慢。
  2. 不能对“已经通过运行时替换函数实现地址的函数”进行拦截

作为一个逆向开发新手,特分享一个以小技巧,可以免除对反汇编软件的依赖,而且拦截成功率更高。

  • LLDB连接到程序
  • 找到需要下断点的类,如MMServiceCenter,然后在LLDB命令行输入po [MMServiceCenter _shortMethodDescription]。以微信的[MMServiceCenter getService:]断点为例,操作如下:

  • 然后在命令行输入b 0x100bd04f0即可实现下断操作,实践效果如下:

图片.png827x450 57.6 KB

最后再分享个打印数据模型内容很有用的私有函数方法[模型对象 _ivarDescription];更多黑科技私有函数,可参阅这个链接