我有一个使用示例库test2.dll
的示例程序test2.dll
。
test.dll
包含相同types的函数A()
和B()
。 test1.exe
调用A
然后退出。 在这里我find了对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来改变简单的代码。