最近hook sub_xxxxx函数的时候,老是白苹果,请问哪里写错了

例如:

void (*old_aes_encrypt)(std::string* outStr,
                        unsigned int*  aes,
                        std::string* inStr,
                        unsigned int model
                        );

void aes_encrypt(std::string* outStr,
                 unsigned int*   aes,
                 std::string* inStr,
                 unsigned int model
                 ){
    old_aes_encrypt(outStr,aes,inStr,model);
    NSLog(@"aes_encrypt: inStr:%s \n model:%d \n return:%s",inStr->c_str(),model,outStr->c_str());
}

%ctor{
    @autoreleasepool
    {
        unsigned long _aes_encrypt_slide =(_dyld_get_image_vmaddr_slide(0) + 0x13D478) | 0x1;
        MSHookFunction((void *)_aes_encrypt_slide, (void *)&aes_encrypt, (void **)&old_aes_encrypt);
    }
}

有时候参数判断错误的话,运行APP就假死,然后所有APP都没办法启动,重启打不开机器就白苹果了。。

你的filter是不是设置成了全局的?

肯定不是的,设置了要HOOK的APP。

最近我的ipad iPhone itouth全部白苹果了,不是hook一个APP,而是只要SUB——XXXX的,写错就白,搞得我现在不敢用了

你要hook的是第三方的App还是系统App?

第三方APP,我最近试过好几个了,都会出现上述问题

那不应该啊,你把代码改一下,改成一个安全的hook,然后NSLog一下,看看是不是只在你的目标进程里输出了

对了狗神,你这么一说我有点印象,

我是用IOSOpenDev来写的,File我设置过
但好像不只是当前APP被Hook,而是所有APP都被Hook了,我前段时间有奇怪过怎么我的Log信息一直输出

我测试一下%ctor{}看看会不会一直输出

找到问题原因了:

比如我要hook的APP File 为 com.test.hook

我习惯性写 项目名称App File ( com.test.hook )一样 ,导致hook了自身,然后引起的白苹果,

引以为戒!

1 个赞