只是为了好玩,我正在尝试制作一个简单的绕道库,通过修改类的 vtable 来绕道成员函数以创建绕道。我有一些奇怪的行为。这是整个程序(我使用的是 MSVC++ 2010):
fixed
它jmp
正确地指向新函数的地址,但在那之后它崩溃了。当我在 ollydbg 中查看它为什么会崩溃时,会发生一些非常奇怪的事情。它会直接走过一些指令而不做任何事情。我在调试器中看到 apush xxx
时,堆栈不会被修改。在我看到 aretn 4
的地方,事物将继续前进,进入函数之间的空间,充满int 3
s。有谁知道为什么会这样?
编辑:没关系,我找到了答案。