Joo
1
找到了一个Unity的函数, Hook成功了, 但是想要恢复Unity的原始逻辑却crash了, 姿势不对吗?
错误信息: EXC_BAD_ACCESS (code=1, address=0x0)
代码
char* (*GetImageById)(int img_id);
char* replace_GetImageById(int img_id) {
return GetImageById(img_id);
}
%ctor
{
@autoreleasepool
{
unsigned long GetImageById = _dyld_get_image_vmaddr_slide(0) + 0x1014D07A8;
MSHookFunction((void *)GetImageById, (void *)&replace_GetImageById, (void **)&GetImageById);
}
}
Maing
2
char* (*orig_GetImageById)(int img_id);
char* replace_GetImageById(int img_id) {
return orig_GetImageById(img_id);
}
%ctor
{
@autoreleasepool
{
unsigned long GetImageById = _dyld_get_image_vmaddr_slide(0) + 0x1014D07A8;
MSHookFunction((void *)GetImageById, (void *)&replace_GetImageById, (void **)&orig_GetImageById);
}
}
Joo
3
意思是我在声明原函数的时候, 不能和原函数同名, 否则会出现问题吗?
Joo
4
不闪退了, 确实是我什么原函数时, 命名的问题
感谢感谢 
Maing
5
你应该是对hook的原理不清楚, 找了一张图, 你仔细看看, 就容易理解了

3 个赞