欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種針對嵌入式微處理器的反匯編方法

文檔序號(hào):6382476閱讀:316來源:國知局
專利名稱:一種針對嵌入式微處理器的反匯編方法
技術(shù)領(lǐng)域
本發(fā)明涉及涉及計(jì)算機(jī)學(xué)科中的嵌入式系統(tǒng)、決策理論、固件逆向工程技術(shù)等,尤其是涉及一種針對嵌入式微處理器的反匯編方法。
背景技術(shù)
廣義地說,任一對程序的閱讀理解均可視為逆向工程。1990年,Chikofsky提出了軟件逆向工程的概念,將其定義為分析特定目標(biāo)系統(tǒng)的結(jié)構(gòu)組成及其相互關(guān)系并建立更高級更具抽象化的系統(tǒng)的過程。國家自然科學(xué)學(xué)科發(fā)展戰(zhàn)略報(bào)告將軟件逆向工程的任務(wù)定義為從可運(yùn)行的程序系統(tǒng)出發(fā),生成對應(yīng)源程序及相關(guān)設(shè)計(jì)的文檔。隨著軟件逆向工程技術(shù)的不斷發(fā)展,固件逆向工程作為軟件逆向工程的重要分支,因其特殊的研究對象方興未艾。固件逆向工程是針對于固件中存儲(chǔ)的代碼程序的逆向分析,通常用于嵌入式系統(tǒng)。由于嵌入式系統(tǒng)千差萬別,其種類數(shù)量已超過1000種,體系結(jié)構(gòu)超過30個(gè),應(yīng)用于航天、制造、通信等諸多領(lǐng)域,因此固件逆向工程的工作難度往往較大,復(fù)雜度往往難以想象。通常意義下的反匯編就是把目標(biāo)固件的機(jī)器代碼轉(zhuǎn)換為匯編代碼的過程,亦即從低級語言向高級語言的轉(zhuǎn)換,該技術(shù)被廣泛地運(yùn)用于計(jì)算機(jī)軟件破解、病毒分析以及軟件漢化等領(lǐng)域。當(dāng)前,逆向工程還屬于一個(gè)相當(dāng)不成熟的領(lǐng)域,理論和實(shí)踐研究均處于早期階段。市場上的反匯編工具不斷涌現(xiàn),但是普遍存在平臺(tái)的局限性和準(zhǔn)確度。嚴(yán)格來說,一款通用的反匯編工具還未出現(xiàn)。

