淺談基于JAVA語言的混淆器設(shè)計模型研究論文
Java是一種跨平臺的、解釋型語言,Java源代碼編譯成中間“字節(jié)碼”存儲于class文件中。由于跨平臺的需要,Java字節(jié)碼中包括了很多源代碼信息,如變量名、方法名,并且通過這些名稱來訪問變量和方法,這些符號帶有許多語義信息,很容易被反編譯成Java源代碼。為了防止這種現(xiàn)象,我們可以使用Java混淆器對Java字節(jié)碼進(jìn)行混淆。以下是學(xué)習(xí)啦小編今天為大家精心準(zhǔn)備的:淺談基于JAVA 語言的混淆器設(shè)計模型研究相關(guān)論文。內(nèi)容僅供參考,歡迎閱讀!
淺談基于JAVA 語言的混淆器設(shè)計模型研究全文如下:
隨著軟件事業(yè)的不斷發(fā)展和應(yīng)用,產(chǎn)生了很大的利潤,因此逐漸出現(xiàn)了很多盜版軟件,對軟件開發(fā)企業(yè)的利益造成了很大的損害,也影響了軟件產(chǎn)業(yè)的健康發(fā)展。代碼混淆技術(shù)是目前保護(hù)軟件版權(quán)的重要技術(shù),它能夠混淆轉(zhuǎn)換源程序,產(chǎn)生性能等價的混淆代碼,使逆向工程的難度增加,對于軟件盜版是一種很有效的打擊手段。
一、基于JAVA 語言混淆器的設(shè)計思路
1.1 防御靜態(tài)分析
1、設(shè)計混淆。設(shè)計混淆是在外形方面進(jìn)行混淆,它作為第一道保護(hù)軟件的措施,目前已經(jīng)相對成熟。主要方式為改名和刪除操作,以此來混淆轉(zhuǎn)換代碼。
2、類結(jié)構(gòu)混淆。類結(jié)構(gòu)混淆要首先融合或分裂軟件的類結(jié)構(gòu),然后隱藏具體的類型,使系統(tǒng)類圖的結(jié)構(gòu)得到破壞,進(jìn)而對真正的設(shè)計目的進(jìn)行隱藏,以完成相應(yīng)的混淆轉(zhuǎn)換。
3、類內(nèi)混淆。首先應(yīng)當(dāng)隱藏類內(nèi)部的控制流跳轉(zhuǎn),通過類內(nèi)部的方法進(jìn)行融合,防止調(diào)用重構(gòu)方法。然后進(jìn)一步縮小粒度,考慮內(nèi)部循環(huán)操作。再加入不透明謂詞在程序控制流當(dāng)中。最后交換整個方法的控制流,使攻擊者無法理解程序控制流的轉(zhuǎn)換,從而達(dá)到保護(hù)軟件安全的目的。
4、數(shù)據(jù)混淆。在類內(nèi)部方法間和方法內(nèi)完成混淆轉(zhuǎn)換控制流之后,雖然能夠起到有效的軟件保護(hù)作用,但是一些重要數(shù)據(jù)仍然顯示存在于程序之中。而軟件盜版者恰恰極為重視這一方面,因此,還需要混淆轉(zhuǎn)換數(shù)據(jù),例如變量重組混淆、數(shù)組重構(gòu)混淆等,將關(guān)鍵性數(shù)據(jù)進(jìn)行隱藏。
5、預(yù)防性混淆。預(yù)防性混淆的主要目的是為了防止反編譯算、反匯編等方法進(jìn)行軟件盜版,對這些方法的實際應(yīng)用進(jìn)行阻止,以達(dá)到對軟件安全的保護(hù)。
1.2 防御動態(tài)分析
防御動態(tài)主要是將一些動態(tài)運行過程中的標(biāo)記性信息和程序中的調(diào)試信息進(jìn)行刪除,同時將反跟蹤調(diào)試代碼進(jìn)行嵌入。不過,在當(dāng)前的實際應(yīng)用中,防御動態(tài)分析技術(shù)還缺乏足夠的成熟性。由于它主要是用來對相應(yīng)程序的運行信息進(jìn)行分析,而就目前的相關(guān)技術(shù)來說,要實現(xiàn)這一點還存在著很大的困難。因此,防御動態(tài)分析技術(shù)還需要不斷的進(jìn)行提高和完善,以達(dá)到更好的軟件保護(hù)效果。
二、混淆轉(zhuǎn)換系統(tǒng)的設(shè)計
1、預(yù)處理模塊的設(shè)計。在混淆轉(zhuǎn)換系統(tǒng)中,開始運行的是模塊預(yù)處理模塊,主要是預(yù)先分析源程序代碼,在選擇階段提供相應(yīng)的信息給混淆轉(zhuǎn)換算法選擇。程序代碼分析技術(shù)是預(yù)處理模塊的主要技術(shù),通過預(yù)處理模塊的數(shù)據(jù)流程分析、控制流程分析和其它基本分析,源程序會生成JAVA 類關(guān)系樹、數(shù)據(jù)流程圖、程序符號表等程序信息,在以后的程序分析中,以這些信息作為主要信息。預(yù)處理模塊中包含了數(shù)據(jù)流程、控制流程、基本程序等幾種分析方法,每種分析方法都具有不同的作用,各種方法的合作,共同完成了預(yù)處理模塊的設(shè)計。
2、混淆算法池的設(shè)計。由于軟件的種類很多,因此沒有任何一種混淆算法能夠滿足所有種類軟件的安全要求。對此,應(yīng)當(dāng)將幾種混淆算法進(jìn)行組合,形成混淆算法池,這樣才能有效的對各類軟件的安全進(jìn)行保護(hù)。要進(jìn)行這樣的設(shè)計,就應(yīng)當(dāng)具有一個能夠?qū)Υ罅康幕煜惴ㄟM(jìn)行管理和儲存的模塊存在于代碼混淆轉(zhuǎn)換系統(tǒng)當(dāng)中。其中的基本操作對象就是各種混淆算法,混淆算法池的任務(wù)是對這些混淆算法進(jìn)行運用、存儲和管理。
3、混淆轉(zhuǎn)換執(zhí)行器的設(shè)計。在混淆算法的應(yīng)用中,混淆轉(zhuǎn)換執(zhí)行器應(yīng)當(dāng)具有選擇功能以及排序功能。在混淆轉(zhuǎn)換執(zhí)行器的設(shè)計過程中,需要設(shè)計混淆算法應(yīng)用模塊和混淆算法選擇模塊。將混淆算法池中選擇的混淆算法和預(yù)處理模塊分析處理后的程序信息輸入到混淆轉(zhuǎn)換執(zhí)行器當(dāng)中,混淆算法選擇模塊對最為合適的混淆算法進(jìn)行選擇和組合,實現(xiàn)程序的混淆轉(zhuǎn)換。在每次執(zhí)行完混淆算法之后,如果并沒有達(dá)到預(yù)期的性能要求,將會返回混淆算法應(yīng)用模塊當(dāng)中,重新選擇和組合混淆算法進(jìn)行混淆轉(zhuǎn)換,直到最后達(dá)到要求,才會輸出混淆之后的程序信息。
結(jié)論:在當(dāng)今社會中,隨著計算機技術(shù)和信息技術(shù)的快速發(fā)展和廣泛應(yīng)用,軟件產(chǎn)業(yè)在迅速發(fā)展的同時產(chǎn)生了十分可觀的利潤,這就給盜版軟件的出現(xiàn)創(chuàng)造了可能。為此,應(yīng)當(dāng)加強對軟件安全的保護(hù),降低盜版軟件帶來的危害?;贘AVA 語言的混淆技術(shù)是一種十分有效的技術(shù),本文對其設(shè)計思想及設(shè)計模塊進(jìn)行了分析,希望能夠推動軟件安全保護(hù)的進(jìn)一步發(fā)展。
相關(guān)文章:
1.語言文化論文