我有这个程序,我正在尝试逆向工程。我不知道是编译器的优化器还是混淆器,但是现在调用其他函数的代码的某些部分是通过数学计算然后调用的,例如
CALL EAX
它可以正常工作,直到它作为 DLL 加载到另一个程序中。基地址偏移量已更改,因此现在所有相关代码都可以正常工作,但所有数学计算的调用/jmps 都没有转到正确的区域。
所以我想我可以通过将所有绝对调用变成相对调用来轻松解决这个问题。
在单步执行代码并计算所有数学时,我得到了正确的 jmp/call 偏移量。
我没有像没有足够的空间来分配补丁这样的问题。由于绝对调用通常使用之前的行,我也可以使用它来修复问题
绝对调用,这是数学结束的地方:
seg000:0044F7D1 add eax, 3B882683h
seg000:0044F7D6 call eax
转换为喜欢
seg000:0044F7D1 call 3B882683h
好吧,上面当然不会工作,因为 eax 已经是什么了,但这只是一个伪代码示例
好吧,我的问题不是如何做到这一点,而是在 OllyDbg 或 IDA Pro 中是否有任何插件可以自动为我做到这一点?