ele7enxxh/Android-Inline-Hook

HOOK正在使用的接口,还是会CRASH

clarkehe opened this issue · 4 comments

HOOK了系统进程的一个接口,触发该接口频繁调用时HOOK, 会CRASH, 被HOOK的接口在子线程中被调用的。 测试机型Nexus 5 4.4系统。

有例子吗?

有,必现的。你QQ多少,我加下你。我的QQ 2711983007

已经解决,是程序逻辑上的问题。
当inlineHook返回时,子线程已经开始执行了,由于在inlineHook返回后才更新程序的返回地址(初始为空),子线程中会执行HOOK替换函数,HOOK替换函数会调用返回地址,返回地址没有更新,为NULL, 就CRASH了。

一定要将你本地保存的返回地址作为引用传给registerInlineHook(第三个参数),我是传了一局部变量,在inlineHook返回后,再将局部变量赋给本地保存地址的变量。

good job~