Tesla.Angela 发表于 2012-7-5 09:43:45

[讨论]用__try......__except()捕捉执行异常

用__try......__except()捕捉RING3的执行异常是可以的:
void CatchExectionException()
{
        typedef void (*TESTFUNC)(void);
        TESTFUNC TestFunc;
        ULONG xx=0xc3909090,zz;
        TestFunc=(TESTFUNC)(&xx);
        VirtualProtect(&xx,4,PAGE_EXECUTE_READWRITE,&zz);//这句很重要
        __try
        {
                TestFunc();
        }
        __except(EXCEPTION_EXECUTE_HANDLER)        //出错就会执行到这里
        {
                MessageBoxA(0,"fuck",0,0);
        }
}
如果不加VirtualProtect,无论是X86,还是X64,都会弹出"fuck"对话框,如果加了则不弹出。
但是,如果把这段代码移植到RING0,当执行到没有可执行属性的内存时,会马上蓝屏。
求助:如何捕捉RING0下的执行异常(判断内核内存有没有可执行属性)?

Tesla.Angela 发表于 2012-7-10 13:33:02

sb666 发表于 2012-7-10 11:31 static/image/common/back.gif
我估计只能一个一个试了……蓝了就再换……

你脑部残疾了么???{:soso_e141:}

watchsky 发表于 2012-7-10 17:28:57

依然使用__try......__except()

Tesla.Angela 发表于 2012-7-11 12:49:45

watchsky 发表于 2012-7-10 17:28 static/image/common/back.gif
依然使用__try......__except()

我试过,会蓝屏。
要不你放一个带SRC的DEMO上来看看。

watchsky 发表于 2012-7-11 13:08:43

Tesla.Angela 发表于 2012-7-11 12:49 static/image/common/back.gif
我试过,会蓝屏。
要不你放一个带SRC的DEMO上来看看。

src找不到了,记得AK922里用到过,x86的驱动应该没问题

kk1025 发表于 2013-4-8 20:37:11

看看
页: [1]
查看完整版本: [讨论]用__try......__except()捕捉执行异常