亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種目標代碼控制流圖生成方法與流程

文檔序號:12463463閱讀:627來源:國知局
一種目標代碼控制流圖生成方法與流程

本發(fā)明涉及一種計算機技術領域,尤其是涉及基于符號執(zhí)行的目標代碼控制流圖生成方法。



背景技術:

面對眾多的無法獲取源碼的目標程序,研究人員不得不需要通過逆向工程的手段對程序的目標代碼進行分析。在分析過程中,一個精確而完善的控制流圖能夠幫助研究人員對程序結構進行直觀的認識,以輔助其進一步的深入分析與理解。

通常,人們通過反匯編的手段,對目標代碼進行反匯編,根據(jù)程序中的跳轉與子過程調用,生成相應的控制流節(jié)點,構造出相應的控制流圖。

而在控制流圖構造的過程中,通常會遭遇到間接地址跳轉的問題。間接跳轉地址是指目標地址存放在內存或寄存器中的跳轉地址,這類值通常無法通過靜態(tài)分析得到。

而在一些控制流圖生成工具的實現(xiàn)中,采用了抽象解釋的方法,使用近似值的方法對控制流進行擴充。這種方法相對不夠精確,同時引入了不該存在的控制流路徑。



技術實現(xiàn)要素:

本發(fā)明的目的是通過以下技術方案實現(xiàn)的。具體的,本發(fā)明公開一種目標代碼控制流圖生成方法,包括如下步驟:

A1.預處理步驟:用于對目標代碼文件進行封裝格式的識別,定位程序指令的入口地址;

A2.反匯編與控制流圖生成步驟:用于機器指令的反匯編與控制流圖生成;

A3.目標地址分析步驟:用于間接跳轉指令處目的地址的可能值分析計算。

優(yōu)選地,所述預處理步驟包括:

C1.文件類型識別步驟:通過對特定封裝格式文件頭部數(shù)據(jù)結構的匹配,進行文件類型的識別;

C2.目標平臺確定步驟:讀取并解析目標代碼文件的頭部數(shù)據(jù),確定目標代碼的目標平臺;

C3.入口偏移地址定位步驟:讀取并解析目標代碼文件的頭部數(shù)據(jù),定位目標文件指令序列的入口偏移地址。

優(yōu)選地,所述反匯編與控制流圖生成步驟包括:

D1.反匯編引擎選擇步驟:根據(jù)所述預處理步驟所識別的目標平臺信息,自動選擇相應的反匯編引擎;

D2.反匯編步驟:對于順序指令序列,進行線性掃描式的反匯編處理;對于目的地址明確的跳轉,直接跳轉至目標地址進行反匯編,對于目標地址為寄存器的間接地址跳轉,調用目標地址分析方法進行目標地址分析,得到目標地址后跳轉至相應位置進行反匯編,并構建相應的控制流圖節(jié)點。

優(yōu)選地,所述目標地址分析步驟包括:

E1.路徑條件符號計算步驟:對程序進行符號執(zhí)行,分析推導抵達間接跳轉指令處所需滿足的條件,輸出一個條件公式;

E2.SMT求解步驟:對所述路徑條件符號計算步驟輸出的條件公式進行求解,計算公式中變量的可行取值;

E3.二進制仿真步驟:以所述SMT求解步驟中獲取的變量可行值作為輸入?yún)?shù),仿真執(zhí)行相應的指令序列,以跟蹤指令序列運行過程中的寄存器中值的變化,最終確定間接跳轉指令的目的地址,以之作為下一條待反匯編指令的地址,使用反匯編與控制流圖生成方法重新處理指令。

優(yōu)選地,所述反匯編步驟中的反匯編采用遞歸下降的反匯編方法。

與現(xiàn)有技術相比,本發(fā)明公開的一種目標代碼控制流圖生成方法,具有如下有益效果:該方法通過符號執(zhí)行,SMT求解器求解,模擬執(zhí)行的方式,對間接地址寄存器的值進行分析,以計算出相應的目的地址,使得控制流圖更加完善。而通過模擬執(zhí)行計算的目的地址,是真實運行環(huán)境下可能存在的值,使得生產的控制流圖相對抽象解釋方法獲得的控制流圖而言更加精確。

附圖說明

通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:

附圖1示出了根據(jù)本發(fā)明實施例的目標代碼控制流圖生成系統(tǒng)示例圖;

附圖2示出了根據(jù)本發(fā)明實施例的目標代碼控制流圖生成方法流程框圖;

附圖3示出了根據(jù)本發(fā)明實施例的目標代碼控制流圖生成方法中的預處理步驟的流程框圖;

附圖4示出了根據(jù)本發(fā)明實施例的目標代碼控制流圖生成方法中的反匯編與控制流圖生成步驟的流程框圖;

附圖5示出了根據(jù)本發(fā)明實施例的目標代碼控制流圖生成方法中的目標地址分析步驟的流程框圖;

附圖6示出了根據(jù)本發(fā)明實施例的目標代碼控制流圖生成方法的詳細流程圖。

具體實施方式

下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。

如圖1所示,本發(fā)明公開一種目標代碼控制流圖生成系統(tǒng),包括:

預處理模塊:負責對目標代碼文件進行封裝格式的識別,定位程序指令的入口地址;

反匯編與控制流圖生成模塊:負責機器指令的反匯編與控制流圖生成;

目標地址分析模塊:負責間接跳轉指令處目的地址的可能值分析計算。

