如何使用int3(VEH或SEH)

时间:2012-04-26 03:44:57

标签: windows assembly x86 seh

知道我想用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这样做,但我无法弄清楚如何制作它。

1 个答案:

答案 0 :(得分:1)

您需要在另一个内存位置编写原始代码(您引用的代码)(只需分配一些内容)。

在为其他OpCode(您的自定义新代码)保存一些空间的同时编写它。 它不必完全适合您允许用NOP填充未使用的字节(如果我没有弄错的话,则为0x90)。

现在,从原始代码跳转到此代码。

几年前,当我在制作游戏培训师时,我一直在做这些事情。效果非常好。

注意事项:最后,您的reWritten代码应跳回到原始位置以继续代码流。

如果不清楚,请告诉我。