微软走弯路的事情发生了什么,它没有用

时间:2016-06-14 06:26:11

标签: c++ detours

此代码在几年前编译和工作。它不再起作用,而且我还在使用绕道v2.1,我只是将编译器从(我相信)VS 2010升级到现在(2013年和2015年)。

请注意,我在函数中间添加了一个钩子,而不是在开头。

这是过去工作时迂回做的事情:

 1. adds a jmp to address 0x1000 [previously this was a mov ebx, 5]
 2. mov eax, 1 // my code
 3. mov ebx, 5 
 4. jump back at address 0x1004

现在发生的事情是

 1. adds a jmp to address 0x1000, [ this still works]
 2. mov eax, 1 // my code
 3. jump back at address 0x1000
 4. **Infinite loop.**

钩:

void __declspec(naked) New_Fn()
{
    __asm MOV EAX, 1
    JMP MidFun
}

DetourAttach(&(PVOID&)MidFun, New_Fn);

有什么想法吗?

0 个答案:

没有答案