HOOK正在使用的接口,还是会CRASH
clarkehe opened this issue · 4 comments
clarkehe commented
HOOK了系统进程的一个接口,触发该接口频繁调用时HOOK, 会CRASH, 被HOOK的接口在子线程中被调用的。 测试机型Nexus 5 4.4系统。
ele7enxxh commented
有例子吗?
clarkehe commented
有,必现的。你QQ多少,我加下你。我的QQ 2711983007
clarkehe commented
已经解决,是程序逻辑上的问题。
当inlineHook返回时,子线程已经开始执行了,由于在inlineHook返回后才更新程序的返回地址(初始为空),子线程中会执行HOOK替换函数,HOOK替换函数会调用返回地址,返回地址没有更新,为NULL, 就CRASH了。
一定要将你本地保存的返回地址作为引用传给registerInlineHook(第三个参数),我是传了一局部变量,在inlineHook返回后,再将局部变量赋给本地保存地址的变量。
ele7enxxh commented
good job~