亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        軟件逆向工程分析技術(shù)的實(shí)踐與探索

        2018-03-16 06:03:58高菁
        中國(guó)設(shè)備工程 2018年5期
        關(guān)鍵詞:基本塊逆向程序

        高菁

        (天津機(jī)電職業(yè)技術(shù)學(xué)院,天津 300350)

        軟件逆向工程是軟件開發(fā)技術(shù)與方法的一大子課題,這一課題所強(qiáng)調(diào)的是通過密切結(jié)合可運(yùn)行的程序,來歸納出集成化、系統(tǒng)化的開發(fā)模型及軟件支撐媒介的內(nèi)部集成模式,從而在更高層次上來有效解決軟件面向的實(shí)際應(yīng)用問題。

        1 逆向工程及軟件逆向工程的內(nèi)涵分析

        1.1 逆向工程的內(nèi)涵分析

        逆向工程涉及以下兩大操作步驟。第一步是對(duì)目標(biāo)系統(tǒng)、標(biāo)識(shí)系統(tǒng)的對(duì)象以及標(biāo)識(shí)系統(tǒng)對(duì)象之間的關(guān)系進(jìn)行分析。第二步是創(chuàng)建不同形式或者是抽象層次更高的系統(tǒng)。

        國(guó)外學(xué)者Scott R.Tilley又對(duì)抽取和抽象進(jìn)一步提煉,將其擴(kuò)展成了建模、抽取與抽象這三大步驟。第一步建模具體指的是采用建模技術(shù)構(gòu)成相關(guān)應(yīng)用程序的領(lǐng)域模型。第二步抽取具體指的是借助于恰當(dāng)?shù)某槿C(jī)制,然后基于目標(biāo)系統(tǒng)來對(duì)原始數(shù)據(jù)進(jìn)行收集。第三步抽象指的是將具體的目標(biāo)系統(tǒng)抽象化,同時(shí)輔助以系統(tǒng)的理解,并允許進(jìn)行信息瀏覽、信息分析和得出抽象的結(jié)果并加以表示。

        1.2 軟件逆向工程的內(nèi)涵分析

        軟件逆向工程所遵循的基本原理具體如下:其將軟件系統(tǒng)中的關(guān)鍵內(nèi)容抽取并提煉出來,同時(shí)對(duì)軟件系統(tǒng)中的細(xì)節(jié)加以隱藏,然后借助于所抽取出來的實(shí)體,將其關(guān)鍵內(nèi)容在更高層級(jí)系統(tǒng)上描述出來。通常意義上,人們將軟件工程當(dāng)作一種開發(fā)的新系統(tǒng)存在。事實(shí)上,軟件工程還可分為很多更細(xì)的項(xiàng)目,即軟件正向工程、軟件逆向工程、軟件系統(tǒng)重構(gòu)、再工程以及軟件的設(shè)計(jì)恢復(fù)等。其中軟件正向工程指的是一種傳統(tǒng)意義上的過程,即基于軟件系統(tǒng)的高層抽象與邏輯層面獨(dú)立出來的,從實(shí)現(xiàn)設(shè)計(jì)到系統(tǒng)的物理設(shè)計(jì)過程。具體而言,就是基于用戶的實(shí)際需求到高層設(shè)計(jì)然后再回歸到底層設(shè)計(jì),最終實(shí)現(xiàn)的過程。軟件逆向工程是通過對(duì)系統(tǒng)的分析來確定系統(tǒng)組件以及系統(tǒng)組件間的相互作用,然后借助于其他形式來表示這一系統(tǒng),或者是在更高層次上來對(duì)系統(tǒng)過程進(jìn)行闡釋和說明。需要額外注意的是,針對(duì)某一系統(tǒng)進(jìn)行逆向工程時(shí),系統(tǒng)本身不發(fā)生任何變化,也不會(huì)在這一系統(tǒng)上建立新的系統(tǒng)。軟件系統(tǒng)重構(gòu)就是在保持系統(tǒng)的功能和語(yǔ)義不變的前提下,在統(tǒng)一的抽象層次上改變表現(xiàn)形式。再工程是一種在對(duì)軟件逆向工程、軟件系統(tǒng)重構(gòu)以及軟件正向系統(tǒng)進(jìn)行審查改造后重組的新形式。軟件的設(shè)計(jì)恢復(fù)具體指的是密切結(jié)合領(lǐng)域知識(shí)、目標(biāo)系統(tǒng)以及外部信息而認(rèn)定的更高一層次的抽象。上述幾大概念間的關(guān)系如圖1所示。

        圖1

        結(jié)合對(duì)逆向工程及軟件逆向工程的內(nèi)涵的分析,就得出了軟件逆向工程的具體任務(wù)。主要涉及以下方面。其一,達(dá)成分析系統(tǒng)的任務(wù)。這項(xiàng)任務(wù)具體是指對(duì)系統(tǒng)結(jié)構(gòu)以及系統(tǒng)的運(yùn)行過程進(jìn)行分析,但是,無論目標(biāo)系統(tǒng)所面向的是哪一種應(yīng)用領(lǐng)域,其分析系統(tǒng)大體上都是一致的,基本上都可分為系統(tǒng)的動(dòng)態(tài)信息及系統(tǒng)的靜態(tài)信息。目標(biāo)系統(tǒng)所面向的通常都是不同的應(yīng)用領(lǐng)域,要想更好地達(dá)成抽象目標(biāo)系統(tǒng)的具體任務(wù),通常需要具備相關(guān)領(lǐng)域的知識(shí)和豐富的專家經(jīng)驗(yàn)。其二是達(dá)成抽象系統(tǒng)的任務(wù)。其三是達(dá)成展現(xiàn)系統(tǒng)的任務(wù)。展現(xiàn)系統(tǒng)的最佳實(shí)現(xiàn)方式是使展現(xiàn)系統(tǒng)可視化。通過實(shí)現(xiàn)這幾項(xiàng)任務(wù)來實(shí)現(xiàn)幫助用戶更好地理解系統(tǒng)這一目的。

        2 常用的軟件逆向工程分析方法

        (1)程序切片法。程序切片技術(shù)具體指的是將程序進(jìn)一步簡(jiǎn)化為同某一特殊計(jì)算具有相關(guān)性的語(yǔ)句技術(shù)。這一軟件逆向工程分析方法源于數(shù)據(jù)流分析法。程序切片技術(shù)法在實(shí)際使用的過程中通常將程序進(jìn)行進(jìn)一步分解,將其分解成更小的切片代碼段,進(jìn)而使其關(guān)注點(diǎn)縮放到一個(gè)更小范圍內(nèi),而不需要關(guān)注整個(gè)程序。某一程序切片是由程序中的判定表達(dá)式和部分語(yǔ)句組成的集合。這些判定表達(dá)式和語(yǔ)句甚至?xí)o程序中的某一位置,如常用的行號(hào)標(biāo)識(shí)上所界定或使用的變量值產(chǎn)生相應(yīng)的影響。程序切片技術(shù)能夠幫助我們更深入地理解程序。

        (2)詞法分析和語(yǔ)法分析。這一軟件逆向工程分析法主要是針對(duì)程序源代碼進(jìn)行分析,進(jìn)而得到程序信息的多種類型的有用表示。其中,使用頻率最高的是交叉引用列表。借助于對(duì)語(yǔ)法的分析能夠得到分析樹和抽象語(yǔ)法樹AST這兩大類型的表示方法。其中,抽象語(yǔ)法樹AST涉及很多同程序?qū)嶋H內(nèi)容相關(guān)的細(xì)節(jié),其能夠?yàn)槔斫飧訌?fù)雜的程序奠定基礎(chǔ)。

        (3)動(dòng)態(tài)分析法。動(dòng)態(tài)分析法大多是在程序?qū)嶋H運(yùn)行的過程中進(jìn)行的,這一方法最基本的操作是植入程序。具體來說,植入程序其實(shí)是在某一全局范圍之內(nèi)對(duì)源代碼進(jìn)行更改或者添加一些額外操作的具體過程。動(dòng)態(tài)分析法所采取的基本原理是依托代碼的結(jié)構(gòu)信息,同時(shí)按照固定的規(guī)則給原有的程序代碼添加軟件觸發(fā)器。

        3 軟件逆向工程分析技術(shù)案例分析

        在實(shí)際運(yùn)用軟件工程分析技術(shù)的過程中,程序理解是最重要且最消耗資源的活動(dòng),要想更好地理解程序,必須從程序設(shè)計(jì)這一方面著手進(jìn)行。在實(shí)際操作過程中,要想更好地對(duì)某一軟件進(jìn)行維護(hù)并不容易,經(jīng)常會(huì)遇到缺失代碼的情況。下面假設(shè)缺乏某一軟件的源代碼,然后探討如何借助軟件逆向工程分析技術(shù)進(jìn)行軟件維護(hù)。

        第一步:結(jié)合對(duì)這一軟件的作用、性能以及性質(zhì)設(shè)計(jì)這些因素,來設(shè)計(jì)出相應(yīng)的驗(yàn)證假設(shè)內(nèi)容列表,然后結(jié)合相關(guān)內(nèi)容一邊進(jìn)行驗(yàn)證,一邊更好地理解這一軟件,在理解軟件代碼期間一步步假設(shè)內(nèi)容列表進(jìn)行修正,進(jìn)而深化對(duì)這一軟件系統(tǒng)程序的認(rèn)知和理解。第二步:對(duì)軟件執(zhí)行過程中的二進(jìn)制碼進(jìn)行分析可得知,這一二進(jìn)制碼是由多個(gè)函數(shù)組成的,具體分析步驟如下。首先,借助于IDA反匯編工具來分析出函數(shù)集合,具體如下所示。

        {(f1、f2、f3、f3、......fn)}

        然后繪制函數(shù)調(diào)用圖,圖中的一個(gè)節(jié)點(diǎn)代表的是一個(gè)fj,節(jié)點(diǎn)間的連接線所代表的是函數(shù)的調(diào)用關(guān)系,fp是被調(diào)用函數(shù),fq是調(diào)用函數(shù),fp是fq的子函數(shù),這一函數(shù)調(diào)用圖能夠較好地對(duì)整個(gè)軟件執(zhí)行過程中的函數(shù)關(guān)系進(jìn)行描述。其中一個(gè)節(jié)點(diǎn)代表的是一個(gè)函數(shù),并且每一節(jié)點(diǎn)都可以用函數(shù)控制圖表示出來。

        第三步:進(jìn)一步細(xì)化函數(shù),將其細(xì)化為基本塊來分析。同時(shí)還可借助于控制流圖來對(duì)二進(jìn)制文件中的函數(shù)進(jìn)行描述。每一函數(shù)又可被分解成若干個(gè)不同的基本塊?;緣K具體指的是程序遵照相應(yīng)的順序執(zhí)行的語(yǔ)句序列,其中,僅有一個(gè)入口和一個(gè)出口。第一個(gè)語(yǔ)句是入口,最后一個(gè)語(yǔ)句是出口。對(duì)一個(gè)基本塊本身來說,在具體執(zhí)行時(shí)僅能從入口進(jìn)入,從出口退出。基本塊具備的顯著特點(diǎn)具體如下:一旦基本塊中的第一條指令被執(zhí)行之后,相應(yīng)地,后續(xù)基本塊中的所有執(zhí)行都會(huì)按照順序執(zhí)行,且僅執(zhí)行一次。控制流的結(jié)點(diǎn)也是由基本塊組成的,主要是用來表示運(yùn)算、節(jié)點(diǎn)和節(jié)點(diǎn)間的有向邊代表控制流向。一個(gè)函數(shù)的控制流入口僅有一個(gè),但是卻可以有很多出口。圖2是函數(shù)的控制流圖。

        圖2 函數(shù)的控制流圖

        通過分析該圖可知,這一函數(shù)包含五個(gè)基本塊,六條有向邊。如果想生成控制流圖和函數(shù)調(diào)用關(guān)系圖就應(yīng)進(jìn)行如下操作。第一步應(yīng)對(duì)二進(jìn)制代碼的反匯編進(jìn)行深入分析,借助于IDE Pro SDK開發(fā)包有利于更好地對(duì)反匯編進(jìn)行分析,依托所得出的分析結(jié)果得到信息建立的控制流圖和函數(shù)調(diào)用關(guān)系圖。接著,以這兩大流程圖為基礎(chǔ)進(jìn)行相應(yīng)的斷點(diǎn)跟蹤,之所以要設(shè)置斷點(diǎn)主要是為了在執(zhí)行程序時(shí)對(duì)程序有更深入地理解。在設(shè)置斷點(diǎn)之后,程序到達(dá)了斷點(diǎn)將暫停程序。然后可將寄存器內(nèi)的數(shù)據(jù)和執(zhí)行路徑記錄下來,以方便更好地對(duì)斷點(diǎn)處的上下文環(huán)境和具體執(zhí)行情況進(jìn)行分析,借助于設(shè)計(jì)不同的斷點(diǎn)能夠使分析人員更好地明確程序的執(zhí)行方式,并理解程序的結(jié)構(gòu),進(jìn)而能夠更好地將之前的函數(shù)調(diào)用關(guān)系同程序的實(shí)際運(yùn)用信息有機(jī)結(jié)合起來,這樣一來,就能清楚地把握整個(gè)程序的脈絡(luò)。通過對(duì)程序中的數(shù)據(jù)流信息和控制流程進(jìn)行分析,能夠推導(dǎo)出數(shù)據(jù)并建立文檔。上述幾大步驟可密切配合起來并反復(fù)使用,這樣能更好地推導(dǎo)出整個(gè)軟件的脈絡(luò),并建立其開發(fā)文檔。

        4 結(jié)語(yǔ)

        綜上,在軟件維護(hù)中采用軟件逆向工程技術(shù)能節(jié)約軟件維護(hù)的資金和精力投入,程序員掌握這一技術(shù)不僅利于其更好地發(fā)揮軟件維護(hù)的實(shí)力,同時(shí)還能借助這一技術(shù)學(xué)習(xí)同行的先進(jìn)的理念和技術(shù)。

        [1]鄧銳,吳俊超,黃堅(jiān).逆向工程技術(shù)及其在模具設(shè)計(jì)制造中的應(yīng)用初探[J].山東工業(yè)技術(shù), 2017,(21):136-138.

        [2]劉曉東.在軟件維護(hù)中逆向工程的應(yīng)用探究[J].?dāng)?shù)字技術(shù)與應(yīng)用,2015,(12):123-123.

        [3]杜丹.逆向工程在軟件維護(hù)方面的應(yīng)用研究[J].軟件導(dǎo)刊,2014,(5):47-48.

        [4]杜華,余小東.逆向工程在軟件維護(hù)方面的應(yīng)用研究[J].電子技術(shù)與軟件工程, 2015,(11):136-138.

        [5]周小東.基于逆向工程技術(shù)與有限元分析的集成設(shè)計(jì)方法研究[D].廣東工業(yè)大學(xué),2016,38-40.

        [6]潘立業(yè).快速逆向工程技術(shù)及其在產(chǎn)品開發(fā)中的應(yīng)用分析[J].科技風(fēng), 2017,(9):103-104.

        猜你喜歡
        基本塊逆向程序
        基于級(jí)聯(lián)森林的控制流錯(cuò)誤檢測(cè)優(yōu)化算法
        逆向而行
        距離與權(quán)重相結(jié)合的導(dǎo)向式灰盒模糊測(cè)試方法
        一種檢測(cè)控制流錯(cuò)誤的多層分段標(biāo)簽方法
        試論我國(guó)未決羈押程序的立法完善
        “程序猿”的生活什么樣
        逆向解答
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        逆向工程技術(shù)及應(yīng)用
        国产精品国产三级国产av剧情 | 国产精品成人午夜久久| 久久99热精品免费观看麻豆| 久久精品中文字幕有码| 777米奇色狠狠俺去啦| 亚洲av无码资源在线观看| 国产亚洲曝欧美不卡精品| 毛片在线播放亚洲免费中文网| 国产成人精品999视频| 欧美大香线蕉线伊人久久| 97无码人妻一区二区三区蜜臀| 一本色道久久88加勒比综合 | 久久久久久久一线毛片| 国成成人av一区二区三区| 亚洲熟妇无码久久精品| 成人小说亚洲一区二区三区| a欧美一级爱看视频| 亚洲一区二区三区成人网| 男人扒开添女人下部免费视频| 国产精品美女久久久久久久| 久久久久无码精品国| 亚洲一区二区日韩精品在线| 亚洲精品夜夜夜妓女网| 国产区福利| 亚洲日本国产一区二区三区| 亚无码乱人伦一区二区| 日本高清色倩视频在线观看| 精品无码成人片一区二区| 久久精品国产9久久综合| 日本无码欧美一区精品久久| 中文字幕在线亚洲日韩6页手机版| 午夜精品一区二区久久做老熟女| 国产偷国产偷亚洲高清视频| 久久综合狠狠综合久久| 国产午夜视频免费观看| 大陆少妇一区二区三区| 女人被狂躁c到高潮视频 | 熟妇无码AV| 国产一区二区视频在线看| 精品久久久久久久久午夜福利| 狠狠久久久久综合网|