一些编译选项 一些选项会导致函数内插入一些汇编最近在写成员函数hook遇到内联汇编的一些问题
自动插入的code导致寄存器值变化,从而无法还原
push ebp
mov ebp, esp
//插入的汇编
局部变量/你的汇编
调试信息格式设置编辑并继续,插入如下代码
push ebx
push esi
push edi
程序数据库 (/Zi),插入如下代码
有一个局部变量时
push ecx 后再存储变量,使用这种方式创建一个堆栈空间
push offset __ehhandle
或者
push offset SEH_10001420
/sdl /gs
mov eax, ___security_cookie
mov eax, 0CCCCCCCCh
rep stosd
call j_@__CheckForDebuggerJustMyCode
新方式__declspec(naked) void HookProxy()
{
_asm
{
//方式1这补全缺失的代码
pushfd;
pushad;
call RealHook;
popad;
popfd;
//方式2缺失的代码
jmp jmpBackAddress;
}
}
完结


