逆向工程(又名反向工程,Reverse Engineering-RE)是對產(chǎn)品設(shè)計過程的一種描述。在2007年初,我國相關(guān)的法律為逆向工程正名,承認(rèn)了逆向技術(shù)用于學(xué)習(xí)研究的合法性。

在工程技術(shù)人員的一般概念中,產(chǎn)品設(shè)計過程是一個從設(shè)計到產(chǎn)品的過程,即設(shè)計人員首先在大腦中構(gòu)思產(chǎn)品的外形、性能和大致的技術(shù)參數(shù)等,然后在詳細(xì)設(shè)計階段完成各類數(shù)據(jù)模型,最終將這個模型轉(zhuǎn)入到研發(fā)流程中,完成產(chǎn)品的整個設(shè)計研發(fā)周期。這樣的產(chǎn)品設(shè)計過程我們稱為“正向設(shè)計”過程。逆向工程產(chǎn)品設(shè)計可以認(rèn)為是一個從產(chǎn)品到設(shè)計的過程。簡單地說,逆向工程產(chǎn)品設(shè)計就是根據(jù)已經(jīng)存在的產(chǎn)品,反向推出產(chǎn)品設(shè)計數(shù)據(jù)(包括各類設(shè)計圖或數(shù)據(jù)模型)的過程。從這個意義上說,逆向工程在工業(yè)設(shè)計中的應(yīng)用已經(jīng)很久了。比如早期的船舶工業(yè)中常用的船體放樣設(shè)計就是逆向工程的很好實例。
隨著計算機技術(shù)在各個領(lǐng)域的廣泛應(yīng)用,特別是軟件開發(fā)技術(shù)的迅猛發(fā)展,基于某個軟件,以反匯編閱讀源碼的方式去推斷其數(shù)據(jù)結(jié)構(gòu)、體系結(jié)構(gòu)和程序設(shè)計信息成為軟件逆向工程技術(shù)關(guān)注的主要對象。軟件逆向技術(shù)的目的是用來研究和學(xué)習(xí)先進的技術(shù),特別是當(dāng)手里沒有合適的文檔資料,而你又很需要實現(xiàn)某個軟件的功能的時候。也正因為這樣,很多軟件為了壟斷技術(shù),在軟件安裝之前,要求用戶同意不去逆向研究。 逆向工程的實施過程是多領(lǐng)域、多學(xué)科的協(xié)同過程。
方法實現(xiàn)——軟件逆向工程有多種實現(xiàn)方法,主要有三:
1.分析通過信息交換所得的觀察。
最常用于協(xié)議逆向工程,涉及使用總線分析器和數(shù)據(jù)包嗅探器。在接入計算機總線或網(wǎng)絡(luò)的連接,并成功截取通信數(shù)據(jù)后,可以對總線或網(wǎng)絡(luò)行為進行分析,以制造出擁有相同行為的通信實現(xiàn)。此法特別適用于設(shè)備驅(qū)動程序的逆向工程。有時,由硬件制造商特意所做的工具,如JTAG端口或各種調(diào)試工具,也有助于嵌入式系統(tǒng)的逆向工程。對于微軟的Windows系統(tǒng),受歡迎的底層調(diào)試器有SoftICE。
2.反匯編,即使用反匯編器,把程序的原始機器碼,翻譯成較便于閱讀理解的匯編代碼。這適用于任何的計算機程序,對不熟悉機器碼的人特別有用。流行的相關(guān)工具有OllyDebug和IDA。
3.反編譯,即使用反編譯器,嘗試從程序的機器碼或字節(jié)碼,重現(xiàn)高級語言形式的源代碼。
上一篇:你知道三維測量的方式嗎?