preference中的_getCTMobileEquipmentInfo无法lldb断点定位

通过cycript找到显示“关于本机”信息的controller类为AboutController,然后grep查找,
发现在Preferences 中匹配:Binary file /Applications/Preferences.app/Preferences matches;
然后将/Applications/Preferences.app/Preferences拷贝出来,并dump头文件,在头文件AboutController.h中找到AboutController的定义,同时在AboutDataSource.h中找到_getCTMobileEquipmentInfo方法的定义:

  • (id)_getCTMobileEquipmentInfo:(struct __CFString *)arg1;

接下来,将preference放进ida中分析,定位到_getCTMobileEquipmentInfo方法:


然后debugsever+lldb进行调试,lldb中image list -o -f如下:

然后:
(lldb) br s -a ‘0x000c8000+0x0001F874’
Breakpoint 5: where = Preferences`_mh_execute_header + 101308, address = 0x000e7874
发现创建的断点,不是在_getCTMobileEquipmentInfo方法中。
这是为何?哪位大侠帮我一下!谢谢!

楼主搞定了吗?我发现用类似方法创建的断点也都不对,都是模块名‘mhexecute_header+一个地址,指向的是不对的指令。

后面发现,其实断点是对的,只是显示的内容与lldb到普通模块上的显示的内容样式不一样而已,断点调试还是可以的。