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