如圖1所示,如上所述的目標代碼控制流圖生成系統(tǒng)中,所述目標地址分析模塊包括:路徑條件符號計算模塊(相當于符號執(zhí)行模塊):對程序進行符號執(zhí)行,分析推導抵達間接跳轉指令處所需滿足的條件,輸出一個條件公式;SMT求解器模塊:對所述反匯編引擎選擇模塊輸出的條件公式進行求解,計算公式中變量的可行取值,獲得輸入?yún)?shù);二進制仿真模塊:利用所述SMT求解器模塊中獲得的可能值,仿真執(zhí)行相應的指令序列,以跟蹤指令序列運行過程中的寄存器中值的變化,最終確定間接跳轉指令的目的地址,以之作為下一條待反匯編指令的地址,使用反匯編與控制流圖生成模塊重新處理指令。

如圖2所示,以上述系統(tǒng)實現(xiàn)的目標代碼控制流圖生成方法包括步驟:

A1.預處理步驟:用于對目標代碼文件進行封裝格式的識別,定位程序指令的入口地址;

A2.反匯編與控制流圖生成步驟:用于機器指令的反匯編與控制流圖生成;

A3.目標地址分析步驟:用于間接跳轉指令處目的地址的可能值分析計算。

優(yōu)選的,如上所述的目標代碼控制流圖生成方法中,所述預處理步驟如圖3所示,包括:

C1.文件類型識別步驟:通過對特定封裝格式文件頭部數(shù)據(jù)結構的匹配,進行文件類型的識別;

C2.目標平臺確定步驟:讀取并解析目標代碼文件的頭部數(shù)據(jù),確定目標代碼的目標平臺;

C3.入口偏移地址定位步驟:讀取并解析目標代碼文件的頭部數(shù)據(jù),定位目標文件指令序列的入口偏移地址。

優(yōu)選的,如上所述的目標代碼控制流圖生成方法,所述反匯編與控制流圖生成步驟如圖4所示,包括:

D1.反匯編引擎選擇步驟:根據(jù)預處理方法所識別的目標平臺信息,自動選擇相應的反匯編引擎;

D2.反匯編步驟:對于順序指令序列,進行線性掃描式的反匯編處理;對于目的地址明確的跳轉,直接跳轉至目標地址進行反匯編,對于目標地址為寄存器的間接地址跳轉,調用目標地址分析方法進行目標地址分析,得到目標地址后跳轉至相應位置進行反匯編,并構建相應的控制流圖節(jié)點。

優(yōu)選的,如上所述的目標代碼控制流圖生成方法,所述目標地址分析步驟如圖5所示,包括:

E1.路徑條件符號計算步驟(相當于符號執(zhí)行步驟):對程序進行符號執(zhí)行,分析推導抵達間接跳轉指令處所需滿足的條件,輸出一個條件公式;

E2.SMT求解步驟:對E1輸出的條件公式進行求解,計算公式中變量的可行取值,即公式的解;

E3.二進制仿真步驟:以E2中獲取的變量可行值作為輸入?yún)?shù),仿真執(zhí)行相應的指令序列,以跟蹤指令序列運行過程中的寄存器中值的變化,最終確定間接跳轉指令的目的地址,以之作為下一條待反匯編指令的地址,使用反匯編與控制流圖生成方法重新處理指令。

優(yōu)選的,如上所述的目標代碼控制流圖生成方法中,所述D2中的反匯編采用遞歸下降的反匯編方法。

圖6示出了根據(jù)本發(fā)明實施例的目標代碼控制流圖生成方法的詳細流程圖,包括:

B1.輸入需要生成控制流圖的目標代碼文件路徑,系統(tǒng)讀取目標代碼文件;

B2.預處理器(相當于系統(tǒng)中的預處理模塊)對目標代碼文件進行預處理,定位程序的入口地址;

B3.反匯編與控制流圖生成模塊讀取指令,判斷指令是否存在,若存在,則讀取成功,則跳轉至步驟B4,讀取失敗,則跳轉至步驟B9;

B4.對指令進行反匯編;

B5.判斷指令是否是間接指令跳轉,若指令不是間接跳轉指令,則按照一般的控制流圖生成算法進行節(jié)點與連接邊的生成,即,生成一個控制流圖節(jié)點,構造一條邊連接上一節(jié)點到本節(jié)點,回到B3;若指令是間接跳轉指令,則跳轉至步驟B6;

B6.分析到達間接跳轉指令的路徑,使用符號執(zhí)行分析得到抵達該間接跳轉指令的路徑條件;

B7.使用SMT求解器對B6所得路徑條件公式進行求解,獲得輸入?yún)?shù),即一個測試用例;

B8.使用二進制仿真器,仿真抵達間接跳轉指令的指令序列,獲取到達間接跳轉指令時存儲間接跳轉指令寄存器中的值,即跳轉的目標地址,以之作為下一條反匯編指令的地址,回到B3;

B9.輸出控制流圖;

B10.結束。

通過本發(fā)明的方法,得到了一個精確而完善的控制流圖,能夠幫助研究人員對程序結構進行直觀的認識。具體地,通過對間接地址寄存器的值進行分析,計算出相應的目的地址。這種通過模擬執(zhí)行計算的目的地址,是真實運行環(huán)境下可能存在的值,使得得到的控制流圖更加精確。

需要說明的是:

在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設備固有相關。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類裝置所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。

在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。

類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一根或多根,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。

本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一根或多根設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。

此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。

本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的虛擬機的創(chuàng)建裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。

應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其同等技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1