發(fā)明內(nèi)容
本發(fā)明是適用于未知類型處理器的反匯編的,傳統(tǒng)的反匯編工具如IAR等等存在很多版本,主要是為了針對于不同的處理器進(jìn)行反匯編,不同版本之間無法兼容,這需要給定的處理器類型已知,因此對于龐大復(fù)雜的工程項(xiàng)目產(chǎn)品來說事倍功半。本次的研究成果一反匯編系統(tǒng)模型分為兩塊:反匯編模塊和處理器識(shí)別模塊。對于反匯編部分,本發(fā)明針對多處理器進(jìn)行反匯編,對照各處理器指令集設(shè)計(jì)了自定義的算法,相對于大型的工程項(xiàng)目有良好的靈活性和可移植性。其反匯編的方法嚴(yán)格按照固件代碼逆向工程的要求進(jìn)行,設(shè)計(jì)的結(jié)果與反匯編工具IAR相對比,誤差控制在一定范圍之內(nèi)。另一部分是傳統(tǒng)工具不具備的,即處理器識(shí)別技術(shù),根據(jù)反匯編的結(jié)果判定其所屬的處理器類型。此過程又分為兩步:1、簡單判別。根據(jù)各個(gè)處理器類型的語法語義的特點(diǎn),篩選出符合該類處理器特征的型號(hào)。2、深度判別。自定義各項(xiàng)指標(biāo)來表征匯編指令的特性,對每類可能的處理器指標(biāo)的值均有所不同,這樣可以形成不同的特征值矩陣,應(yīng)用多屬性決策原則算法得到理想特征值對應(yīng)的處理器。本發(fā)明拓展了傳統(tǒng)反匯編工具的功能,其適用性也更加強(qiáng)大。另外,我們知道,反匯編的目的是為了得到更高級的抽象系統(tǒng),這樣可以便于分析,而匯編語言作為一種機(jī)器語言顯然滿足不了需求,因此為了工程上的可集成特點(diǎn),本系統(tǒng)增添了匯編指令處理模塊,對生成的匯編指令制定了數(shù)據(jù)地址表、指令地址表和轉(zhuǎn)移標(biāo)號(hào)地址表,方便未來的高級語言的編譯。由圖1可以看出,當(dāng)未獲得微處理器匹配的理想值時(shí),系統(tǒng)會(huì)轉(zhuǎn)入固件代碼預(yù)處理環(huán)節(jié)進(jìn)行再次處理,這樣代碼可以得到不斷優(yōu)化,其中的有效指令覆蓋率也不斷上升,可以證明這樣的處理方式總能得到結(jié)果。因此,本系統(tǒng)也是一個(gè)自學(xué)習(xí)的系統(tǒng),本系統(tǒng)的實(shí)現(xiàn)是自適應(yīng)自學(xué)習(xí)思想在反匯編技術(shù)上的結(jié)合應(yīng)用,這也是傳統(tǒng)反匯編工具無法達(dá)到的層次。本發(fā)明的上述技術(shù)問題主要是通過下述技術(shù)方案得以解決的:一種針對嵌入式微處理器的反匯編方法,其特征在于,包括以下步驟:步驟1:將芯片與其相對應(yīng)的調(diào)試器相連接,再與PC連接進(jìn)行通信,對芯片加上相應(yīng)的START信號(hào),由提取固件機(jī)器碼模塊得到反饋信號(hào)和機(jī)器碼;步驟2:由機(jī)器碼預(yù)處理模塊區(qū)分機(jī)器碼中的指令和數(shù)據(jù)并將機(jī)器碼樣本標(biāo)準(zhǔn)化;步驟3:由固件代碼反匯編模塊以步驟2中的文本文件為輸入,對照編寫的算法進(jìn)行運(yùn)行得到備選的反匯編指令;步驟4:處理器匹配模塊進(jìn)行匹配判定,得到最可能匹配的微處理器的數(shù)量;步驟5:由調(diào)節(jié)反饋模塊針對步驟4中得到微處理器的數(shù)量進(jìn)行處理后得到最終的一個(gè)微處理器;步驟6:由匯編代碼優(yōu)化模塊得到更加清晰的匯編指令,方便指令流分析:首先構(gòu)造指令地址表、中斷向量入口表、數(shù)據(jù)變量對照表等,然后根據(jù)表中的內(nèi)容替換原匯編指令中的助記符、變量符號(hào)等達(dá)到高可讀性的要求。在上述的一種針對嵌入式微處理器的反匯編方法,所述的步驟2中,機(jī)器碼預(yù)處理模塊處理過程分為兩部分:一是區(qū)分機(jī)器碼中的指令和數(shù)據(jù),由于數(shù)據(jù)區(qū)對于程序功能的分析沒有影響,因此只保留指令塊部分,其中區(qū)分指令和數(shù)據(jù)的依據(jù)是基于下述約束條件:約束條件1:指令總是成塊出現(xiàn)在內(nèi)存中的;約束條件2:指令塊的各字節(jié)的值具有隨機(jī)性,即沒有周期性、遞增性或遞減性;二是將機(jī)器碼樣本標(biāo)準(zhǔn)化,即以設(shè)定的格式輸出文本文件。在上述的一種針對嵌入式微處理器的反匯編方法,所述的步驟4中,處理器匹配模塊處理過程分為兩部分:一是基本判定階段,針對步驟3中得到的反匯編指令進(jìn)行語法語義判斷,排除部分不可能匹配的MCU類型,運(yùn)用代碼結(jié)構(gòu)分析技術(shù)對所有MCU匯編指令進(jìn)行分析,生成控制流程圖,將圖的判定結(jié)果作為MCU類型是否合理的依據(jù);二是決策判定階段,對于余下的多種可能存在的MCU,應(yīng)用多屬性決策TOPSIS算法得到最可能匹配的微處理器。在上述的一種針對嵌入式微處理器的反匯編方法,所述的步驟5的具體過程如下:
步驟5.1,若步驟4得到的處理器型號(hào),有且只有一個(gè),則執(zhí)行步驟5.4 ;若步驟4得到的處理器型號(hào),有多個(gè),則執(zhí)行步驟5.2 ;若步驟4得到的處理器型號(hào)為空,則執(zhí)行步驟5.3;步驟5.2,在原始機(jī)器碼中隨機(jī)刪除數(shù)段后重新組合作為新數(shù)組,轉(zhuǎn)到執(zhí)行步驟3。步驟5.3,在原始機(jī)器碼數(shù)組中隨機(jī)摘取數(shù)段重新組合為新數(shù)組,轉(zhuǎn)到執(zhí)行步驟3。步驟5.4,執(zhí)行步驟6。因此,本發(fā)明具有如下優(yōu)點(diǎn):1.本發(fā)明具有自我識(shí)別功能,即在未知微處理器型號(hào)的情況下反匯編,最終得到匹配相似度最高的解。這是傳統(tǒng)的類似工具所不具有的。本發(fā)明拓展了傳統(tǒng)反匯編工具的功能,其適用性也更加強(qiáng)大;2.本系統(tǒng)增添了匯編指令處理模塊,對生成的匯編指令制定了數(shù)據(jù)地址表、指令地址表和轉(zhuǎn)移標(biāo)號(hào)地址表,方便未來的高級語目的編譯。


