假设我已经分配了放置我的 codecave 的地址VirtualAllocEx(它返回地址),并且我使用WriteProcessMemory().
这是问题:
我如何写一个跳转到我的codecave?我知道跳转以“ E9”开头,但是如何将返回的地址转换VirtualAllocEx为正确的 UInt32(dword),以便调试器/编译器理解指令?
例如:
我在地址00402020(本机应用程序的 OEP)。我写了一个跳转到004028CF(空白处)“ JMP 004028CF”。以字节为单位的指令如下所示:
CPU Disasm
Address Hex dump Command Comments
00402020 E9 AA080000 JMP 004028CF
“ E9”是我们表示 JMP 的方式。那么“ AA080000”呢,我如何生成这个?
我需要做一些类似的事情,这样我就可以将 JMP 初始化到我的 codecave,它将位于由VirtualAllocEx().
任何帮助将不胜感激!
提前致谢。