999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java代碼混淆技術研究

2012-04-12 00:00:00王學軍
消費電子 2012年19期

摘要:由于Java開發已經愈來愈流行,而引起編譯器的不安全特點是其很容易被反編譯,為了保護開發者的利益,混淆技術便應運而生。當前主要使用到的混淆技術有以下四種:代碼外形混淆、控制命令混淆、內部數據混淆和預防混淆。

關鍵詞:混淆技術;Java;編程;算法

中圖分類號:TP312 文獻標識碼:A 文章編號:1674-7712 (2012) 18-0038-01

一、前言

Java作為一種新一代的編程語言,其因編程簡單、跨平臺性可操作性強被許多的開發人員和公司喜愛,而且如今已經成為應用程序的主流開發軟件。然而,Java編譯器在編譯時是將代碼引用到的變量和方法符號保留在字節碼文件中,并且這些符號都有語義信息,因此使得開發的程序很容易被反編譯,導致軟件被破解。最終將使得開發者的知識產權受到侵害。為了保護開發者的權益,代碼混淆技術變應運而生。

二、混淆技術的發展

早在1997年Collberg便開始了對代碼混淆的研究,在他發表的文章中提出了代碼混淆變換的各種類型,他將其分為四類:代碼外形混淆、控制命令混淆、內部數據混淆以及預防混淆。隨后Kelly等人構造了一種用來實現構造代碼的混淆算法機制。在國內,近些年了也有一些學者逐漸意識到了代碼混淆技術在進行程序編寫中的重要性,大量研究之后取得了較大的成果。比較有代表的有李永祥的多分語句控制迷惑技術,李長春的執行重整混淆算法等。由于混淆技術具有非常重要的軟件保護作用,相信未來肯定會有更多的人和組織加入到代碼混淆技術的相關研究課題中來。

三、混淆技術介紹

(一)混淆變換原理

作為一種非常實用的軟件保護策略,代碼混淆技術的基本思想是將應用程序在保持語句含義不變的前提下實現P到P’的變換。此變換中必須滿足條件:P‘和P具有相同的運行結果;若P‘出錯終止或終止失敗,P也必須出錯地終止或終止失敗;P‘產生與P一樣的輸出。兩個程序唯一不同的只是P‘比P更難去進行反編譯,并且P‘可讀性差以及相關工具難以解析。因此經過這種變換可以到達混淆的目的,使軟件不易被攻擊。

(二)混淆的應用領域

代碼混淆的應用范圍很廣,歸納起來主要有一下幾種領域:⑴分布式計算和軟件保護;⑵法保護和DRM;⑶同形加密;

(三)混淆的分類

代碼混淆技術根據混淆對象的不同可以分為四種:代碼外形混淆、控制命令混淆、內部數據混淆和預防混淆。

1.代碼外形混淆。Java混淆器使用到的混淆方法中代碼外形混淆最為典型,該算法可以將Java所有源代碼中包含的類的功能隱藏。如果最初的格式信息被除去后代碼將不能恢復,因此稱這種混淆為單向變換。程序經過這種變換后時間和空間復雜度不會受影響,因為它并沒有額外執行代價。

代碼外形混淆主要使用的技術有刪除(刪除程序和中的注釋、調試信息、未被調用的方法和類等)和改名(程序中的變量名、常量名、類名、方法名等)。此變換可以使程序的理解變難。

2.控制命令混淆。控制命令混淆能增加程序的復雜度和程序的反編譯時間,它是通過改變程序的判斷條件或添加可控判斷條件以及對程序的結構和流程進行調整來實現的。常常用到的控制命令混淆主要有排序、聚集和計算變換。

3.內部數據混淆。內部數據混淆技術將會利用數據流中的難點問題,向程序中引入使程序精度降低或難度增加的因素,進而可以影響反編譯器對程序的分析結果。內部數據混淆只會變換代碼中的數據結構,而不修改軟件代碼。

進行內部數據混淆的主要方法有四種:變量分裂與變量合并、數據結構變換、靜態數據動態生成、類繼承轉換。

4.預防變換。預防變換是利用某些專用反匯編工具的弱點而設計的。具體混淆可以分為針對特定目標實施的預防變換或者是依據已知的反編譯算法實現的混淆。

5.四種混淆技術的分析和比較。代碼外形混淆使攻擊者解讀程序造成不便,同時也能針對反編譯工具的算法使之反編譯難以實施。內部數據混淆改變邏輯變量。控制命令混淆使程序變得更加復雜從而增強程序的抵抗性能。預防混淆較多時候都是具有一定的針對性。內部數據混淆和控制混淆都會在增加程序復雜度的同時造成程序執行效率的下降,而代碼外形混淆則不會影響執行效率。

四、標示符重命名混淆算法

