Quantcast
Channel: 睿论坛 - 最新话题
Viewing all articles
Browse latest Browse all 5740

发现一种新的hook技术,但是实现过程中遇到一个问题

$
0
0

@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

Read full topic


Viewing all articles
Browse latest Browse all 5740

Latest Images

Trending Articles



Latest Images