怎么样能够在指定模块加载成功后,中断到lldb中?
静态分析,ida,hooper,得出指定模块的地址,算偏移量下断点
debugserver 启动一个app 调试
然后在lldb上面对app上面的一个关心的地址下断,此时完全不行
只能等到模块加载的时候才行,
但是如果等到程序跑起来,又可能错过下断的时机,
所以lldb没有类似于windbg的sxe这样的命令,可以在模块加载成功后立刻中断到调试器?
这也是一直困扰我的一个问题,我也很想知道有没有这个功能。
@NavilleZhang 提到的:
process launch --stop-at-entry
倒是有点这个意思,但是应用场合还是有区别
他要断在constructor执行之前?
不是,是断在一个dylib被加载时,比如断在某个dylib的第一条指令上;这样就可以从头开始调了
doModInit,这不是常识咩
啥意思,详细说说?我还真不知道这个常识
不太了解IOS的app的启动和加载过程
我的意思是
程序本身那个主文件被loader加载了,但是还没有来的及跑起来,
在这个时候断下
(lldb) image list
[ 0] 36EFF492-75C2-3D2D-815E-48AF33EEA471 0x0000000120090000 /Users/xxxxx/Library/Developer/Xcode/iOS DeviceSupport/8.1.2 (12B440)/Symbols/usr/lib/dyld
差不多就是我希望在这个时候断main函数或者是程序的入口点
这个entry是程序的入口点还是整个加载过程的开始?
dyld的doModInit是执行dylib constructor的地方,断在那里【理论上】就可以实现要的效果
你可以找到dlopen函数的地址 然后下个条件断点,
ImageLoaderMachO::doModInitFunctions
说的是这个吗?
看起来是,你下个断点试试看?期待测评
然而我们并不知道lldb能不能断在dyld内部,应该是不行