本發明專利技術公開了一種基于程序演進模型的目標代碼逆向工程方法,可以自動地識別目標代碼文件封裝格式,區分目標代碼文件代碼段,并使用反匯編技術進行分析并生成相應的程序模型,又在前一個程序模型基礎上,再次進行分析并生成新的程序模型,不斷重復以上過程,逐步精化,最終生成.ASM可再匯編文件。采用本發明專利技術,可以對自混淆的、含有指令重疊的目標代碼文件進行準確而有效的逆向工程,可以應用于含有自混淆指令,指令重疊等加殼惡意軟件的分析與識別以及防反匯編閉源軟件的分析。
【技術實現步驟摘要】
本專利技術涉及數據處理領域,尤其涉及一種基于程序演進模型的目標代碼逆向工程方法。
技術介紹
隨著軟件復雜度的提高,逆向工程越來越引起人們的重視,成為軟件工程領域的一個新興分支。使用目標代碼逆向工程技術是為了在沒有源代碼的情況下,直接從已編譯的或被特殊處理的最終目標程序出發,應用多種技術手段,復原程序行為語義信息,從而幫助了解程序的原理。分析惡意軟件、閉源軟件的漏洞、閉源軟件的互操作性、目標程序與源程序的一致性、驗證編譯器的性能和準確性以及在調試過程中顯示匯編指令都是目標代碼逆向工程技術的關鍵應用場景。對目標代碼進行逆向工程,根據其逆向工程的結果分析病毒運行機制、評估軟件質量與推斷程序行為目的的需求越來越多。傳統的目標代碼逆向工程技術主要有線性掃描與遞歸下降兩種經典基礎方法。線性掃描為反匯編程序假設可執行的二進制代碼包含了多個連續的二進制代碼流,并且連續地對它進行解碼。而被廣泛應用的一款著名商業化的反匯編軟件IDA Pro則運用了遞歸下降的方法。與線性掃描技術相比,遞歸下降技術試圖在每個控制轉移指令中確定更多可能的目標地址。通常,目標代碼逆向工程模型是指可以用于表示目標代碼中的指令操作和數據的綜合模型。在現有技術與工具體系下,一般采用結合反匯編代碼的控制流圖與一些表格(符號表、導入導出表等)的方式表示。然而,隨著編譯、防護與混淆技術的發展,以及一些特定編譯優化技術的引入,傳統的逆向工程方法已經無法正確地構造出逆向模型。
技術實現思路
本專利技術的目的是通過以下技術方案實現的。根據本專利技術的實施方式,公開了一種基于程序演進模型的目標代碼逆向工程方法,包括以下步驟:步驟A:啟動人機交互接口,向人機交互接口分別輸入待逆向工程的目標代碼文件、程序模型存儲文件以及待生成的可再匯編代碼文件的存儲路徑;步驟B:讀取目標代碼文件首部,識別目標代碼文件的封裝格式,并將其封裝格式打印到輸出提示單元;步驟C:根據輸出提示單元接收的不同的封裝格式,在不同的位置取出目標代碼文件的起始地址,以及代碼段的長度,定位代碼段的地址范圍;步驟D:識別目標代碼文件首部所記錄的處理器體系結構信息;步驟E:在指定的程序模型存儲文件存儲路徑的目錄下創建一個空的程序模型存儲文件;步驟F:結合前一輪創建的程序模型存儲文件開始逐條分析代碼段起始地址的機器指令,并將指令相關的信息寫入到新創建的程序模型存儲文件中;步驟G:如果存在前一輪的程序模型存儲文件,則將新生成寫入的程序模型存儲文件與前一輪所創建的程序模型存儲文件進行比較,若兩個程序模型沒有差異,則表示程序模型已經穩定,則跳轉至步驟H;否則,回到步驟E,重新對進行分析和修改操作,記錄程序模型到新的程序模型存儲文件之中。步驟H:結合最后一個程序模型存儲文件中存儲的信息,即迭代修改后穩定的機器指令序列,使用對應處理器體系結構的反匯編引擎,生成反匯編代碼,寫入到最后的可再匯編代碼文件中。根據本專利技術的實施方式,所述步驟B的讀取目標代碼文件首部,識別目標代碼文件的封裝格式,并將其封裝格式打印到輸出提示單元具體包括:步驟B1,讀取文件首部數十個字節,匹配程序庫中的樣本,若匹配到相應封裝格式的字節序列模式,則轉到步驟B2;否則,輸出:無法識別文件封裝,逆向工程結束;步驟B2:在輸出提示單元打印目標代碼文件的封裝格式,然后轉到步驟C。根據本專利技術的實施方式,所述處理器體系結構信息包括指令集類型信息,根據不同的處理器體系結構,采用不同的反匯編處理引擎進行后續步驟的指令分析與反匯編代碼生成操作;根據本專利技術的實施方式,所述步驟D的識別目標代碼文件首部所記錄的處理器體系結構信息具體包括:步驟D1,控制單元自動識別目標代碼文件中機器碼的體系結構,若能夠識別,則轉到步驟E;否則,轉到步驟D2;步驟D2,提示用戶自己選擇可選的處理器體系結構,選擇完成后,轉到步驟E。根據本專利技術的實施方式,所述步驟F具體包括:如果步驟E中創建的程序模型存儲文件為第一程序模型存儲文件,則直接從代碼段起始地址開始逐條地分析機器指令;否則,從上一輪迭代所創建的程序模型存儲文件中的取出機器指令序列來進行分析,在此過程中,根據機器指令的操作,對機器指令序列本身進行修改,生成新的機器指令序列,即生成新的程序模型,分析結束后,將該程序模型寫入到步驟E中創建的程序模型存儲文件中。根據本專利技術的實施方式,寫入程序模型存儲文件的信息包括:指令在文件的偏移地址,指令在內存中的映射地址,指令內容以及相應的反匯編代碼。本專利技術的優點在于:基于程序演進模型的目標代碼逆向工程方法,從初始態空程序出發,通過搜索代碼、求解間接跳轉與檢測自修改等一系列操作,逐步構造程序演進序列,可以對自混淆的、含有指令重疊的目標代碼文件進行準確而有效的逆向工程,可以應用于含有自混淆指令,指令重疊等加殼惡意軟件的分析與識別以及防反匯編閉源軟件的分析,具有有益的技術效果。附圖說明通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本專利技術的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:附圖1示出了根據本專利技術實施方式的基于程序演進模型的目標代碼逆向工程方法的流程圖。具體實施方式下面將參照附圖更詳細地描述本公開的示例性實施方式。雖然附圖中顯示了本公開的示例性實施方式,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施方式所限制。相反,提供這些實施方式是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。根據本專利技術的實施方式,如附圖1所示,公開了一種基于程序演進模型的目標代碼逆向工程方法,所述程序演進模型即基于程序模型的演進來進行逆向工程,所述方法包括以下步驟:步驟A:啟動人機交互接口,向人機交互接口分別輸入待逆向工程的目標代碼文件、程序模型存儲文件以及待生成的可再匯編代碼文件的存儲路徑;具體包括:步驟A1,啟動第一人機交互接口,并向用戶發出請求,請求輸入待逆向工程的目標代碼文件路徑,將待分析的目標代碼文件的路徑輸入到第一人機交互接口中,控制單元自動判斷輸入的待分析文件路徑是否有效,如果是,則轉到步驟A2;否則,輸出提示單元向用戶提示:輸入的待逆向工程目標代碼文件路徑無效,需重新輸入;步驟A2,啟動第二人機交互接口,并向用戶發出請求,請求輸入程序模型存儲文件的存儲目錄路徑,將程序模型存儲文件的存儲路徑輸入到第二人機交互接口中,控制單元判斷輸入的存儲路徑是否有效,如果是,則轉到步驟A3;否則,輸出提示單元向用戶提示:輸入的程序模型存儲文件存儲目錄路徑無效,需重新輸入;步驟A3,啟動第三人機交互接口,并向用戶發出請求,請求輸入待生成的反匯編代碼ASM文件路徑,將待生成的反匯編代碼ASM文件路徑輸入第三人機交互接口中,控制單元判斷輸入的反匯編代碼ASM文件的存儲路徑是否正確,如果是,則轉到步驟B;否則,輸出提示單元向用戶提示:輸入的反匯編代碼ASM文件路徑無效,需重新輸入。步驟B:讀取目標代碼文件首部,識別目標代碼文件的封裝格式,并將其封裝格式打印到輸出提示單元;具體包括:步驟B1,讀取文件首部數十個字節,匹配程序庫中的樣本,若匹配到相應封裝格式的字節序列模式,則轉到步驟B2;本文檔來自技高網...

