軟件逆向工程(Software Reverse Engineering)又稱軟件反向工程,是指從可運行的程序系統出發,運用解密、反匯編、系統分析、程序理解等多種計算機技術,對軟件的結構、流程、算法、代碼等進行逆向拆解和分析,推導出軟件產品的源代碼、設計原理、結構、算法、處理過程、運行方法及相關文檔等。通常,人們把對軟件進行反向分析的整個過程統稱為軟件逆向工程,把在這個過程中所采用的技術都統稱為軟件逆向工程技術。

       這里的軟件逆向工程,本質上不是剽竊,也不是破解,就跟日常生活中開鎖匠一樣的性質,如果您的軟件供應商已經消失,而你的軟件還在用,但是又需要增加一些功能或重新授權,而你的曾經的供應商已經消失,無法聯系,這個時候,我們你就跟門鑰匙不慎丟失,我們技術性開鎖,換鎖,為你解決軟件的后顧之憂,直接節約企業成本!

       軟件逆向工程最早是作為軟件維護的一部分出現的。早在 20 世紀 60 年代,隨著第三代計算機的產生,為了挽救大量運行在即將報廢的第二代計算機上的軟件,同時也為加速開發第三代計算機上的軟件,美國開始研制針對特定軟件的專門用途的逆編譯工具來進行軟件移植,并成功轉換了許多優秀軟件。這些逆編譯工具中大量使用了軟件逆向工程中的技術方法。此后軟件逆向工程技術逐步被各國所認識,并廣泛研究和應用到多個軟件技術領域中。

timg (5).jpg

       近幾年來,國內許多軟件公司相繼開展了軟件逆向工程的研究,針對網絡游戲的外掛產業的日益壯大就是軟件逆向工程發展的最好見證。電子工業出版社的《加密與解密》等系統叢書,看雪論壇等都為我國軟件逆向工程的發展作出了貢獻。

       2007 年 1 月 17 日,最高人民法院發布的第一個涉及不正當競爭案件審理的司法解釋明確指出:通過自行開發研制或者反向工程等方式獲得的商業秘密,將不被認定為反不正當競爭法有關條款規定的侵犯商業秘密行為。這樣,從法律上也為從事軟件逆向工程開發者掃除了最后一道障礙。可以預見,我國的軟件逆向工程必將迎來更加輝煌的明天。

      在對軟件進行逆向工程研究的時候,一般會依照以下幾個大的步驟來完成:

      1、研究保護方法,去除保護功能。大部分軟件開發者為了維護自己的關鍵技術不被侵犯,采用了各式各樣的軟件保護技術,如序列號保護、加密鎖、反調試技術、加殼等。要想對這類軟件進行逆向,首先要判斷出軟件的保護方法,然后去詳細分析其保護代碼,在掌握其運行機制后去除軟件的保護。

      2、反匯編目標軟件,跟蹤、分析代碼功能。在去除了目標軟件的保護后,接下來就是運用反匯編工具對可執行程序進行反匯編,通過動態調試與靜態分析相結合,跟蹤、分析軟件的核心代碼,理解軟件的設計思路等,獲取關鍵信息。

      3、生成目標軟件的設計思想、架構、算法等相關文檔,并在此基礎上設計出對目標軟件進行功能擴展等的文檔。

      4、向目標軟件的可執行程序中注入代碼,開發出更完善的應用軟件

      軟件逆向工程可以讓人們了解程序的結構以及程序的邏輯,深入洞察程序的運行過程,分析出軟件使用的協議及通信方式,并能夠更加清晰地揭露軟件機密的商業算法等。因此逆向工程的優勢是顯而易見的。

timg (6).jpg

目的和意義

      1、由于軟件生產技術水平還沒有達到人們所期望的程度,所以從頭開發軟件已經不適應社會對軟件需求的不斷增長,為了避免重復勞動,提高軟件生產的效率和質量,緩解軟件危機,必須充分利用和改造現有軟件,對現有軟件進行再設計、再工程,使軟件功能得到大幅提高以滿足用戶的需要,而再設計(Redesign)和再工程(Reengineering)都是軟件逆向工程的形式之一。再工程是指在現有系統基礎上,修改系統并組裝成新的形式。

      2、目前運行的許多系統由于某些原因,例如其運行環境已改變,或者是根據業務的需要對其功能要進行調整,導致它們必須進行演化才能繼續使用。這些系統在經歷多年運行之后,包含了眾多的知識,包括系統需求、設計決策和業務規則等,通過軟件逆向工程將這些軟件系統轉化為易演化系統,是充分有效地利用這些有用資產的良好途徑。軟件逆向工程可以從這些系統的程序源代碼出發,導出切實可用的信息。

       3、在已發布的軟件中,許多優秀軟件生產廠家出于技術保護等原因沒有向用戶開放源代碼或者不提供源代碼,需要用戶自己去恢復,此時對軟件進行逆向工程研究是最好的方法。

       4、現今的商業社會把軟件科學納入一種相對封閉的范疇,為了追求利潤,一些軟件業的霸主試圖進行知識的壟斷,它的直接體現就是鼓勵普通用戶和大多數程序員把軟件看成“黑箱”,使得它們不去關心軟件的運行機制,把軟件的生產變成類似車間加工的一道道流程,卻隔斷了人們深入研究軟件科學的通路。而作為開放源代碼的前期工程,軟件逆向工程對整個開放源代碼工程有著至關重要的作用。

曼彻斯特码编码解码