我试图通过将JMP指令替换为函数的开头来钩住函数,该指令应指向我的函数。但是问题是我不知道如何计算JMP偏移量以目标函数的地址为目标。好吧,我知道如果您在内存中向前跳转(目标地址-当前地址),该怎么做,但是当您在内存中跳转时,我没有任何如何确定它的想法。
有人可以帮忙吗?
最佳答案
只需使用负偏移即可向后跳。
请记住要考虑JMP
指令的大小。偏移量是相对于JMP
指令的结尾而不是开头的。如果当前地址是您要写入JMP
的位置,则需要5 + dest-current的补偿,因为JMP
指令的大小加上5字节的偏移量。
关于assembly - 计算JMP指令的地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7609549/