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.

主站蜘蛛池模板: 又爽又大又黄a级毛片在线视频 | 国产91线观看| 色妞永久免费视频| 亚洲中文精品久久久久久不卡| 毛片卡一卡二| 91精品网站| 国产精品永久久久久| 重口调教一区二区视频| 日本久久免费| 免费无码一区二区| 动漫精品中文字幕无码| 有专无码视频| 免费毛片视频| 蝌蚪国产精品视频第一页| 欧美人与动牲交a欧美精品| 免费女人18毛片a级毛片视频| 色偷偷男人的天堂亚洲av| 欧美精品三级在线| 狼友视频国产精品首页| 亚洲国产一区在线观看| av尤物免费在线观看| 美女被操91视频| av午夜福利一片免费看| 国产剧情伊人| 午夜福利免费视频| 无码国产偷倩在线播放老年人 | 国产人人乐人人爱| 欧洲精品视频在线观看| 亚洲欧美一区二区三区蜜芽| 色丁丁毛片在线观看| 女人18一级毛片免费观看| 911亚洲精品| 久夜色精品国产噜噜| 99热6这里只有精品| 在线日韩日本国产亚洲| 国产小视频免费| 无码aⅴ精品一区二区三区| 久久99热这里只有精品免费看| 日韩欧美综合在线制服| 色吊丝av中文字幕| 中文字幕在线日本| 欧美国产视频| 99精品高清在线播放| 精品国产Av电影无码久久久| 日韩第九页| 成人一级免费视频| 99国产精品一区二区| 日韩免费毛片视频| 婷婷色狠狠干| 久久这里只有精品国产99| 国产一在线观看| 国产成人高清在线精品| 蜜臀AVWWW国产天堂| 一级毛片不卡片免费观看| 亚洲无码久久久久| www.国产福利| 国产成年无码AⅤ片在线| 无码在线激情片| 青青青国产精品国产精品美女| 又大又硬又爽免费视频| 欧美精品在线免费| 国产成人免费观看在线视频| 国产精品欧美亚洲韩国日本不卡| 97成人在线观看| 日韩国产一区二区三区无码| 欧美不卡视频在线观看| 久久精品国产亚洲麻豆| 手机在线国产精品| 国产小视频免费| 国产高清在线丝袜精品一区| 亚洲欧美日本国产综合在线| 日韩在线2020专区| 中文字幕永久视频| 人妻精品久久久无码区色视| 中文字幕无码av专区久久 | 国产精品视频导航| 午夜精品久久久久久久无码软件| 91亚洲免费视频| 国产白浆一区二区三区视频在线| 久久亚洲中文字幕精品一区| 自拍偷拍欧美| 狠狠做深爱婷婷久久一区|