如何用逆向工程改变呼叫

我有一个使用示例库test2.dll的示例程序test2.dll

  • test.dll包含相同types的函数A()B()
  • test1.exe调用A然后退出。

在这里我find了对A()的调用: test.exe调用A的行 ( http://i.stack.imgur.com/5W9Jd.jpg )

现在,如果我没有弄错,我需要用正确的B()偏移量replace88FDFFFF ,但是我怎么计算它,以便调用B()而不是A()

如果在x86调用相关指令中,偏移值是通过从目标地址中减去调用之后的指令地址(=调用指令位置+ 5字节)来计算的。 所以,你需要补丁的偏移量是地址(B) – 地址(callinstruction + 5)。

如果b是在test1.exe中导入的,那么很容易,否则你必须使用LoadLibrary和GetProcAddress。

ctrl+N查看是否导入b

我建议先学习asm基础知识,并使用HIEW hexeditor / disassembler来改变简单的代码。