Quantcast
Channel: 睿论坛 - 最新话题
Viewing all articles
Browse latest Browse all 5732

Hook函数内部地址

$
0
0

@111110 wrote:

在没有能力自己写cydia hook 框架的情况下,想实现在某个函数任意地址(目标12字节+)hook,怎么办呢。
下面分享个小玩具,可以实现在函数中部hook。

步骤1:
首先找到你要hook那条语句地址,比如0x493B12

步骤2:
创建2个函数
其中$warp函数是构造好的函数。

realFun是hook业务函数,funRet为函数返回地址。
realFun的参数根据自己需要设置。
如果hook目标地址的有效数据不是r0-r3,比如r6, 那么可以在
“bl %0\n” 这句之前加一句"mov r0, r6\n",也可以访问栈变量"ldr r1, [sp,#0x48] \n" 偏移自己估算。

然后是实际的hook业务代码。

最后用MSHookFunction hook该地址,并将返回地址保存在funRet里。
void* addr = (void*)((dyldget_image_vmaddr_slide(0) + 0x493B12)|1);
MSHookFunction((void *)addr, (void *)$wrap, (void **)& funRet);

注意标志位寄存器未保存,你可以自己加上,64位代码同理。

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 5732