逆向工程

逆向工程

機械裝置

編輯

隨著電腦輔助設計的流行,逆向工程變成了一種能根據現有的物理部件通過CAD、CAM、CAE或其他軟體構築3D虛擬模型的方法。[1]逆向工程的過程採用了通過測量實際物體的尺寸並將其製作成3D模型的方法,真實的物件可以通過如CMMs、雷射掃描器、結構光源轉換儀,或者X射線斷層成像等這些3D掃描技術進行尺寸測量。這些測量資料通常被認作是點雲,缺乏拓撲資訊並且同時通常會被製作成更有用格式例如多邊形網格,NURBS曲線或者CAD模型。由於點雲本身並不像3D軟體裡的模型那樣直觀,所以如同3-matic(英語:Materialise NV)、Imageware、PolyWorks(德語:PolyWorks)、Rapidform(法語:Rapidform)或者傑魔公司等這些軟體都提供了將點雲變成能可視圖像,或者被其他應用軟體如3D CAD、CAM、CAE辨識的格式的功能。

反向工程同時會被需要將真實的幾何體應用在虛擬的數字開發環境中的商業活動中應用,比如將自己產品或者競爭者的三維資料數位化。通過這種手段可以分析出產品的運作方式,部件構成,估計預算和辨識潛在的侵權行為等。

價值工程也是商業中應用的類似手段。不過價值工程的目的是通過反構造和分析產品來找到節省開銷的辦法。

軟體

編輯

由於「逆向工程」一詞用在軟體工程(簡稱「軟工」)領域中的具體含義模糊不清,Chikofsky和Cross為此寫了篇文章,以闡清及區分「逆向工程」與各種相近的概念。據文章所述,逆向工程是一種分析目標系統的過程,其目的是辨識出系統的各個組件以及它們之間的關係,並以其它的形式或在較高的抽象層次上,重建系統的表徵(Representations)。[2] 軟體逆向工程也可被視作「開發周期的逆行」。[3]

在此定義下,對一項軟體程式進行逆向工程,類似於逆行傳統瀑布模型中的開發步驟,即把實現階段的輸出(即軟體程式)還原回在設計階段所做的構思。軟體逆向工程僅僅是一種檢測或分析的過程,它並不會更改目標系統(否則就成了軟體再工程)。

軟體防篡改技術被用於遏制對專有軟體進行逆向工程及再工程。實際應用中出現了兩類逆向工程。第一種,軟體的原始碼可用,但是更高層次的部分幾乎沒有描述文件或者描述文件不再適用或者遺失。第二種,軟體沒有可用的原始碼,任何能找到它的原始碼的努力都被稱為逆向工程。[來源請求]大部分人都熟悉這個詞的第二種用法。軟體的逆向工程可以使用淨室技術來避免侵犯著作權。

軟工中的黑箱測試與逆向工程有很多共同點,但黑箱測試人員常供以API以作測試,並且測試的目的就是通過外部攻擊,找出程式漏洞和未歸檔的特性。

逆向工程的其他目的包括:安全審查、 解除複製保護(又稱破解)、繞過消費類電子產品中常設有的訪問限制、客製化嵌入式系統(例如引擎管理系統)、產品內部修補或更新、給功能不全的廉價硬體(例如某些顯示卡晶片組)添加額外功能,或僅為滿足好奇心。

二進制軟體

編輯

對最終程式的二進制代碼所進行的逆向工程被稱為「代碼反向工程」,或簡稱RCE(Reverse Code Engineering)。[4]例如,我們可以用Jad對Java平台的二進制碼進行反編譯。一個著名的逆向工程案例是,首個由非IBM公司所實現的IBM個人電腦中的BIOS,這開創了IBM PC相容機產業,使得IBM PC相容機成為多年來的主流電腦硬體平台。一個以軟體逆向工程為樂的團體例子是CORE(Challenge Of Reverse Engineering,意為「挑戰逆向工程」)。在美國,軟體逆向工程只要遵守著作權法的合理使用規定,都是受保護的。[5]成功的軟體逆向工程專案有:

Samba:一個允許非Windows系統與Windows系統共享檔案的開源專案。由於微軟沒有公開Windows檔案分享機制的資訊,Samba必須作逆向工程,以便在非Windows系統上,仿真出同樣的行為。

Wine:對Windows API做了同樣的工作,

OpenOffice.org:對Microsoft Office檔案格式作逆向工程。

ReactOS:竭力在ABI及API上,相容NT系Windows系統,以便讓為Windows所編寫的軟體和驅動程式可以在其上執行。

WindowsSCOPE:用來監測及分析Windows系統主記憶體的實況內容。

二進制軟體技術

編輯

軟體逆向工程有多種實現方法,主要有三:

