如何使用逆向工程更改呼叫

时间:2012-12-02 20:28:43

标签: windows dll assembly reverse-engineering ollydbg

我有一个示例程序test1.exe,它使用示例库test2.dll

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

我在这里找到了A()的来电: The line which test.exe calls Ahttp://i.stack.imgur.com/5W9Jd.jpg

现在,如果我没有弄错,我需要将88FDFFFF替换为B()的正确偏移量,但我如何计算它以便调用B()而不是A() {{1}}?

3 个答案:

答案 0 :(得分:2)

如果在x86调用相关指令中,则通过从目标地址减去调用后的指令地址(=调用指令位置+5个字节)来计算偏移值。因此,您需要将偏移量修补为地址(B)-address(callinstruction + 5)。

答案 1 :(得分:0)

如果在test1.exe中导入b,则很容易使用LoadLibrary和GetProcAddress。

ctrl+N查看是否已导入b

答案 2 :(得分:-1)

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