標示符重命名混淆屬于代碼外形混淆的范疇。它是將字節碼文件中的一些類名、接口名、方法名等替換為其他無意義的名字。這并沒有造成程序的額外開銷,抗攻擊能力也不強。

重命名是因為進行內部數據混淆和控制混淆時都會增加程序的開銷,而這并不是我們想要的。有時候我們經常需要一種可以抵抗攻擊并且不會造成程序執行效率下降的算法,而重命名混淆正是這樣的。當一些名字被毫無意義的字符替換后,攻擊者很難從中讀出該名字所代表的意義,這便使得攻擊者在反編譯是造成了困難。

當程序中一個實體被重命名后,所有與其相關的內容必須更新,否則會引起運行出錯。但是有一些是不能被重命名的。這便有了代碼混淆范圍的提出。以下三種標示符是不在范圍內的:(1)子類中一個超類或接口中抽象方法的實體方法;(2)超類中繼承方法的重寫;(3)特殊屬性明確規定不可進行替換。

標示符重名算法可以分為四種:靜態方法重寫、替換非法提示符、無關聯方法重載、部分標識符濫用。

五、算法分析

衡量一個混淆算法性能好壞的重要指標是對程序執行開銷的影響。內部數據混淆和控制命令混淆都增加了程序的二外執行開銷從而影響了程序的運行效率。重命名混淆只是將名字替換,很多時候都會將名字縮短,使文件變得更小,不會造成執行效率的下降,同時也使攻擊者將花費更長的時間來理解和反編譯程序。

六、總結

代碼混淆技術是時下最常用的,同時也是最有效的保護Java軟件的方法,新型的混淆算法一定會隨著技術的發展而被發現。雖然代碼混淆技術在一定程度上保護了軟件的安全以及開發者的權益,但只有我們杜絕使用盜版軟件同時不去侵犯他人的知識產權才能切實的保護好開發者的權益。

參考文獻:

[1]魏會生.基于JAVA類文件保護的探討[J].工會博覽·理論研究,2011,3:25-26.

[2]魏衍君,王應戰.Java語言混淆器模型研究[J].科技信息,2012,4:61-62.

主站蜘蛛池模板: 久久77777| 亚洲成人免费在线| 青青青草国产| 五月天天天色| 欧美亚洲日韩不卡在线在线观看| 亚洲人成影视在线观看| 国产va免费精品观看| 欧美国产综合视频| 亚洲国产成人自拍| 高清无码手机在线观看| 91久久国产综合精品女同我| 国产成人a在线观看视频| 日本伊人色综合网| 美女扒开下面流白浆在线试听| 少妇精品久久久一区二区三区| 国产在线观看高清不卡| 国产综合日韩另类一区二区| 国产永久无码观看在线| 农村乱人伦一区二区| 国产精品私拍在线爆乳| 狠狠做深爱婷婷综合一区| 熟妇无码人妻| 亚洲最新在线| 亚洲午夜福利精品无码不卡| 538国产视频| 国产av色站网站| 91精品国产无线乱码在线| 欧美日韩国产在线播放| 午夜在线不卡| 成人无码区免费视频网站蜜臀| 国产精品丝袜视频| 亚洲青涩在线| 亚洲人成网站日本片| 日本黄网在线观看| 国产流白浆视频| 女人av社区男人的天堂| 在线欧美a| 欧美日韩另类国产| 国产亚洲日韩av在线| 国产美女主播一级成人毛片| 亚洲精品制服丝袜二区| 国产一级一级毛片永久| 91美女视频在线观看| av一区二区无码在线| 日韩精品成人在线| 国产欧美专区在线观看| 国内精品小视频在线| 国产成人狂喷潮在线观看2345| 精品成人一区二区三区电影| 欧美精品另类| 国产麻豆aⅴ精品无码| 国产福利免费视频| 国产男女免费视频| 这里只有精品在线播放| 国产va欧美va在线观看| 日本国产在线| 麻豆国产精品一二三在线观看| 日本精品影院| 国产免费人成视频网| 高清免费毛片| 免费国产一级 片内射老| 国产一级做美女做受视频| 无码人中文字幕| 亚洲码一区二区三区| 午夜精品福利影院| 亚洲男人的天堂久久香蕉 | 欧美视频免费一区二区三区| 91无码视频在线观看| 国产精品偷伦视频免费观看国产| 怡红院美国分院一区二区| 久草网视频在线| 精品人妻系列无码专区久久| 免费看a毛片| 色视频国产| 亚洲视频一区在线| 黄色福利在线| 波多野结衣在线一区二区| 久久精品国产亚洲麻豆| 国外欧美一区另类中文字幕| 国产性爱网站| 91精品人妻互换| 久久婷婷五月综合色一区二区|