前言:尋找寫作靈感?中文期刊網用心挑選的軟件逆向工程技術探討,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:隨著信息時代的不斷發展,人們對于軟件的需求越來越多,對軟件的功能要求也越來越高,僅僅依靠軟件正向工程無法滿足人們的需求,因此軟件逆向工程技術應運而生,為人們在設計和使用軟件的過程中,帶來了極大的方便。作為一名軟件技術人員,我們必須時刻關注行業技術發展動態,對各種新技術的發展和應用有一個全面的了解,以此來確保自身能夠在了解新技術、掌握先進知識的基礎上,具備較高的職業素養,為自身技術創新活動的開展奠定堅實的基礎。為此,本文以當前較為先進的逆向工程技術為研究對象,通過對軟件逆向工程分析方法的介紹,結合目前軟件設計行業發展趨勢以及逆向工程技術特點,對軟件逆向工程技術未來的發展方向做出了合理、科學的預設。希望以此來為軟件逆向工程技術未來在各行業中的良好運用提供更多科學的意見和建議。
關鍵詞:軟件工程;軟件逆向工程;逆向工程;逆向工程分析
1相關概念解析
逆向工程是一種對產品設計技術予以再現的過程,即以目標產品為對象在逆向分析的作用下,對產品設計及處理的主要技術規格、功能、組織結構、特性、處理流程等相關設計要素進行重新演繹和再現,以此來幫助設計人員明晰產品設計流程、要素、特點等,在原有產品設計創新改革的基礎上,為人們設計并制造出功能相仿的產品提供必要的材料基礎。因此,單從技術方面考量,我們還可以將逆向工程稱之為逆向技術。從逆向工程的發展來看,最初其只是源于軍事、商業等領域的硬件分析,其主要目的在于幫助設計人員難以確定產品生產信息的情況下,從產品自身著手,通過產品設計流程、要素、功能、特性等內容的分析,來幫助設計人員對產品設計原理進行反向推導。在社會現代化、智能化不斷發展的趨勢下,計算機技術也在社會各領域得到了更加廣泛式的應用與發展。而為了滿足市場日益多元化的軟件功能需求,軟件開發技術一時之間得到了迅猛的發展。以某個特定的軟件為基礎,通過反匯編閱讀源碼的方式去對程序設計、體系結構、數據結構等信息進行推斷,已經成為了當前軟件逆向工程的主要關注和研究對象。因此,軟件逆向工程技術的目的是在于對先進技術進行研究、學習,在缺乏相關文檔資料的情況下,可以通過對現實軟件功能的解析、研究來幫助我們明晰其中所用到的各項技術。當前軟件逆向工程技術常用軟件主要包括,用于動態調試程序的OllyDbg、用于調試驅動程序的SoftICE、反匯編軟件的IDAPro。
2軟件逆向工程技術研究概況
軟件逆向工程技術最初被用作軟件維護工作而存在。上世紀60年代,在計算機網絡技術不斷革新式發展的作用下,第三代計算機出現在我們面前,為了加速三代計算機軟件的開發同時也為了挽救二代計算機上正在運行的常用軟件,美國專門制定了軟件移植任務用于對特定軟件進行逆向編譯,以此來實現對優秀軟件的轉換,將其從幾近消亡的二代計算機上移植到三代計算機當中,促進其作用的繼續發揮。這些逆編譯工具當中大量運用了軟件逆向工程技術方法。此后基于軟件逆向工程技術自身的巨大優勢其被逐漸運用到各國的軟件開發技術領域當中,并得到了眾多技術研究人員的認可。國外的CMUSEI專門成立了相應的再工程研究中心,在軟件逆向工程的作用下用于對程序的研究和推廣。20世紀80年代后期,針對軟件逆向工程以及軟件版權之間矛盾的解決,各國紛紛從立法角度,對該領域的研究工作進行了立法約束,明確指出軟件逆向工程屬于合法范圍,允許人們對軟件進行逆向工程分析以用于個人學習和領域研究。我國的逆向工程技術發展于80年代,以北大開發的“青鳥軟件生產線系統”為主要成果,其中所涵蓋的逆向工程工具可以用于C++語言相關程序代碼的逆向分析。近年來以國內高等院校為主圍繞軟件逆向工程展開了全面的研究,電子工業出版社的《加密與解密》系列叢書,更是對我國軟件逆向工程的研究工作做出了突出貢獻。2007年1月我國最高法院也通過立法手段明確了逆向工程技術的合法性,這為我國軟件逆向工程研究工作的有序開展奠定了堅實的基礎,掃除了其最后障礙。相信隨著我國計算機網絡技術的發展,人們對于軟件逆向工程技術的研究深度和廣度也會更加深入化,我國的軟件逆向工程技術也將會迎來一個更加美好的未來發展。
3軟件逆向工程的分析方法
3.1詞法分析和語法分析
對于軟件工程來講,代碼是實現軟件的重要部分,代碼部分的質量對于后續軟件的維護成本會產生重要的影響。因此,詞法分析和語法分析是軟件逆向工程中常用的分析方法之一,主要是利用分析樹或者是抽象語法樹,對軟件的源碼進行分析,從而得到軟件源碼的相關實現細節,進而更好地支持軟件逆向工程的分析。
3.2圖形化的方法
這一部分主要是針對軟件的具體實現流程進行的,利用圖形化工具,將軟件的主要工作流程、控制流程、數據流程、各個對象之間的關系等進行描述,例如:軟件的流程圖就是對軟件的主要工作流程進行描述,能夠幫助人們更好地了解軟件的使用過程;數據流程,主要是介紹軟件中對應的輸入和相關的輸出,可以使得人們了解哪些數據是有效的,哪些數據是無效的;將軟件作為一個黑盒子,從軟件的數據輸入輸出更好地了解軟件的功能;對象關系圖,這個是針對軟件實現中的具體抽象對象來開展的,不同對象之間會存在一定的關系,例如:包含、繼承、依賴等關系,這個與其他流程而言,主要是從軟件專業人員的角度對軟件進行分析,從而更好地了解軟件的設計及實現。
3.3程序切片
顧名思義,程序切片是對程序的某個部分進行分析,而不是針對整個程序來進行分析,這種軟件逆向工程分析方法主要適用于軟件中的關鍵性邏輯,對這部分邏輯進行重點測試和分析,了解程序的具體實現過程,從而更好地對關鍵步驟進行分析,確保關鍵步驟可以實現功能,并能夠支持一些異常的輸入和輸出。
3.4動態分析
上面介紹的幾種方法,主要是針對靜態的軟件實現代碼或者實現邏輯而言的,而動態的分析則是針對軟件具體運行后的行為進行分析,能夠更加全面地分析軟件的整個工作過程。動態分析一種基本的分析方法就是進行植入,在一定的范圍內植入一些關鍵性的分析代碼,讓這些代碼在軟件運行后開始進行工作,從而可以對軟件的運行過程進行監控。當軟件在運行過程中,遇到某種情況可以觸發植入代碼的條件時,植入代碼就會產生相應的輸出,從而幫助分析人員更好地了解軟件的具體運行過程。
4軟件逆向工程技術未來的發展方向
信息社會的到來,使得軟件的應用范圍逐步擴大,深入各行各業,而目前軟件的規模在不斷擴大,軟件的實現邏輯變得更加復雜,很多軟件將多種功能集中在一起,同時有能夠實現一些個性化的邏輯。所以,軟件逆向工程技術在分析軟件時得到了廣泛的應用,經過本文的論述,認為軟件逆向工程技術未來的發展方向,主要包括以下幾個方面:
4.1與具體領域的技術進行結合
目前,軟件在各行各業中都有著廣泛的應用,而每個行業對于軟件的要求是不同的,例如:會計行業要求軟件計算的準確無誤,銀行方面要求軟件可以處理更多的異常情況,部分行業要求軟件具有更高的性能等等。因此,軟件逆向工程技術未來的發展方向會與不同的領域進行結合,從而形成具有領域特點的逆向工程技術,更好地為具體的領域提供軟件服務,幫助人們更好地了解軟件在某個領域中的應用,也能夠進一步加深軟件在該領域的應用深度。
4.2更加智能化
目前,人工智能技術得到了廣泛的應用,本文經過分析認為可以將人工智能與軟件逆向工程技術結合起來,通過進行不同軟件逆向工程技術的應用和分析,讓人工智能積累到更多的特征數據,更好地進行學習和成長,能夠更加智能地應用軟件逆向工程對軟件進行分析;同時,還可以與用戶進行更加友好的交互,深入理解用戶的需求,更好地滿足用戶的功能;對于用戶不滿的功能進行反復修改,最終達到用戶的滿意。另外,還可以使用人工智能技術對軟件故障進行預測和分析,幫助人們降低使用軟件中的故障概率,提高軟件的可用性。
4.3抽象軟件的設計架構和設計模式
雖然,軟件在各行各業中都得到了廣泛的應用,但是不同行業的軟件也具有類似的功能,例如:很多網站都具有登錄的功能,需要用戶輸入用戶名和密碼,軟件后臺對用戶名進行查找,并對密碼進行驗證,然后再校驗輸入驗證碼是否正確等等,這種重復性的工作,可以形成軟件的復用模塊,降低軟件設計者的工作量,可以進一步提高軟件開發的效率。同時,一些優秀的軟件架構,能夠使得軟件功能進行解耦,形成獨立工作的不同模塊,更好地發揮每個模塊的特點;優秀的設計模式,能夠讓軟件設計人員對軟件進行更好地設計,降低重復性勞動,有效地降低未來軟件的維護成本。
4.4推動軟件逆向工程技術的普及
根據本文的論述可知,軟件逆向工程對于軟件的整個生命周期都起到了非常重要的作用,但是調查數據顯示,軟件逆向工程在企業中的應用普及率比較低。很多人員在進行軟件設計、測試、維護等過程中,并沒有使用到軟件逆向工程的相關技術,可能會導致各種問題。因此,軟件逆向工程技術未來需要得到進一步普及,為此可以參考以下幾點:第一,可以對當前的軟件逆向工程技術進行分析,了解軟件逆向工程沒有普及的原因,并進行針對性地改進,為該技術的推廣和應用提供條件;第二,可以參照當前國外一些優秀的軟件逆向工程技術,并選擇合適的技術進行分析和應用,能夠更好地滿足人們對軟件逆向工程技術的需求;第三,提高軟件逆向工程技術的簡單實用性,讓人們能夠非常方便地使用該技術對軟件進行分析,可以增加該技術的普及性;同時,當軟件逆向工程技術得到普及之后,用戶可以及時反饋該技術在應用過程中存在的問題,對于該技術未來的發展是非常有利的。
結束語
總之,根據本文的分析和論述可知,軟件逆向工程技術在軟件的分析、軟件設計、軟件測試等多個方面都有著廣泛的應用,為人們提供了多種技術更加快速、高效地了解軟件,對于推廣和普及軟件的使用起到了重要的作用。通過上文對軟件逆向工程相關內容的探究,我們對于目前階段軟件逆向工程的分析方法有了一個更為全面的了解。認識到了軟件工程擬向技術是一種符合當今社會發展潮流、滿足社會各行業發展需求的高新技術。其未來在社會各行業中的應用必然有著極為良好的發展趨勢。為此,在今后的工作中,我們要繼續加大對于逆向工程技術相關內容的研究,深入到各行各業當中,不斷擴大軟件逆向工程應用范圍,以此來充分發揮軟件逆向工程的技術優勢,促進其在社會各行業中的廣泛化應用于推廣。與此同時,作者也希望借助本課題的研究,在社會各界引起人們對軟件逆向工程技術的熱議,使更多的人認識到軟件逆向工程獨特的優勢作用,進而為本課題研究體系的完善奠定堅實的人員基礎,促使更多的行業專家、研究人員廣泛的參與到本課題的研討中來,以此來促進軟件逆向工程技術研究理論體系、實踐體系的完善。
參考文獻
[1]崔迪.逆向工程中的CAD建模技術及軟件系統應用[J].科技資訊,2018,16(16):19-20.
[2]高菁.軟件逆向工程分析技術的實踐與探索[J].中國設備工程,2018(5):178-180.
[3]劉明.軟件逆向工程分析技術研究及應用[J].航空計算技術,2011,41(2):93-95,104.
作者:夏學云 單位:上海閔軒鋼結構工程有限公司