當前位置:文書都 >

事務文書 >會議總結 >

參加國際學術會議總結

參加國際學術會議總結

20103rdInternationalConferenceonAdvancedComputerTheoryandEngineering(ICACTE2010)於2010年8月20日至2010年8月22日在四川成都的四川大學召開,本次會議由四川省計算機學會和IACSIT(InternationalAssociationofComputerScienceandInformationTechnology)聯合發起,由IEEE、四川大學,電子科技大學,西南交通大學,西南民族大學提供技術協助。會議旨在為科研工作者和工程技術人員提供一個報道先進研究成果、交流學科前沿動態的平台。

參加國際學術會議總結

會議吸引了來自亞洲、非洲、北美、歐洲等20餘個國家和地區的百餘位專家、學者的參加,會議內容涉及本領域國際最新研究動態及前沿工作,反映了未來發展方向。會上與國際知名學者交流,感受了國內、國際權威學者的敏鋭思維、學習專家解決難題的靈活方式、感覺受益匪淺。

大會共有600餘篇poster展出,本人的第一作者論文“ApplicationofStructuredExceptionHandlinginSoftwareAnti-debugging”被本次大會安排為會議首日第一個分會場的第一個口頭宣讀,充分體現了大會對本論文的重視,作為本次大會第一個宣讀的論文,本論文也得到了分會場主席和與會專家和學者的普遍好評並得到很多有益的建議,可謂收穫頗豐。具體內容是:

隨着軟件產業的快速發展,以反跟蹤技術為核心的軟件安全已經成為一個重要的課題。在與軟件解密做着不懈鬥爭的同時,軟件從業人員不斷髮現新的軟件反跟蹤策略,提出新的軟件保護方案,增強了軟件的安全性。

結構化異常處理,是操作系統提供的用於解決系統軟硬件異常的一種機制,在程序設計中的合理使用可以提高軟件的穩定性、容錯性。本文着重探討了其在軟件反跟蹤中的應用。

