MSHookFunction能Hook住,但是游戏却打不开了

一个简单的MSHookFunction示例
#import <CoreFoundation/CoreFoundation.h>
#import <UIKit/UIKit.h>
#import “substrate.h”

static int (*org_func)();

int replace_func()
{

NSLog(@"this is the my hooked method");

return org_func();

}

%ctor
{
@autoreleasepool
{

// 此为Hook地址。能Hook住,但是游戏却打不开了
unsigned long fuc_addr1 = 0x4AF840 | 0x01 ;
MSHookFunction((void *)fuc_addr1,(void *)&replace_func,(void **)&org_func);
}
}

以上Tweak代码,编译安装后,运行程序,每多打开一次,在syslog里能看到,会多打印一条“this is the my hooked method”,但是游戏却会自动退出。感觉是执行这句时return org_func();发生了异常。

请问各位大大,这是怎么回事呀?

函数应该是有参数的,你没有传入响应的参数

hi 为什么我unsigned long RSA_private_decrypt = (_dyld_get_image_vmaddr_slide(0) + 0x000776b0);
0x000776b0就是C++函数的偏移量


_RSA_private_decrypt:
000776b0 ldr.w sb, [r3, #0x8] ; XREF=__Z16gRVGUBCGFDZEwCijNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE+1446, __Z16GEcLnEuSVVOFPQqtv+1206, _pkey_rsa_decrypt+76, _pkey_rsa_decrypt+142
000776b4 ldr.w ip, [sb, #0x10]
000776b8 bx ip
运行后直接闪退