設定異常捕獲函式.
當異常沒有處理的時候,系統就會調用SetUnhandledExceptionFilter所設定異常處理函式.
例如一些程式在出錯的時候,會向用戶報告說程式那出錯就是利用這個.例如QQ..
異常處理中的一部分
當發生異常時,比如記憶體訪問違例時,CPU硬體會發現此問題,並產生一個異常(你可以把它理解為中斷)
然後CPU會把代碼流程切換到異常處理服務例程。作業系統異常處理服務例程會查看當前進程是否處於調試狀態
如果是,則通知調試器發生了異常,如果不是則作業系統會查看當前執行緒是否安裝了的異常幀鏈(FS[0]),如果安裝了SEH(try.... catch....),則調用SEH,並根據返回結果決定是否全局展開或局部展開。如果異常鏈中所有的SEH都沒有處理此異常,而且此進程還處於調試狀態,則作業系統會再次通知調試器發生異常(二次異常)。如果還沒人處理,則調用作業系統的默認異常處理代碼UnhandledExceptionHandler,不過作業系統允許你Hook這個函式,就是通過SetUnhandledExceptionFilter函式來設定。大部分異常通過此種方法都能捕獲,不過棧溢出、覆蓋的有可能捕獲不到。
大部分保護殼都採用異常處理技術,跳出正常的代碼指令流程,來迷惑Cracker。