反向工程

反向工程

産品設計技術再現過程
逆向工程(又稱逆向技術),是一種産品設計技術再現過程,即對一項目标産品進行逆向分析及研究,從而演繹并得出該産品的處理流程、組織結構、功能特性及技術規格等設計要素,以制作出功能相近,但又不完全一樣的産品。[1]其主要目的是在不能輕易獲得必要的生産信息的情況下,直接從成品分析,推導出産品的設計原理。逆向工程可能會被誤認為是對知識産權的嚴重侵害,但是在實際應用上,反而可能會保護知識産權所有者。例如在集成電路領域,如果懷疑某公司侵犯知識産權,可以用逆向工程技術來尋找證據。
    中文名:反向工程 外文名:Reverse Engineering, 簡稱:RE 别稱:逆向工程或反求工程

名片

反向工程指通過技術手段對從公開渠道取得的産品進行拆卸、測繪、分析等而獲得的有關技術信息。反向工程在司法解釋中被定義為,通過技術手段對從公開渠道取得的産品進行折卸、測繪、分析等而獲得該産品的有關技術信息。為避免該條款被濫用,司法解釋同時規定:“當事人以不正當手段知悉了他人的商業秘密之後,又以反向工程為由主張獲取行為合法的,不予支持。”

簡介

反向工程的方法在集成電路工業的發展中起着巨大的作用,世界各國廠商無不采用這種方法來了解别人産品的發展,如果嚴格禁止這種行為,便會對集成電路技術的進步造成影響,所以各國在立法時都在一定條件下将此視為一種侵權的例外。

為了教學、分析和評價布圖設計中的概念、技術或者布圖設計中采用的電路、邏輯結構、元件配置而複制布圖設計以及在此基礎上将分析評價結果應用于具有原創性的布圖設計之中,并據此制造集成電路,均不視為侵權。但是,單純地以經營銷售為目的而複制他人受保護的布圖設計而生産集成電路,應視為侵權行為。

對于計算機軟件,同樣存在着反向工程的問題,其具體步驟大緻如下。從目标程序出發,對目标程序進行反編譯,使其還原為人可直接閱讀的源程序;通過閱讀作出該程序的流程圖,分析其邏輯結構,最後搞清其全部功能;在了解他人程序結構和功能後,利用這些結果編制出新的程序。

到目前為止,尚無任何國家在其軟件保護法中允許對軟件實施反向工程的行為。這是因為各國的軟件保護多采用版權法的形式。反編譯的行為可視為原作品的複制,而重新編制新軟件可視為改編作品,依照版權法都是不允許的。因為軟件作為一種技術産品要考慮到産品的兼容性,所以絕對禁止反向工程行為可能影響軟件技術的發展。

技術

反向工程技術,是以實物(産品)、軟件、圖紙、程序、技術文件、影像(圖片、照片)作為研究對象,應用現代設計理論方法、生産工程學、材料學和有關專業知識(測量學、信号自動處理)進行系統深入的分析和研究,是一種快捷的新産品開發技術。

反向工程技術反求内容廣泛,包括:産品的結構和工作原理、産品的材料和力學性能、制造産品的技術資料(圖紙、制造工藝、裝配工藝、産品檢驗)、産品技術标準(型号、規格、标準)。其本質是對先進産品進行消化、吸收,再開發和創新,設計和制造出具有競争力的新産品。縮短新産品的開發周期,提高新産品開發的一次成功率,從而提高企業在市場中的競争力。

反向工程技術主要應用于:産品(零件)的仿制和複制,複雜産品(零件)的設計,産品(零件)的檢驗、改進設計,複雜形體的CAD建模,産品設計與快速成形技術等。

芯片工程

芯片反向工程,又稱芯片解密(IC解密),單片機解密,就是指單片機攻擊者憑借專用設備或自制設備,利用單片機芯片設計上的漏洞或軟件缺陷,通過多種專業技術手段,直接提取加密單片機中燒寫文件的關鍵信息,并可以自己複制燒寫芯片或反彙編後自己參考研究。這種反向獲取單片機片内程序的方式就叫芯片反向工程。

