首页
社区
课程
招聘
[求助]使用cynject 注入dylib 并hook目标函数 运行死机!
2014-11-13 11:16 7799

[求助]使用cynject 注入dylib 并hook目标函数 运行死机!

2014-11-13 11:16
7799
使用的工具
cynject:cydiasubstrate库中提供的,可以实现进程注入。

我写的测试程序
1. demo:目标程序 循环调用NSLog 输出信息
2. my.dylib:调用MSHookFunction((void*)NSLog,(void*)&my_NSLog,NULL)

过程
1. 运行demo
2. 执行cynject向demo注入my.dylib, 然后死机了。。。

错误信息
pc指针指向 my_NSLog 地址
错误类型 有时是KERN_INVALID_ADDRESS 有时是KERN_PROTECTION_FAILURE


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
林肯公园 2014-11-22 23:24
2
0
你最好写一个old_NSLog,用来保存NSLog被hook后,新的NSLog的地址
my_NSLog里面这样写 :
{
     // 这里写你要做的东西

     old_NSLog(.........);
}

最好hook把old_NSLog填到第三个参数里
雪    币: 296
活跃值: (89)
能力值: ( LV15,RANK:340 )
在线值:
发帖
回帖
粉丝
木桩 8 2014-11-25 22:57
3
0
MSHook(void, NSLogv, NSString *format, va_list args) {
    _NSLogv(format, args);

    NSString *logResult = [[NSString alloc] initWithFormat:format arguments:args];
    FLogInfo("%s", TO_CSTR(logResult));
}

...
MSHookFunction(NSLogv, MSHake(NSLogv));


最近正好在写类似的功能,将目标程序的NSLog输出到文件中。Hook的是NSLogv,实际上NSLog是调用的NSLogv。
用这两段就可以了,或者参考这个Tweak.xm
游客
登录 | 注册 方可回帖
返回