此代码在几年前编译和工作。它不再起作用,而且我还在使用绕道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);
有什么想法吗?