國内有人認為芯片反向工程其實就是抄襲。相比之下,在國外反向工程是伴随着積體電路工業發展起來的,1984年“半導體芯片保護法案(SemiconductorChipProtectionActof1984)”誕生,該法案明确了反向工程的合法性并且嚴格地區分了侵權和反向工程。中國也于2001年頒布實施了《積體電路布圖保護條例》。在芯片反向工程這個問題上為什麼在認識上有如此大的差别呢?下面我們将以龍人計算機為例,從芯片反向工程所從事的研究範圍和研究手段等方面來透視芯片反向工程。

芯片反向工程其實就是芯片分析,芯片分析涉及三大關鍵技術∶樣品預處理技術;芯片分析軟體技術和芯片分析技術(也就是電路分析能力)。以上三項技術相輔相成,缺一不可,其中一項薄弱都會影響到企業分析芯片的能力和水準。

廣東龍人列出了芯片分析的流程,我想這有助于大家進一步了解什麼是芯片反向工程。

分析流程∶

(1)拍照∶芯片逐層去封裝,拍照并對準拼接獲得各層芯片照片。

(2)建庫∶通過芯片照片提取其中的單元器件建立單元庫。

(3)标注∶通過單元庫在芯片照片上标記單元器件及器件之間的連接關系。

(4)整理∶把标注出的單元器件整理成為結構清晰的電路圖。

(5)層次化∶通過從下至上分析系統的邏輯及機制,從而建立從系統圖表到傳輸級電路的層次化電路圖和功能模組。

由上面的分析流程可以看出芯片分析其實就是一個對芯片的解剖過程,在這過程中可以獲得芯片的很多相關資料,這些資料可以用來分析學習先進的技術,但是也可以用來複制IC。正如龍人計算機公司總經理夏先生所說“反向工程的不當運用有可能導緻侵犯知識産權的後果”。對技術落後的廠商來說實施反向工程可以對先進的技術進行深入的分析、理解,從中找出有規律的東西來,領略設計者的先進設計思想。

如果能進一步消化這些技術并在此基礎上進行創新應用到自己的産品上去,那将是一件好事,這樣可以縮短自己和先進廠商技術上的差距。如果做反向工程單純是為了複制IC那就是錯誤的了。一味地跟在先進技術後面跑沒有自己的想法,那永遠隻能充當掉隊者的角色。反向工程在國外還被用來做專利分析為法律提供支援。

PCB

PCB反向工程,又稱PCB抄闆,即在已經有電子産品實物和電路闆實物的前提下,利用反向研發技術手段對電路闆進行逆向解析,将原有産品的PCB文件、物料清單(BOM)文件、原理圖文件等技術文件以及PCB絲印生産文件進行1:1的還原,然後再利用這些技術文件和生産文件進行PCB制闆、元器件焊接、飛針測試、電路闆調試,完成原電路闆樣闆的完整複制。

智能卡

分析智能卡的反向工程具有侵入性和破壞性,智能卡被層層刮掉用電子顯微鏡拍照。這種技術可以完整地揭示出智能卡的硬件和軟件部份。主要的問題就是,把所有的東西按正确的順序放好以找出每一個部件是如何工作的。工程師們用打亂内存位置的方法隐藏密碼和操作,例如busscrambling。有時甚至可以在智能卡運行的時候用探針直接測量電壓,設計師則用感應器來檢測和防止。

破壞支付業務中使用的智能卡很困難,隻有大芯片制造商使用那些專業的設備。況且,和其他安全機制例如陰影帳戶相比,這種方法回報太低。

與軟件

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

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

軟件防篡改技術被用于遏制對專有軟件進行反向工程及再工程。實際應用中出現了兩類反向工程。第一種,軟件的源代碼可用,但是更高層次的部分幾乎沒有描述文檔或者描述文檔不再适用或者丢失。第二種,軟件沒有可用的源代碼,任何能找到它的源代碼的努力都被稱為反向工程。大部分人都熟悉這個詞的第二種用法。軟件的反向工程可以使用淨室技術(CleanRoomDesign)來避免侵犯版權。

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

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

二進制

