參加國際學(xué)術(shù)會(huì )議總結
20103rdInternationalConferenceonAdvancedComputerTheoryandEngineering(ICACTE2010)于2010年8月20日至2010年8月22日在四川成都的四川大學(xué)召開(kāi),本次會(huì )議由四川省計算機學(xué)會(huì )和IACSIT(InternationalAssociationofComputerScienceandInformationTechnology)聯(lián)合發(fā)起,由IEEE、四川大學(xué),電子科技大學(xué),西南交通大學(xué),西南民族大學(xué)提供技術(shù)協(xié)助。會(huì )議旨在為科研工作者和工程技術(shù)人員提供一個(gè)報道先進(jìn)研究成果、交流學(xué)科前沿動(dòng)態(tài)的平臺。
會(huì )議吸引了來(lái)自亞洲、非洲、北美、歐洲等20余個(gè)國家和地區的百余位專(zhuān)家、學(xué)者的參加,會(huì )議內容涉及本領(lǐng)域國際最新研究動(dòng)態(tài)及前沿工作,反映了未來(lái)發(fā)展方向。會(huì )上與國際知名學(xué)者交流,感受了國內、國際權威學(xué)者的敏銳思維、學(xué)習專(zhuān)家解決難題的靈活方式、感覺(jué)受益匪淺。
大會(huì )共有600余篇poster展出,本人的第一作者論文“ApplicationofStructuredExceptionHandlinginSoftwareAnti-debugging”被本次大會(huì )安排為會(huì )議首日第一個(gè)分會(huì )場(chǎng)的第一個(gè)口頭宣讀,充分體現了大會(huì )對本論文的重視,作為本次大會(huì )第一個(gè)宣讀的論文,本論文也得到了分會(huì )場(chǎng)主席和與會(huì )專(zhuān)家和學(xué)者的普遍好評并得到很多有益的建議,可謂收獲頗豐。具體內容是:
隨著(zhù)軟件產(chǎn)業(yè)的快速發(fā)展,以反跟蹤技術(shù)為核心的軟件安全已經(jīng)成為一個(gè)重要的課題。在與軟件解密做著(zhù)不懈斗爭的同時(shí),軟件從業(yè)人員不斷發(fā)現新的軟件反跟蹤策略,提出新的軟件保護方案,增強了軟件的安全性。
結構化異常處理,是操作系統提供的用于解決系統軟硬件異常的一種機制,在程序設計中的合理使用可以提高軟件的穩定性、容錯性。本文著(zhù)重探討了其在軟件反跟蹤中的應用。
應用程序正常執行中出現異常時(shí),操作系統將收集異常發(fā)生的原因、類(lèi)型、位置等信息,填寫(xiě)相關(guān)的數據結構,并從用戶(hù)程序轉到系統級執行,將控制權交給系統的異常調度函數。該函數將根據系統收集的異常信息選擇一個(gè)異常處理例程處理異常。用戶(hù)可定義的異常處理例程分為兩種;一種是線(xiàn)程相關(guān)的,一種是進(jìn)程相關(guān)的:線(xiàn)程相關(guān)的異常處理例程,監視某線(xiàn)程中某段代碼是否發(fā)生異常,由于線(xiàn)程是程序執行的最小單位,所以把異常解決于線(xiàn)程的內部,可以避免該異常對其它線(xiàn)程的干擾,保證程序的`穩定運行。進(jìn)程相關(guān)的異常處理例程:也稱(chēng)為篩選器,監視進(jìn)程中所有線(xiàn)程發(fā)生的異常,做進(jìn)程退出前的清理工作。
異常處理流程是指運行在win32系統中的程序通常包含多個(gè)線(xiàn)程,而每個(gè)線(xiàn)程都會(huì )安裝各自的異常處理例程;除此之外,程序中可能存在一個(gè)全局性的異常處理例程;再者,如果進(jìn)程被調試的話(huà),調試進(jìn)程也相當于一個(gè)異常處理例程。當異常發(fā)生時(shí),系統將根據異常類(lèi)型選擇一個(gè)異常處理例程來(lái)處理異常,正常情況下,系統進(jìn)行異常處理的流程為:
系統首先判斷異常是否應發(fā)送給目標程序的異常處理例程。如果應該發(fā)送,并且目標程序正在被調試.則系統掛起程序;如果程序沒(méi)有被調試或者調試器未能處理異常,系統繼續查找是否安裝了線(xiàn)程相關(guān)的異常處理例程。如果已經(jīng)安裝,系統就把異常發(fā)送給SEH處理例程。每個(gè)線(xiàn)程相關(guān)的異常處理例程可以處理或者不處理這個(gè)異常,如果它不處理并且安裝了多個(gè)線(xiàn)程相關(guān)的異常處理例程可交由鏈起來(lái)的其他例程處理;如果這些SEH處理例程均不處理異常,且程序處于被調試狀態(tài),操作系統會(huì )再次通知調試器;如果程序未處于被調試狀態(tài)或者調試器沒(méi)有能夠處理,并且程序調用SetUnhandledExceptionFilter函數安裝了進(jìn)程相關(guān)的異常處理例程的話(huà),系統轉向對它的調用;如果沒(méi)有安裝進(jìn)程相關(guān)的異常處理例程或者它沒(méi)有處理這個(gè)異常,系統會(huì )調用默認的異常處理例程,通常顯示一個(gè)對話(huà)框,用戶(hù)可以選擇“關(guān)閉”或者可以將程序附加到調試器的“調試”按鈕。如果沒(méi)有可以附加的調試器或調試器也不處理,系統就對線(xiàn)程異常處理句柄進(jìn)行展開(kāi)做最后的清理工作,最終調用ExitProcess終結程序。通過(guò)對系統異常處理流程分析可知,當應用程序執行過(guò)程中發(fā)生異常時(shí),系統可在三個(gè)層次上完成異常處理:調試器、進(jìn)程、線(xiàn)程。線(xiàn)程層次的異常處理即SEH,能夠準確定位異常的信息,更加靈活、隱蔽的實(shí)現反跟蹤的功能,是本文研究的主要方面。下面深入分析SEH的工作原理。
系統級處理機制,SEH作為系統內部處理異常的一種機制,其工作主要在系統級完成,因此掌握系統內部異常處理的工作原理是研究基于SEH的軟件反跟蹤的關(guān)鍵。下面圍繞異常處理例程深入分析系統級異常處理機制。異常發(fā)生時(shí),系統執行KiUserExceptionDispatcher函數并調用RtlDispatchException啟動(dòng)對注冊的異常處理例程的查找。如果找到的處理例程處理了異常并繼續執行,則對RtlDispatchException的調用不再返回。否則,有兩種可能:調用NtContinue使程序繼續或產(chǎn)生另一個(gè)異常。若是后者,異常不再繼續,進(jìn)程必須終止。
RtlDispatchException函數遍歷異常幀,利用獲得的指向EXCEPTION_REGISTRATIONS鏈表的指針遍歷每一個(gè)節點(diǎn)查找異常處理例程,并通過(guò)RtlpExecuteHandlerForException完成異常處理例程的調用,根據RtlpExecuteHandlerForException的反饋信息,RtlDispatchException或者繼續遍歷異常幀,或者產(chǎn)生另一個(gè)異常,最終將控制送至ExecuteHandler函數,由該函數通過(guò)EXCEPTION_REGISTRATION的handler域調用異常處理例程,對程序執行中產(chǎn)生的異常進(jìn)行處理。
SEH在軟件反跟蹤中的主要應用方式是調試工具的檢測、硬件斷點(diǎn)的去除、改變程序執行順序等,但這些反跟蹤技術(shù)相對比較成熟,很容易被破解者發(fā)現并成功破解。本文所介紹的是一種更加隱蔽,效果更好的反跟蹤方式:?jiǎn)尾疆惓?抽取代碼法。
在程序的正常執行序列中設置功能請求標志位,之后觸發(fā)單步異常,進(jìn)入異常處理例程后根據標志位完成所抽取的相應的功能,繼續程序的運行。這樣,如果破解者不能發(fā)現異常處理例程的存在,將無(wú)法實(shí)現該功能。這是因為異常發(fā)生后,調試器接管了異常,而不會(huì )去調用作者安裝的實(shí)現具體功能的異常處理例程,從而達到反跟蹤的目的。
利用單步異常實(shí)現反跟蹤的具體過(guò)程是安裝異常處理例程,在程序開(kāi)始處將異常處理函數地址放入EXCEPTION_REGISTRATION結構的handler域中,一旦執行過(guò)程中有異常發(fā)生系統就通過(guò)handler域的地址調用異常處理函數,完成相關(guān)的異常處理,正常執行代碼,安裝完異常處理例程,其后是程序功能代碼,在這里設置標志以便異常函數作不同的處理。插入單步異常指令,此處是關(guān)鍵的地方,因為程序的反調試功能通過(guò)它來(lái)實(shí)現。當程序執行到這里時(shí),根據是否處于調試狀態(tài)有兩條執行路徑,一條是處于調試狀態(tài),這時(shí)調試器接收異常信息,并進(jìn)行相關(guān)的處理,這樣將有部分程序代碼得不到執行而使程序出現錯誤;另一條執行路徑是不處于調試狀態(tài)下,程序本身將通過(guò)異常處理函數來(lái)處理異常,這樣程序中部分被抽取的代碼將得到執行,程序不出現錯誤,且功能可以實(shí)現。清除異常處理例程,程序執行完功能代碼后,要把開(kāi)始時(shí)安裝的異常處理例程去除,否則容易引起系統錯誤。清除的方法是:用出棧指令將EXCEPTION_REGISTRATION結構的prev與和handler域彈出即可。
這次參加ICACTE國際會(huì )議,通過(guò)和與會(huì )學(xué)者的交流、探討,我覺(jué)得自己的收獲主要在以下方面:
(1)對自己專(zhuān)業(yè)的新動(dòng)態(tài)有了一定的把握,對本行業(yè)內的其他專(zhuān)業(yè)方向有了一定的了解;
(2)發(fā)現了自己在學(xué)術(shù)上存在的問(wèn)題,這有助于以后的改進(jìn)和提高;
(3)結識了一些日本、韓國、臺灣等地高校和公司的教授、研發(fā)人員和學(xué)生,為以后更廣泛的交流打下了基礎;
(4)發(fā)現了自己英語(yǔ)水平的不足,這將促使我更加努力地掌握英語(yǔ),尤其是提高口語(yǔ)水平。
總體上,這次國際會(huì )議讓我學(xué)到了很多東西,雖然只有短短三天,但我感覺(jué)收獲頗多,聽(tīng)到了許多新思想,結識了許多新朋友,拓寬了視野,增長(cháng)了知識,結識了軟件安全研究領(lǐng)域的多名學(xué)者,更加明確了今后的研究方向,相信對個(gè)人今后的學(xué)術(shù)研究有很大的促進(jìn)。非常感謝我校研究生院給予的此項支持,鼓勵研究生參加國際會(huì )議是符合建設國際型大學(xué)的潮流之舉。作為研究生,我們應該認識并珍惜學(xué)校提供的學(xué)術(shù)科研和培養的機會(huì )和條件,積極思考,廣泛交流,用優(yōu)秀的科研成績(jì)回報學(xué)校。
【參加國際學(xué)術(shù)會(huì )議總結】相關(guān)文章:
外出參加學(xué)術(shù)會(huì )議總結報告11-16
國際檔案日宣傳總結06-21
教師參加國培學(xué)習總結01-05
國際禁毒日宣傳總結06-07
國際助殘日活動(dòng)總結05-19
參加青干班培訓的學(xué)習總結03-09
教師參加國培的學(xué)習總結01-05