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