【技術保護點】
一種基于程序演進模型的目標代碼逆向工程方法,包括以下步驟:步驟A:啟動人機交互接口,向人機交互接口分別輸入待逆向工程的目標代碼文件、程序模型存儲文件以及待生成的可再匯編代碼文件的存儲路徑;步驟B:讀取目標代碼文件首部,識別目標代碼文件的封裝格式,并將其封裝格式打印到輸出提示單元;步驟C:根據輸出提示單元接收的不同的封裝格式,在不同的位置取出目標代碼文件的起始地址,以及代碼段的長度,定位代碼段的地址范圍;步驟D:識別目標代碼文件首部所記錄的處理器體系結構信息;步驟E:在指定的程序模型存儲文件存儲路徑的目錄下創建一個空的程序模型存儲文件;步驟F:結合前一輪創建的程序模型存儲文件開始逐條分析代碼段起始地址的機器指令,并將指令相關的信息寫入到新創建的程序模型存儲文件中;步驟G:如果存在前一輪的程序模型存儲文件,則將新生成寫入的程序模型存儲文件與前一輪所創建的程序模型存儲文件進行比較,若兩個程序模型沒有差異,則表示程序模型已經穩定,則跳轉至步驟H;否則,回到步驟E,重新進行分析和修改操作,記錄程序模型到新的程序模型存儲文件之中。步驟H:結合最后一個程序模型存儲文件中存儲的信息,即迭代修改后穩定的機器指令序列,使用對應處理器體系結構的反匯編引擎,生成反匯編代碼,寫入到最后的可再匯編代碼文件中。...
【技術特征摘要】
1.一種基于程序演進模型的目標代碼逆向工程方法,包括以下步驟:步驟A:啟動人機交互接口,向人機交互接口分別輸入待逆向工程的目標代碼文件、程序模型存儲文件以及待生成的可再匯編代碼文件的存儲路徑;步驟B:讀取目標代碼文件首部,識別目標代碼文件的封裝格式,并將其封裝格式打印到輸出提示單元;步驟C:根據輸出提示單元接收的不同的封裝格式,在不同的位置取出目標代碼文件的起始地址,以及代碼段的長度,定位代碼段的地址范圍;步驟D:識別目標代碼文件首部所記錄的處理器體系結構信息;步驟E:在指定的程序模型存儲文件存儲路徑的目錄下創建一個空的程序模型存儲文件;步驟F:結合前一輪創建的程序模型存儲文件開始逐條分析代碼段起始地址的機器指令,并將指令相關的信息寫入到新創建的程序模型存儲文件中;步驟G:如果存在前一輪的程序模型存儲文件,則將新生成寫入的程序模型存儲文件與前一輪所創建的程序模型存儲文件進行比較,若兩個程序模型沒有差異,則表示程序模型已經穩定,則跳轉至步驟H;否則,回到步驟E,重新進行分析和修改操作,記錄程序模型到新的程序模型存儲文件之中。步驟H:結合最后一個程序模型存儲文件中存儲的信息,即迭代修改后穩定的機器指令序列,使用對應處理器體系結構的反匯編引擎,生成反匯編代碼,寫入到最后的可再匯編代碼文件中。2.一種如權利要求1所述的方法,所述步驟B的讀取目標代碼文件首部,識別目標代碼文件的封裝格式,并將其封裝格式打印到輸...
【專利技術屬性】
技術研發人員:史建琦,熊家文,黃滟鴻,何積豐,李昂,方徽星,
申請(專利權)人:華東師范大學,
類型:發明
國別省市:上海;31
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。