阅读:3405回复:2
关于:ProbeForRead
水平太采,请大家见量。
我要在内核层读取 应用层进程空间的内存。 在读取前我用ProbeForRead 检查内存是否可读, 可是在调这个方法时就直接产生了异常! 而我的try catch并没有能捕获这个异常... __try { ProbeForRead ( pos, 100, 100); //<<直接在这里发生异常,而我的代码并没捕获到 for ( ii = 0; ii < 100; ii++ ) { pos[ii]; ... } } __except (EXCEPTION_EXECUTE_HANDLER) { DbgPrint("Exception"); } 还有,我是用windbg在调试状态下走这段代码的,异常直接被windbg捕获,并没有进入我的__except() 这是什么原因? 应该用什么方法来判断用户空间的代码是否可读? |
|
沙发#
发布于:2008-10-29 13:07
对齐有问题,一般为1,2,4,8,16,不然会进入 ExRaiseDatatypeMisalignment,自己反汇编看下,很简单。
|
|
|
板凳#
发布于:2008-10-29 13:38
引用第1楼wowocock于2008-10-29 13:07发表的 : 多谢大牛指导啊,我试试去... |
|