我有一个(所谓的)函数有多个入口点,但只有一个ret
.
我试图了解如何向函数添加钩子。
我面临的主要问题是放在这个函数之后的代码——它可以随时执行,所以我需要确保它不会使程序崩溃。
我的想法是用ret
指令替换nop
指令,然后跳转到我的钩子。在这一点上,我将检查返回地址是否与对所述函数的调用匹配,或者与ret
.
我对此并不满意,因为我无法确定后面的代码ret
是函数的序言——它可能是任何代码,而且我不知道此时堆栈会如何——这意味着可能是被推入它匹配对我试图挂钩的函数的调用。
这里有人有更好的主意吗?
编辑:忘了提到我不能添加超过 2 次跳跃。