彭凱
【摘要】 在軟件應用當中,代碼混淆技術是保護軟件安全的一項重要技術,在軟件安全領域當中,具有十分重要的意義,受到了很多軟件開發(fā)企業(yè)的重視。但是,由于其在我國產生的時間較晚,屬于一項新型的技術,因此在很多方面還不夠成熟。因此,本文對基于JAVA語言的混淆器設計模型及設計思路進行了研究,進而對主要的設計模塊進行了分析。
【關鍵詞】 JAVA語言 混淆器 設計模型
隨著軟件事業(yè)的不斷發(fā)展和應用,產生了很大的利潤,因此逐漸出現(xiàn)了很多盜版軟件,對軟件開發(fā)企業(yè)的利益造成了很大的損害,也影響了軟件產業(yè)的健康發(fā)展。代碼混淆技術是目前保護軟件版權的重要技術,它能夠混淆轉換源程序,產生性能等價的混淆代碼,使逆向工程的難度增加,對于軟件盜版是一種很有效的打擊手段。
一、基于JAVA語言混淆器的設計思路
1.1防御靜態(tài)分析
1、設計混淆。設計混淆是在外形方面進行混淆,它作為第一道保護軟件的措施,目前已經(jīng)相對成熟。主要方式為改名和刪除操作,以此來混淆轉換代碼。2、類結構混淆。類結構混淆要首先融合或分裂軟件的類結構,然后隱藏具體的類型,使系統(tǒng)類圖的結構得到破壞,進而對真正的設計目的進行隱藏,以完成相應的混淆轉換。3、類內混淆。首先應當隱藏類內部的控制流跳轉,通過類內部的方法進行融合,防止調用重構方法。然后進一步縮小粒度,考慮內部循環(huán)操作[1]。再加入不透明謂詞在程序控制流當中。最后交換整個方法的控制流,使攻擊者無法理解程序控制流的轉換,從而達到保護軟件安全的目的。4、數(shù)據(jù)混淆。在類內部方法間和方法內完成混淆轉換控制流之后,雖然能夠起到有效的軟件保護作用,但是一些重要數(shù)據(jù)仍然顯示存在于程序之中。而軟件盜版者恰恰極為重視這一方面,因此,還需要混淆轉換數(shù)據(jù),例如變量重組混淆、數(shù)組重構混淆等,將關鍵性數(shù)據(jù)進行隱藏。5、預防性混淆。預防性混淆的主要目的是為了防止反編譯算、反匯編等方法進行軟件盜版,對這些方法的實際應用進行阻止,以達到對軟件安全的保護。
1.2防御動態(tài)分析
防御動態(tài)主要是將一些動態(tài)運行過程中的標記性信息和程序中的調試信息進行刪除,同時將反跟蹤調試代碼進行嵌入。不過,在當前的實際應用中,防御動態(tài)分析技術還缺乏足夠的成熟性。由于它主要是用來對相應程序的運行信息進行分析,而就目前的相關技術來說,要實現(xiàn)這一點還存在著很大的困難。因此,防御動態(tài)分析技術還需要不斷的進行提高和完善,以達到更好的軟件保護效果[2]。
二、混淆轉換系統(tǒng)的設計
1、預處理模塊的設計。在混淆轉換系統(tǒng)中,開始運行的是模塊預處理模塊,主要是預先分析源程序代碼,在選擇階段提供相應的信息給混淆轉換算法選擇。程序代碼分析技術是預處理模塊的主要技術,通過預處理模塊的數(shù)據(jù)流程分析、控制流程分析和其它基本分析,源程序會生成JAVA類關系樹、數(shù)據(jù)流程圖、程序符號表等程序信息,在以后的程序分析中,以這些信息作為主要信息。預處理模塊中包含了數(shù)據(jù)流程、控制流程、基本程序等幾種分析方法,每種分析方法都具有不同的作用,各種方法的合作,共同完成了預處理模塊的設計[3]。
2、混淆算法池的設計。由于軟件的種類很多,因此沒有任何一種混淆算法能夠滿足所有種類軟件的安全要求。對此,應當將幾種混淆算法進行組合,形成混淆算法池,這樣才能有效的對各類軟件的安全進行保護。要進行這樣的設計,就應當具有一個能夠對大量的混淆算法進行管理和儲存的模塊存在于代碼混淆轉換系統(tǒng)當中。其中的基本操作對象就是各種混淆算法,混淆算法池的任務是對這些混淆算法進行運用、存儲和管理。
3、混淆轉換執(zhí)行器的設計。在混淆算法的應用中,混淆轉換執(zhí)行器應當具有選擇功能以及排序功能[4]。在混淆轉換執(zhí)行器的設計過程中,需要設計混淆算法應用模塊和混淆算法選擇模塊。將混淆算法池中選擇的混淆算法和預處理模塊分析處理后的程序信息輸入到混淆轉換執(zhí)行器當中,混淆算法選擇模塊對最為合適的混淆算法進行選擇和組合,實現(xiàn)程序的混淆轉換。在每次執(zhí)行完混淆算法之后,如果并沒有達到預期的性能要求,將會返回混淆算法應用模塊當中,重新選擇和組合混淆算法進行混淆轉換,直到最后達到要求,才會輸出混淆之后的程序信息。
結論:在當今社會中,隨著計算機技術和信息技術的快速發(fā)展和廣泛應用,軟件產業(yè)在迅速發(fā)展的同時產生了十分可觀的利潤,這就給盜版軟件的出現(xiàn)創(chuàng)造了可能。為此,應當加強對軟件安全的保護,降低盜版軟件帶來的危害。基于JAVA語言的混淆技術是一種十分有效的技術,本文對其設計思想及設計模塊進行了分析,希望能夠推動軟件安全保護的進一步發(fā)展。
參 考 文 獻
[1]張寶國. 基于JAVA的代碼混淆研究[D].電子科技大學,2012.
[2]楊樂. 用于軟件保護的代碼混淆技術研究[D].江西師范大學,2013.
[3]李旭. 基于Java語言的操作系統(tǒng)設計與實現(xiàn)技術研究[D].國防科學技術大學,2013.
[4]李勇. 基于Windows平臺的目標代碼混淆[D].電子科技大學,2012.