给一个非法的内存地址0xACCD1960,用下面两种方式为其赋值,第一种可以捕获,第二种不能捕获,试了好几遍都是这个结果,
求大神大拿指点迷津
void main()
{
int getErro = 0;
_asm
push offset ERRO_HANDLE;
push fs:[0];
mov fs:[0],esp;
////1.用eax 赋值 可以捕获
//mov eax,0xACCD1960;
//mov [eax],0x1234;
////2.用esp的方式不能捕获
mov eax,0xACCD1960;
mov esp,eax;
push 0x1234;
mov getErro,0;
pop fs:[0];
add esp,4;
jmp end_Nop
ERRO_HANDLE:
mov getErro,1;
mov eax,1;
//ret
end_Nop:
nop
}
if(getErro)
printf("error");
else
printf("ok");
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
X86用户层异常处理依赖堆栈的