2012-05-20 53 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',則異常將進一步傳播,但如果這是最後一個過濾器,則程序將終止。 –