2012-05-20 144 views
3
LONG WINAPI MyUnhandledExceptionFilter(PEXCEPTION_POINTERS p) 
{ 

    if(p->ExceptionRecord->ExceptionCode==EXCEPTION_ACCESS_VIOLATION){ 
     if(p->ContextRecord->Eip==6F3A15FD){ 
      p->ContextRecord->EFlags 
     } 

我希望我的异常处理程序设置零标志,如果在异常指定的地址发生;) 怎么做呢?p->ContextRecord->EFlags|=如何设置零标志

另外,如果我只是给EXCEPTION_CONTINUE_EXECUTION访问冲突后它会工作吗? :D,我是否必须加入EIP,否则会落在下一条指令上?

+3

将会有一段时间,程序员会被送进监狱去做(或者只是试图做)这样的事情。 – 6502

+0

哦真的吗?那么请翻转整个魔兽争霸III,给我的源代码和修复错误。错误之后的行是'jz',因此它是一种破解,但不是浪费5周,试图修复它,浪费5分钟 – n00b

+0

@ 6502:我想你已经忘记了包含笑脸。 –

回答

5

ZFEFLAGS第6位,所以EFlags |= 1 << 6;

下载英特尔或AMD的CPU手册。你会在那里找到所有这些信息。

+0

,它会继续下一条指令吗?或者重复那个; F – n00b

+1

如果你的过滤器返回'EXCEPTION_CONTINUE_EXECUTION',那么将会重复出错的指令。如果它返回'EXCEPTION_CONTINUE_SEARCH',则异常将进一步传播,但如果这是最后一个过滤器,则程序将终止。 –