知道我想用function prologue
替换jmp
以跳转到我的分配区域(VirtualAllocateEx)。但是function prologue
只有3个字节,jmp
有5个字节。
像这样:
55 `push ebp`
8B EC `mov ebp, esp`
833D C4354200 02 `cmp dword ptr ds:[4235C4],2`
E9 AD00000000 `jmp` 00140000 // replace above three instructions
如果我想使用jmp来覆盖函数序言,则必须涵盖函数序言之后的第三条指令。
所以我知道我想使用int3替换函数序言来跳转到我的分配区域或任何地址,我该怎么办?
我尝试使用VEH或SEH这样做,但我无法弄清楚如何制作它。
答案 0 :(得分:1)
您需要在另一个内存位置编写原始代码(您引用的代码)(只需分配一些内容)。
在为其他OpCode(您的自定义新代码)保存一些空间的同时编写它。 它不必完全适合您允许用NOP填充未使用的字节(如果我没有弄错的话,则为0x90)。
现在,从原始代码跳转到此代码。
几年前,当我在制作游戏培训师时,我一直在做这些事情。效果非常好。
注意事项:最后,您的reWritten代码应跳回到原始位置以继续代码流。
如果不清楚,请告诉我。