freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

參加英國國際學術會議有感——陳莉(編輯修改稿)

2024-10-08 22:37 本頁面
 

【文章內容簡介】 系統(tǒng)軟硬件異常的一種機制,在程序設計中的合理使用可以提高軟件的穩(wěn)定性、容錯性。本文著重探討了其在軟件反跟蹤中的應用。應用程序正常執(zhí)行中出現(xiàn)異常時, 操作系統(tǒng)將收集異常發(fā)生的原因、類型、位置等信息,填寫相關的數(shù)據(jù)結構,并從用戶程序轉到系統(tǒng)級執(zhí)行,將控制權交給系統(tǒng)的異常調度函數(shù)。該函數(shù)將根據(jù)系統(tǒng)收集的異常信息選擇一個異常處理例程處理異常。用戶可定義的異常處理例程分為兩種;一種是線程相關的,一種是進程相關的:線程相關的異常處理例程,監(jiān)視某線程中某段代碼是否發(fā)生異常,由于線程是程序執(zhí)行的最小單位,所以把異常解決于線程的內部,可以避免該異常對其它線程的干擾,保證程序的穩(wěn)定運行。進程相關的異常處理例程:也稱為篩選器,監(jiān)視進程中所有線程發(fā)生的異常,做進程退出前的清理工作。異常處理流程是指運行在win32系統(tǒng)中的程序通常包含多個線程,而每個線程都會安裝各自的異常處理例程;除此之外,程序中可能存在一個全局性的異常處理例程;再者,如果進程被調試的話,調試進程也相當于一個異常處理例程。當異常發(fā)生時,系統(tǒng)將根據(jù)異常類型選擇一個異常處理例程來處理異常,正常情況下,系統(tǒng)進行異常處理的流程為:系統(tǒng)首先判斷異常是否應發(fā)送給目標程序的異常處理例程。如果應該發(fā)送,并且目標程序正在被調試.則系統(tǒng)掛起程序;如果程序沒有被調試或者調試器未能處理異常,系統(tǒng)繼續(xù)查找是否安裝了線程相關的異常處理例程。如果已經(jīng)安裝,系統(tǒng)就把異常發(fā)送給SEH處理例程。每個線程相關的異常處理例程可以處理或者不處理這個異常,如果它不處理并且安裝了多個線程相關的異常處理例程可交由鏈起來的其他例程處理;如果這些SEH處理例程均不處理異常,且程序處于被調試狀態(tài),操作系統(tǒng)會再次通知調試器;如果程序未處于被調試狀態(tài)或者調試器沒有能夠處理,并且程序調用SetUnhandledExceptionFilter函數(shù)安裝了進程相關的異常處理例程的話,系統(tǒng)轉向對它的調用;如果沒有安裝進程相關的異常處理例程或者它沒有處理這個異常,系統(tǒng)會調用默認的異常處理例程,通常顯示一個對話框,用戶可以選擇“關閉”或者可以將程序附加到調試器的“調試”按鈕。如果沒有可以附加的調試器或調試器也不處理,系統(tǒng)就對線程異常處理句柄進行展開做最后的清理工作,最終調用ExitProcess終結程序。通過對系統(tǒng)異常處理流程分析可知,當應用程序執(zhí)行過程中發(fā)生異常時,系統(tǒng)可在三個層次上完成異常處理:調試器、進程、線程。線程層次的異常處理即SEH,能夠準確定位異常的信息,更加靈活、隱蔽的實現(xiàn)反跟蹤的功能,是本文研究的主要方面。下面深入分析SEH的工作原理。系統(tǒng)級處理機制,SEH作為系統(tǒng)內部處理異常的一種機制,其工作主要在系統(tǒng)級完成,因此掌握系統(tǒng)內部異常處理的工作原理是研究基于SEH的軟件反跟蹤的關鍵。下面圍繞異常處理例程深入分析系統(tǒng)級異常處理機制。異常發(fā)生時,系統(tǒng)執(zhí)行KiUserExceptionDispatcher函數(shù)并調用RtlDispatchException啟動對注冊的異常處理例程的查找。如果找到的處理例程處理了異常并繼續(xù)執(zhí)行,則對RtlDispatchException 的調用不再返回。否則,有兩種可能:調用 NtContinue使程序繼續(xù)或產(chǎn)生另一個異常。若是后者,異常不再繼續(xù),進程必須終止。RtlDispatchException函數(shù)遍歷異常幀,利用獲得的指向 EXCEPTION_REGISTRATIONS鏈表的指針遍歷每一個節(jié)點查找異常處理例程,并通過 RtlpExecuteHandlerForException 完成異常處理例程的調用,根據(jù)RtlpExecuteHandlerForException 的反饋信息,RtlDispatchException或者繼續(xù)遍歷異常幀,或者產(chǎn)生另一個異常,最終將控制送至ExecuteHandler函數(shù),由該函數(shù)通過 EXCEPTION_REGISTRATION 的 handler 域調用異常處理例程,對程序執(zhí)行中產(chǎn)生的異常進行處理。SEH在軟件反跟蹤中的主要應用方式是調試工具的檢測、硬件斷點的去除、改變程序執(zhí)行順序等,但這些反跟蹤技術相對比較成熟,很容易被破解者發(fā)現(xiàn)并成功破解。本文所介紹的是一種更加隱蔽,效果更好的反跟蹤方式:單步異常抽取代碼法。在程序的正常執(zhí)行序列中設置功能請求標志位,之后觸發(fā)單步異常,進入異常處理例程后根據(jù)標志位完成所抽取的相應的功能,繼續(xù)程序的運行。這樣,如果破解者不能發(fā)現(xiàn)異常處理例程的存在,將無法實現(xiàn)該功能。這是因為異常發(fā)生后,調試器接管了異常,而不會去調用作者安裝的實現(xiàn)具體功能的異常處理例程,從而達到反跟蹤的目的。利用單步異常實現(xiàn)反跟蹤的具體過程是安裝異常處理例程,在程序開始處將異常處理函數(shù)地址放入EXCEPTION_REGISTRATION結構的handler域中,一旦執(zhí)行過程中有異常發(fā)生系統(tǒng)就通過handler域的地址調用異常處理函數(shù),完成相關的異常處理,正常執(zhí)行代碼,安裝完異常處理例程,其后是程序功能代碼,在這里設置標志以便異常函數(shù)作不同的處理。插入單步異常指令,此處是關鍵的地方,因為程序的反調試功能通過它來實現(xiàn)。當程序執(zhí)行到這里時,根據(jù)是否處于調試狀態(tài)有兩條執(zhí)行路徑,一條是處于調試狀態(tài),這時調試器接收異常信息,并進行相關的處理,這樣將有部分程序代碼得不到執(zhí)行而使程序出現(xiàn)錯誤;另一條執(zhí)行路徑是不處于調試狀態(tài)下,程序本身將通過異常處理函數(shù)來處理異常,這樣程序中部分被抽取的代碼將得到執(zhí)行,程序不出現(xiàn)錯誤,且功能可以實現(xiàn)。清除異常處理例程,程序執(zhí)行完功能代碼后,要把開始時安裝的異常處理例程去除,否則容易引起系統(tǒng)錯誤。清除的方法是:用出棧指令將EXCEPTION_REGISTRATION結構的prev與和handler域彈出即可。這次參加ICACTE國際會議,通過和與會學者的交流、探討,我覺得自己的收獲主要在以
點擊復制文檔內容
合同協(xié)議相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1