應用程序正常執行中出現異常時,操作系統將收集異常發生的原因、類型、位置等信息,填寫相關的數據結構,並從用户程序轉到系統級執行,將控制權交給系統的異常調度函數。該函數將根據系統收集的異常信息選擇一個異常處理例程處理異常。用户可定義的異常處理例程分為兩種;一種是線程相關的,一種是進程相關的:線程相關的異常處理例程,監視某線程中某段代碼是否發生異常,由於線程是程序執行的最小單位,所以把異常解決於線程的內部,可以避免該異常對其它線程的干擾,保證程序的`穩定運行。進程相關的異常處理例程:也稱為篩選器,監視進程中所有線程發生的異常,做進程退出前的清理工作。

異常處理流程是指運行在win32系統中的程序通常包含多個線程,而每個線程都會安裝各自的異常處理例程;除此之外,程序中可能存在一個全局性的異常處理例程;再者,如果進程被調試的話,調試進程也相當於一個異常處理例程。當異常發生時,系統將根據異常類型選擇一個異常處理例程來處理異常,正常情況下,系統進行異常處理的流程為:

系統首先判斷異常是否應發送給目標程序的異常處理例程。如果應該發送,並且目標程序正在被調試.則系統掛起程序;如果程序沒有被調試或者調試器未能處理異常,系統繼續查找是否安裝了線程相關的異常處理例程。如果已經安裝,系統就把異常發送給SEH處理例程。每個線程相關的異常處理例程可以處理或者不處理這個異常,如果它不處理並且安裝了多個線程相關的異常處理例程可交由鏈起來的其他例程處理;如果這些SEH處理例程均不處理異常,且程序處於被調試狀態,操作系統會再次通知調試器;如果程序未處於被調試狀態或者調試器沒有能夠處理,並且程序調用SetUnhandledExceptionFilter函數安裝了進程相關的異常處理例程的話,系統轉向對它的調用;如果沒有安裝進程相關的異常處理例程或者它沒有處理這個異常,系統會調用默認的異常處理例程,通常顯示一個對話框,用户可以選擇“關閉”或者可以將程序附加到調試器的“調試”按鈕。如果沒有可以附加的調試器或調試器也不處理,系統就對線程異常處理句柄進行展開做最後的清理工作,最終調用ExitProcess終結程序。通過對系統異常處理流程分析可知,當應用程序執行過程中發生異常時,系統可在三個層次上完成異常處理:調試器、進程、線程。線程層次的異常處理即SEH,能夠準確定位異常的信息,更加靈活、隱蔽的實現反跟蹤的功能,是本文研究的主要方面。下面深入分析SEH的工作原理。

系統級處理機制,SEH作為系統內部處理異常的一種機制,其工作主要在系統級完成,因此掌握系統內部異常處理的工作原理是研究基於SEH的軟件反跟蹤的關鍵。下面圍繞異常處理例程深入分析系統級異常處理機制。異常發生時,系統執行KiUserExceptionDispatcher函數並調用RtlDispatchException啟動對註冊的異常處理例程的查找。如果找到的處理例程處理了異常並繼續執行,則對RtlDispatchException的調用不再返回。否則,有兩種可能:調用NtContinue使程序繼續或產生另一個異常。若是後者,異常不再繼續,進程必須終止。

RtlDispatchException函數遍歷異常幀,利用獲得的指向EXCEPTION_REGISTRATIONS鏈表的指針遍歷每一個節點查找異常處理例程,並通過RtlpExecuteHandlerForException完成異常處理例程的調用,根據RtlpExecuteHandlerForException的反饋信息,RtlDispatchException或者繼續遍歷異常幀,或者產生另一個異常,最終將控制送至ExecuteHandler函數,由該函數通過EXCEPTION_REGISTRATION的handler域調用異常處理例程,對程序執行中產生的異常進行處理。

SEH在軟件反跟蹤中的主要應用方式是調試工具的檢測、硬件斷點的去除、改變程序執行順序等,但這些反跟蹤技術相對比較成熟,很容易被破解者發現併成功破解。本文所介紹的是一種更加隱蔽,效果更好的反跟蹤方式:單步異常-抽取代碼法。

在程序的正常執行序列中設置功能請求標誌位,之後觸發單步異常,進入異常處理例程後根據標誌位完成所抽取的相應的功能,繼續程序的運行。這樣,如果破解者不能發現異常處理例程的存在,將無法實現該功能。這是因為異常發生後,調試器接管了異常,而不會去調用作者安裝的實現具體功能的異常處理例程,從而達到反跟蹤的目的。

利用單步異常實現反跟蹤的具體過程是安裝異常處理例程,在程序開始處將異常處理函數地址放入EXCEPTION_REGISTRATION結構的handler域中,一旦執行過程中有異常發生系統就通過handler域的地址調用異常處理函數,完成相關的異常處理,正常執行代碼,安裝完異常處理例程,其後是程序功能代碼,在這裏設置標誌以便異常函數作不同的處理。插入單步異常指令,此處是關鍵的地方,因為程序的反調試功能通過它來實現。當程序執行到這裏時,根據是否處於調試狀態有兩條執行路徑,一條是處於調試狀態,這時調試器接收異常信息,並進行相關的處理,這樣將有部分程序代碼得不到執行而使程序出現錯誤;另一條執行路徑是不處於調試狀態下,程序本身將通過異常處理函數來處理異常,這樣程序中部分被抽取的代碼將得到執行,程序不出現錯誤,且功能可以實現。清除異常處理例程,程序執行完功能代碼後,要把開始時安裝的異常處理例程去除,否則容易引起系統錯誤。清除的方法是:用出棧指令將EXCEPTION_REGISTRATION結構的prev與和handler域彈出即可。

這次參加ICACTE國際會議,通過和與會學者的交流、探討,我覺得自己的收穫主要在以下方面:

(1)對自己專業的新動態有了一定的把握,對本行業內的其他專業方向有了一定的瞭解;

(2)發現了自己在學術上存在的問題,這有助於以後的改進和提高;

(3)結識了一些日本、韓國、台灣等地高校和公司的教授、研發人員和學生,為以後更廣泛的交流打下了基礎;

(4)發現了自己英語水平的不足,這將促使我更加努力地掌握英語,尤其是提高口語水平。

總體上,這次國際會議讓我學到了很多東西,雖然只有短短三天,但我感覺收穫頗多,聽到了許多新思想,結識了許多新朋友,拓寬了視野,增長了知識,結識了軟件安全研究領域的多名學者,更加明確了今後的研究方向,相信對個人今後的學術研究有很大的促進。非常感謝我校研究生院給予的此項支持,鼓勵研究生參加國際會議是符合建設國際型大學的潮流之舉。作為研究生,我們應該認識並珍惜學校提供的學術科研和培養的機會和條件,積極思考,廣泛交流,用優秀的科研成績回報學校。

標籤: 學術會議 國際
  • 文章版權屬於文章作者所有,轉載請註明 https://wenshudu.com/shiwuwenshu/huiyizongjie/9r0yww.html
專題