我有一个test1.exe
使用示例库的示例程序test2.dll
。
test.dll
包含相同类型的A()
功能B()
。test1.exe
调用A
然后退出。
在这里,我找到了对A()
:
(http://i.stack.imgur.com/5W9Jd.jpg)的调用
现在,如果我没记错的话,我需要88FDFFFF
用正确的偏移量替换B()
,但是我如何计算它以便B()
调用它而不是A()
?
我有一个test1.exe
使用示例库的示例程序test2.dll
。
test.dll
包含相同类型的A()
功能B()
。test1.exe
调用A
然后退出。在这里,我找到了对A()
:
(http://i.stack.imgur.com/5W9Jd.jpg)的调用
现在,如果我没记错的话,我需要88FDFFFF
用正确的偏移量替换B()
,但是我如何计算它以便B()
调用它而不是A()
?
如果这是在 x86 调用相关指令中,则偏移值是通过从目标地址中减去调用之后的指令地址(= 调用指令位置 + 5 个字节)来计算的。因此,您需要将偏移量修补为地址(B)-地址(调用指令+5)。
如果b
在 test1.exe 中导入,则很容易,否则您必须使用 LoadLibrary 和 GetProcAddress。
按ctrl+N
一下看是否b
是进口的。
我建议先学习 asm 基础知识,然后使用 HIEW hexeditor/disassembler 来更改简单的代码。