SEH鏈(structured exception handling) 是一種處理程式異常的機制,當程式異常 (例如除零異常,非法存取異常,等等) 發生的時候,系統便會把執行位置切換到thread 的 exception handler。
基本介紹
- 中文名:SEH鏈
- 外文名:Structured Exception Handling
- 別名:結構化異常處理
- 類別:處理程式
一些程式會透過 SetUnhandledExceptionFilter( ) 來設定 thread 的最高層異常處理 (代替 windows 提供的那一個錯誤信息),再製造異常,來達到擾亂調試的效果
一、SEH背景知識
SEH("Structured Exception Handling"),即結構化異常處理.是(windows)作業系統提供給程式設計者的強有力的處理程式錯誤或異常的武器.在VISUAL C++中你或許已經熟悉了_try{} _finally{} 和_try{} _except {} 結構,這些並不是編譯程式本身所固有的,本質上只不過是對windows內在提供的結構化異常處理的包裝,不用這些高級語言編譯器所提供的包裝 ,照樣可以利用系統提供的強大seh處理功能。使用windows的人對microsoft設計的非法操作對話框一定不會陌生,尤其是在9X下這表示發生了一個錯誤,如果是應用程式的錯誤,那么windows可能要關閉應用程式 ,如果是系統錯誤,你很可能不得不reset以重新啟動計算機.從程式編寫的角度來看,這種異常產生的原因很多,諸如堆疊溢出,非法指令,對windows保護記憶體的讀寫許可權不夠等等.幸運的是windows通過seh機制給了應用程式一個機會來修補錯誤,事實上windows內部也廣泛採用seh來除錯.