對最終程序的二進制代碼所進行的反向工程被稱為“代碼反向工程”,或簡稱RCE(ReverseCodeEngineering)。例如,我們可以用Jad對Java平台的二進制碼進行反編譯。一個著名的反向工程案例是,首個由非IBM公司所實現的IBM個人電腦(PC)中的BIOS,這開創了IBMPC兼容機産業,使得IBMPC兼容機成為多年來的主流計算機硬件平台。一個以軟件反向工程為樂的團體例子是CORE(ChallengeOfReverseEngineering,意為“挑戰反向工程”)。在美國,軟件反向工程隻要遵守版權法的合理使用規定,都是受保護的。成功的軟件反向工程項目有:

1.Samba:一個允許非Windows系統與Windows系統共享文件的開源項目。由于微軟沒有公開Windows文件共享機制的信息,Samba必須作反向工程,以便在非Windows系統上,仿真出同樣的行為。

2.Wine:對WindowsAPI做了同樣的工作,

3.OpenOffice:對MicrosoftOffice文件格式作反向工程。

4.ReactOS:竭力在ABI及API上,兼容NT系Windows系統,以便讓為Windows所編寫的軟件和驅動程序可以在其上運行。

5.WindowsSCOPE:用來監測及分析Windows系統内存的實況内容。

二進制軟件技術

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

1.分析通過信息交換所得的觀察。最常用于協議反向工程,涉及使用總線分析器和數據包嗅探器。在接入計算機總線或網絡的連接,并成功截取通信數據後,可以對總線或網絡行為進行分析,以制造出擁有相同行為的通信實現。此法特别适用于設備驅動程序的反向工程。有時,由硬件制造商特意所做的工具,如JTAG端口或各種調試工具,也有助于嵌入式系統的反向工程。對于微軟的Windows系統,受歡迎的底層調試器有SoftICE。

2.反彙編,即借用反彙編器,把程序的原始機器碼,翻譯成較便于閱讀理解的彙編代碼。這适用于任何的計算機程序,對不熟悉機器碼的人特别有用。流行的相關工具有InteractiveDisassembler。

3.反編譯,即借用反編譯器,嘗試從程序的機器碼或字節碼,重現高級語言形式的源代碼。

軍事上的應用

反向工程經常被用在軍事上,用來複制從戰場上由常規部隊或情報活動獲得的别國的技術、設備、信息或其零件。二戰和冷戰中經常被用到。二戰以來的著名例子有:

1.便攜油桶:英美軍注意到德軍有一種設計絕妙的油桶,于是就用反向工程複制了這些桶。這些被泛稱為“便攜油桶”。

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

3.V2火箭:戰争結束時V2的技術文檔和相關技術被西方聯盟俘獲。蘇聯和被俘的德工程師要用俘獲的構件重建技術文檔和圖紙,用于生産這種導彈的代件。R-1啟動了戰後蘇聯導彈計劃,一直到R-7,并導緻了太空競賽。

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

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

相關法律

在美國及其他許多國家,制品或制法都受商業秘密保護,隻要合理地取得制品或制法就可以對其進行反向工程。專利需要把你的發明公開發表,因此專利不需要反向工程就可進行研究。反向工程的一種動力就是确認競争者的産品是否侵權專利或侵犯版權。

為了互用性(例如,支持未公開的文件格式或硬件外圍),而對軟件或硬件系統進行的反向工程被認為是合法的,雖然專利持有者經常反對并試圖打壓以任何目的對他們産品進行的反向工程。

為了獲取一個有版權的計算機程序中隐含的思想和功能元素且有合法的理由要獲取,當隻有拆解這一種方法時,根據法律判定,拆解是對有版權作品的公平使用。

中國最高人民法院2007年1月17日公布“關于審理不正當競争民事案件應用法律若幹問題的解釋”,首次明确規定:通過自行開發研制或者反向工程等方式獲得的商業秘密,不認定為反不正當競争法有關條款規定的侵犯商業秘密行為。即通過自行研發或反向工程獲得商業秘密不屬非正當競争行為,正式為反向工程正名。

相關詞條

相關搜索

其它詞條