如何在lldb或者cycript中手动调用sub_xxx这类函数

不知为什么我hook这类sub_xxx的函数后,app运行就会崩溃。下面是我hook的代码,我是没看出有什么不对的地方,有同学能帮忙看下问题出在哪么。

NSData* (old_sub_1014b5324)(int, NSData);
NSData* new_sub_1014b5324(int platform, NSData* data);

NSData* new_sub_1014b5324(int platform, NSData* data)
{
NSLog(@“wxq this is new_sub_1014b5324”);
return old_sub_1014b5324(platform, data);
}

%ctor
{
%init;
unsigned long _sub_1014b5324 = (_dyld_get_image_vmaddr_slide(0) + 0x1014b5324) | 0x1;
if(_sub_1014b5324){
NSLog(@“wxq found _sub_1014b5324”);
}

MSHookFunction((void*)_sub_1014b5324, (void*)&new_sub_1014b5324, (void**)&old_sub_1014b5324);
NSLog(@"wxq hook sub_1014b5324 success");

}

那么问题来了,怎样在lldb或者cycript中手动的调用这个sub_1014b5324函数呢?

1 个赞

arm64不需要 | 1

谢了,刚刚发现原来arm64不需要带,论坛里的帖子要更新了啊,不然害死人。。。

http://www.cycript.org/manual/#7b64abcf-5059-4ace-bb1a-3b58ce9bb50a

这个应该只适用于带有符号化信息的C函数吧,类似sub_xxx这种函数用不了的。

@encode了解一下

cycript
可能我没有get到你的意思,我用上面的操作得到的指针为空。

???
WTF

你这个帖子有点意思啊,描述了一大段,但是问题跟这一大段描述又没有直接关系。所以你的问题到底是什么呢?如果有2个问题,开2个帖子好了

抱歉,第一个问题解决了,arm64系统hook sub_xxx时不需要加 |1
第二个问题不想单独开贴了,各位大神有兴趣的可以探讨指点下,没兴趣就算了。如何在lldb或者cycript里直接调用sub_xxx这样的接口呢?