@LQM_pig wrote:
hook目前最常用,就是开源fishhook(hook c函数)和Substrate(http://www.cydiasubstrate.com/),最近发现一种似乎有别于这两种的技术,研究了一下,感觉理论上可以实现,但是实现过程中遇到一点问题,之前也在群里问过,有给过思路,技术有限,没有研究出来,所以。。。。。
回到正题。
创建一个应用,代码很简单,如下:
直接运行,是会崩溃的(exit(0));
接下来写一个dylib,劫持这个exit系统调用
代码也很简单,只要有一个替换函数就行了.
接下来就运行一下。(此时还没有进行hook,运行是会闪退的)
然后获取生成的二进制文件:
用hopper 查看其调用;
可以看出,调用exit的流程,main()-->exit_test()-->exit()(exit是在系统库/usr/lib/libSystem.B.dylib查找)。
接下来,用010修改二进制文件:修改后,调用exit的调用发生了变化:
最后一个,就是问题所在,虽然调用符号改变了(exit------>exxt),但是查找路径没有变,依然会去系统库里找exxt,导致错误。
重签名二进制文件运行试一下就可以看出来:
lazy symbol binding failed;;;
请问各位大佬,怎么重新绑定一个符号的依赖路径。
Posts: 1
Participants: 1