圖1是本發(fā)明涉及的固件代碼反匯編系統(tǒng)模型流程圖。圖2是本發(fā)明中機(jī)器碼提取示意圖。圖3是本發(fā)明中機(jī)器碼的反匯編。圖4是本發(fā)明中M16C微處理器反匯編算法流程圖。圖5是本發(fā)明中多屬性決策TOPSIS算法示意圖。
具體實(shí)施方式
:嵌入式設(shè)備中的MCU芯片處理器種類各異,調(diào)查發(fā)現(xiàn)主流的MCU芯片處理器有RENESAS的M16C系列、TI的MSP430系列、Intel系列、8051、78k等。因此本發(fā)明就主流的MCU指令集進(jìn)行反匯編,在未知目標(biāo)代碼所屬指令集的情況下進(jìn)行判斷和相似度匹配。圖1為本系統(tǒng)的總體流程。為了方便說明,下面以瑞薩單片機(jī)M16C系列MCU的反匯編為例詳細(xì)說明反匯編的步驟方法:1.固件代碼的提取。將芯片與其相對應(yīng)的調(diào)試器E8A相連接,再和PC連接進(jìn)行通信,對芯片加上相應(yīng)的START信號(hào),得到反饋信號(hào)和機(jī)器碼。圖2為由調(diào)試器通信得到機(jī)器碼的示意圖。2.固件代碼的預(yù)處理。預(yù)處理環(huán)節(jié)分為兩部分:一是區(qū)分機(jī)器碼中的指令和數(shù)據(jù),由于數(shù)據(jù)區(qū)對于程序功能的分析沒有影響,因此只保留指令塊部分,其中區(qū)分指令和數(shù)據(jù)的依據(jù)是基于這樣的事實(shí):指令總是成塊出現(xiàn)在內(nèi)存中的。指令塊的各字節(jié)的值具有隨機(jī)性,即沒有周期性、遞增性或遞減性。二是將機(jī)器碼樣本標(biāo)準(zhǔn)化,即以特定的格式輸出(本發(fā)明規(guī)定以后綴為b”的文本文件輸出)。如表一所示,提取的原始代碼經(jīng)過處理之后得到只含有指令塊的代碼。這一步的做法是將地址碼部分去掉,將指令塊部分鏈接為一整串二進(jìn)制字符。
表一
權(quán)利要求
1.一種針對嵌入式微處理器的反匯編方法,其特征在于,包括以下步驟: 步驟1:將芯片與其相對應(yīng)的調(diào)試器相連接,再與PC連接進(jìn)行通信,對芯片加上相應(yīng)的START信號(hào),由提取固件機(jī)器碼模塊得到反饋信號(hào)和機(jī)器碼; 步驟2:由機(jī)器碼預(yù)處理模塊區(qū)分機(jī)器碼中的指令和數(shù)據(jù)并將機(jī)器碼樣 本標(biāo)準(zhǔn)化; 步驟3:由固件代碼反匯編模塊以步驟2中的文本文件為輸入,對照編寫的算法進(jìn)行運(yùn)行得到備選的反匯編指令; 步驟4:處理器匹配模塊進(jìn)行匹配判定,得到最可能匹配的微處理器的數(shù)量; 步驟5:由調(diào)節(jié)反饋模塊針對步驟4中得到微處理器的數(shù)量進(jìn)行處理后得到最終的一個(gè)微處理器; 步驟6:由匯編代碼優(yōu)化模塊得到更加清晰的匯編指令,方便指令流分析:首先構(gòu)造指令地址表、中斷向量入口表、數(shù)據(jù)變量對照表等,然后根據(jù)表中的內(nèi)容替換原匯編指令中的助記符、變量符號(hào)等達(dá)到高可讀性的要求。
2.根據(jù)權(quán)利要求1所述的一種針對嵌入式微處理器的反匯編方法,其特征在于,所述的步驟2中,機(jī)器碼預(yù)處理模塊處理過程分為兩部分: 一是區(qū)分機(jī)器碼中的指令和數(shù)據(jù),由于數(shù)據(jù)區(qū)對于程序功能的分析沒有影響,因 此只保留指令塊部分,其中區(qū)分指令和數(shù)據(jù)的依據(jù)是基于下述約束條件: 約束條件1:指令總是成塊出現(xiàn)在內(nèi)存中的; 約束條件2:指令塊的各字節(jié)的值具有隨機(jī)性,即沒有周期性、遞增性或遞減性; 二是將機(jī)器碼樣本標(biāo)準(zhǔn)化,即以設(shè)定的格式輸出文本文件。
3.根據(jù)權(quán)利要求1所述的一種針對嵌入式微處理器的反匯編方法,其特征在于,所述的步驟4中,處理器匹配模塊處理過程分為兩部分: 一是基本判定階段,針對步驟3中得到的反匯編指令進(jìn)行語法語義判斷,排除部分不可能匹配的MCU類型,運(yùn)用代碼結(jié)構(gòu)分析技術(shù)對所有MCU匯編指令進(jìn)行分析,生成控制流程圖,將圖的判定結(jié)果作為MCU類型是否合理的依據(jù); 二是決策判定階段,對于余下的多種可能存在的MCU,應(yīng)用多屬性決策TOPSIS算法得到最可能匹配的微處理器。
4.根據(jù)權(quán)利要求1所述的一種針對嵌入式微處理器的反匯編方法,其特征在于,所述的步驟5的具體過程如下: 步驟5.1,若步驟4得到的處理器型號(hào),有且只有一個(gè),則執(zhí)行步驟5.4 ;若步驟4得到的處理器型號(hào),有多個(gè),則執(zhí)行步驟5.2 ;若步驟4得到的處理器型號(hào)為空,則執(zhí)行步驟5.3 ; 步驟5.2,在原始機(jī)器碼中隨機(jī)刪除數(shù)段后重新組合作為新數(shù)組,轉(zhuǎn)到執(zhí)行步驟3 ; 步驟5.3,在原始機(jī)器碼數(shù)組中隨機(jī)摘取數(shù)段重新組合為新數(shù)組,轉(zhuǎn)到執(zhí)行步驟3 ; 步驟5.4,執(zhí)行步驟6。
全文摘要
本發(fā)明涉及一種針對嵌入式微處理器的反匯編方法,流程如下1由提取固件機(jī)器碼模塊得到反饋信號(hào)和機(jī)器碼;2由機(jī)器碼預(yù)處理模塊區(qū)分機(jī)器碼中的指令和數(shù)據(jù)并將機(jī)器碼標(biāo)準(zhǔn)化;3由固件代碼反匯編模塊對照編寫的算法運(yùn)行得到備選的反匯編指令;4由處理器匹配模塊進(jìn)行匹配判定,得到最可能匹配的微處理器的數(shù)量;5由調(diào)節(jié)反饋模塊針對步驟4中微處理器的數(shù)量進(jìn)行處理后得到最終的理想微處理器;6由匯編代碼優(yōu)化模塊得到更加清晰的匯編指令。利用本發(fā)明可以對嵌入式系統(tǒng)設(shè)備進(jìn)行測試。例如對智能電能表的生產(chǎn)成品和樣品進(jìn)行比較鑒別,控制批量生產(chǎn)的智能電能表與樣品表的功能和質(zhì)量誤差在±20%內(nèi)。
文檔編號(hào)G06F9/45GK103106096SQ201210493379
公開日2013年5月15日 申請日期2012年11月27日 優(yōu)先權(quán)日2012年11月27日
發(fā)明者劉金碩, 王謝兵, 李少騰, 章喻龍, 劉源, 許孝盛, 王亞鴿, 曾秋梅, 楊光, 鄭穩(wěn) 申請人:武漢大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
芜湖县| 太白县| 合江县| 石渠县| 德化县| 乐亭县| 道真| 安顺市| 开远市| 资阳市| 湖南省| 交口县| 全南县| 伊吾县| 綦江县| 江阴市| 漳州市| 临安市| 红河县| 汝州市| 普陀区| 博罗县| 临沧市| 桓台县| 锡林浩特市| 高青县| 简阳市| 长春市| 七台河市| 珠海市| 杂多县| 承德市| 黄石市| 胶南市| 德保县| 浦县| 广饶县| 桃江县| 苏尼特左旗| 和平县| 旬阳县|