假设我已经分配了放置我的 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()
.
任何帮助将不胜感激!
提前致谢。