分析通過資訊交換所得的觀察。最常用於協定逆向工程,涉及使用匯流排剖析器(英語:Bus analyzer)和封包嗅探器。在接入電腦匯流排或網路的連接,並成功截取通訊資料後,可以對匯流排或網路行為進行分析,以製造出擁有相同行為的通訊實現。此法特別適用於裝置驅動程式的逆向工程。有時,由硬體製造商特意所做的工具,如JTAG埠或各種除錯工具,也有助於嵌入式系統的逆向工程。對於微軟的Windows系統,受歡迎的底層除錯器有SoftICE。

反組譯,即藉用反組譯器,把程式的原始機器碼,翻譯成較便於閱讀理解的組譯代碼。這適用於任何的電腦程式,對不熟悉機器碼的人特別有用。流行的相關工具有Interactive Disassembler。

反編譯,即藉用反編譯器,嘗試從程式的機器碼或位元組碼,重現高階語言形式的原始碼。

原始碼

編輯

許多UML工具涉及到匯入原始碼生成UML圖,即「逆向工程」。

積體電路和智慧卡

編輯

分析智慧卡的逆向工程具有侵入性和破壞性,智慧卡被層層刮掉用電子顯微鏡拍照。這種技術可以完整地揭示出智慧卡的硬體和軟體部份。主要的問題就是,把所有的東西按正確的順序放好以找出每一個部件是如何工作的。工程師們用打亂主記憶體位置的方法隱藏密碼和操作,例如busscrambling[6][7]。有時甚至可以在智慧卡執行的時候用探針直接測量電壓,設計師則用感應器來檢測和防止。[8]破壞支付業務中使用的智慧卡很困難,只有大晶片製造商使用那些專業的裝置。況且,和其他安全機制例如陰影帳戶相比,這種方法回報太低。

軍事

編輯

逆向工程經常被用在軍事上,用來複製從戰場上由常規部隊或情報活動獲得的別國之技術、裝置、資訊或其零件。二戰和冷戰中經常被用到。二戰以來的著名例子有:

德國桶:英美軍注意到德軍有一種設計絕妙的油桶,於是就用逆向工程複製了這些桶。這些被泛稱為「可攜式油桶」。

四式7.5公分高射炮:日本從中國戰場擄獲的波佛斯75毫米口徑M1929高射炮上的逆向工程,產生四式7.5公分高射炮[9]並搭配日本的九八式六噸牽引車使用,拖弋速度可達時速45公里[10],並擁有快速放列的作戰的能力。[10]

圖波列夫Tu-4:三架飛往日本的B-29「超級堡壘」轟炸機迫降到了蘇聯。蘇聯沒有類似的戰略轟炸機,就決定複製B-29。幾年後他們開發出了Tu-4,幾近完美的複製品。

V-2火箭:戰爭結束時V2的技術文件和相關技術被西方聯盟俘獲。蘇聯和被俘的德工程師要用俘獲的構件重建技術文件和圖紙,用於生產這種導彈的代件。R-1啟動了戰後蘇聯導彈畫,一直到R-7,並導致了太空競賽。

K-13/R-3S導彈(北約代號為AA-2 'Atoll)是蘇聯對AIM-9響尾蛇的逆向工程複製品。早期傳說一枚臺灣AIM-9B射中中國大陸MiG-17後沒有爆炸,這枚導彈留在機身裡,飛行員帶著這枚導彈返回了基地。根據蘇聯公開的資料則是由墜毀在中國境內的美國海軍戰鬥機殘骸上取得。

BGM-71 TOW導彈:1975年三月,伊朗與休斯導彈系統公司的關於TOW和Maverick導彈合作的談判因價格體系的分歧停止了,接下來的1979年革命結束了這種合作的所有計劃。伊朗成功地對這種導彈進行逆向工程,目前正在生產他們自己的複製品:圖芬(Toophan)。

墨爾本號航空母艦於1985年作為廢鐵賣給了中國聯合拆船公司,儘管已拆除全部武器、電子裝置並焊死舵機,但仍保留了完整的蒸汽彈射器及著落系統,中華人民解放軍因此進行技術資料搜集,並在陸地上復刻了全套系統並驗證了成果,船隻也延續到2002年開始拆解工作。003型航母原計劃也是使用該套系統,最終電磁彈射器也同樣研製成功而未能應用。

🎀 相关推荐

网络用语PS是什么意思?
365bet网上足球

网络用语PS是什么意思?

📅 07-18 👀 1441
刷bios是什么意思(刷BIOS的定义与操作方法)
365bet官方投注网址

刷bios是什么意思(刷BIOS的定义与操作方法)

📅 07-17 👀 1139
中国足球先生历届得主(附球员所在俱乐部)
365手机版游戏中心官网

中国足球先生历届得主(附球员所在俱乐部)

📅 07-17 👀 6279