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

代碼混淆技術(shù)在軟件保護(hù)中的應(yīng)用研究

2014-07-21 07:39:46康彥
關(guān)鍵詞:程序工程

康彥

(合肥工業(yè)大學(xué),安徽 合肥 230031)

代碼混淆技術(shù)在軟件保護(hù)中的應(yīng)用研究

康彥

(合肥工業(yè)大學(xué),安徽 合肥 230031)

伴隨著越來越多的逆向工程工具的出現(xiàn),使得軟件被篡改、盜版的威脅也逐漸增大.攻擊者通過對程序的逆向工程獲取程序的重要算法和核心數(shù)據(jù).文章通過對代碼混淆技術(shù)的定義、混淆方法分類、混淆應(yīng)用和評價等方面詳細(xì)闡述代碼混淆技術(shù)在軟件保護(hù)中的實際意義和應(yīng)用,并指出了代碼混淆技術(shù)未來的發(fā)展方向.

代碼混淆;軟件保護(hù);逆向工程

1 引言

隨著Internet的不斷發(fā)展,使得各種軟件的傳播越來越廣泛和迅速.隨之而來的,軟件被盜版、篡改的軟件安全問題也愈發(fā)的嚴(yán)重起來.根據(jù)《2010年度中國軟件盜版率調(diào)查報告》顯示,相對于軟件產(chǎn)品的價值盜版率達(dá)24%.同時伴隨著程序設(shè)計語言(諸如Java,.NET等)的發(fā)展,出來了許多以使用與平臺無關(guān)的中間代碼發(fā)布的軟件.其代碼與源代碼極為相似.這些軟件比起普通的二進(jìn)制代碼更易受到來自惡意用戶逆向工程和分析.伴隨這各類逆向工程技術(shù)的出現(xiàn),使得對此類軟件的保護(hù)愈發(fā)的困難.因此,對于軟件知識產(chǎn)權(quán)的保護(hù),除了使用法律外,我們還需在技術(shù)上加以保護(hù).軟件保護(hù)的技術(shù)很多,其中代碼混淆技術(shù)就是一種重要的手段.代碼混淆是指采用混淆策略對應(yīng)用程序進(jìn)行混淆變換,使得變換后的軟件功能與原程序保持一致.但是其更難以被靜態(tài)分析和篡改.

2 代碼混淆技術(shù)的定義

代碼混淆是一種保持語義的程序變換技術(shù),它將程序P依據(jù)一系列混淆策略k變換到P'(如圖1),使對P'進(jìn)行篡改更為困難,但是P和P'必須保證語義上的一致性,兩者在軟件功能上應(yīng)該保持相同.簡言之,代碼混淆技術(shù)中變換的是程序本身,而不是程序所描述的功能.而代碼混淆的目的是為了增大其被逆向工程的難度.通常來說,如果使用足夠多的計算、存儲資源和足夠長的時間,對一個程序進(jìn)行逆向工程總是可能的.同樣,不管使用什么樣的混淆策略也無法保證程序永遠(yuǎn)不會被逆向工程,我們所關(guān)注的是盡可能的提高混淆后程序P′逆向工程難度,使逆向工程的代價遠(yuǎn)大于其收益.從而保護(hù)軟件不被盜版或篡改.

3 代碼混淆技術(shù)的方法分類

依據(jù)代碼混淆策略和對象的不同,代碼混淆技術(shù)一般可分為名稱混淆、流程混淆、數(shù)據(jù)混淆和預(yù)防混淆等方法. 3.1名稱混淆

名稱混淆也稱為布局混淆,主要是刪除和改名.即刪除與實際執(zhí)行無關(guān)的信息和修改程序中各類標(biāo)示符的名稱.刪除主要是去除程序中的注釋與程序執(zhí)行無法使用到的代碼等.刪除之后不但可以壓縮程序的大小、提高程序加載的速度和運行效率,還可以使程序被逆向工程的難度增加.改名的意義是將表意的名稱替換為無意義的名稱.以.Net中名稱混淆為例,主要分為兩類方法:

a.名稱替換

.Net的元數(shù)據(jù)中有一個NameTable,這個表里面保存了所有類型,方法,屬性,字段等的名稱.這一類混淆的本質(zhì)就是從NameTable里面進(jìn)行一對一的名稱替換.實現(xiàn)的方式可能是多樣的.可以IL級替換,也可以直接元數(shù)據(jù)級替換,或者其它達(dá)到相同效果的方式.

b.名稱擦除、索引破壞

這類混淆只能在元數(shù)據(jù)級進(jìn)行操作,要求對元數(shù)據(jù)的全部結(jié)構(gòu)十分清楚,有一定難度.它的本質(zhì),讓名稱索引數(shù)組越界.元數(shù)據(jù)中類型,方法,屬性,字段等的定義處是通過一個整形的index值指向NameTable的,index所對應(yīng)的字符串就是它的名稱.這類混淆就是直接修改這個index值,如將它改為-1.如果還要進(jìn)一步做,可以再刪除NameTable中無用的字符串,以及刪除NameTable有用但重復(fù)的字符串.再修改索引,讓名稱相同的指向同一個字符串.

名稱混淆是最基礎(chǔ)的混淆技術(shù),大多數(shù)代碼混淆工具都不同程度地使用到此類技術(shù).

3.2 流程混淆

流程混淆指的是對程序的執(zhí)行流程進(jìn)行混淆變換,使得程序的執(zhí)行流程變得難以理解,增大逆向工程的難度,一般情況下,在對程序執(zhí)行流程進(jìn)行混淆時,需要加入一些冗余的流程和計算,這樣勢必會導(dǎo)致程序執(zhí)行效率的下降.因此,在使用流程混淆時,我們需要根據(jù)程序的執(zhí)行效率的不同要求來設(shè)計不同程度的混淆策略.流程混淆技術(shù)大致可以分為如下兩類:

a.增加混淆控制

通過添加冗余的、復(fù)雜的程序流程,可以在不改變程序語義的情況下,增加其被逆向工程的難度.例如,原程序中相鄰的兩個基本語句塊A和B,因兩者中間沒有任何控制轉(zhuǎn)移語句.

其執(zhí)行順序一定是依次發(fā)生.下圖中我們通過在兩者之間增加不同的跳轉(zhuǎn)控制條件,已決定后者的執(zhí)行.在圖中我們能發(fā)現(xiàn)雖然流程更加復(fù)雜了,但所增加的跳轉(zhuǎn)控制并沒有影響語句塊B的執(zhí)行.

b.控制流重組

控制流重組是指將原程序中控制流在語義不變的前提下進(jìn)行重新組織.如,可將一個被調(diào)用的方法直接嵌入到調(diào)用方法中,反過來,方法中一段基本語句塊也可轉(zhuǎn)換成一個新的方法,調(diào)用之.通過此類變換后,原程序的控制流程圖被不同程度的破壞,使得系統(tǒng)的總體框架變得很難理解,從來提供程序的混淆強(qiáng)度.

3.3 數(shù)據(jù)混淆

數(shù)據(jù)混淆主要是對程序中的重要數(shù)據(jù)進(jìn)行混淆處理,對程序中的數(shù)據(jù)結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,以不規(guī)律的方式組織數(shù)據(jù),從而增加程序逆向工程的難度.常用的方法有以下幾種:

a.動態(tài)生成靜態(tài)數(shù)據(jù)

程序中靜態(tài)數(shù)據(jù),如字符串常量等,極易被逆向工程獲取,可以利用函數(shù)動態(tài)生成的進(jìn)行代替.對靜態(tài)數(shù)據(jù)進(jìn)行動態(tài)生成提高了逆向工程的難度,同時也會帶來一定的程序執(zhí)行效率的降低.在實際應(yīng)用中因適當(dāng)選擇.

b.轉(zhuǎn)換數(shù)組組織

數(shù)組是高級程序設(shè)計語言中最簡單、最常用的一種數(shù)據(jù)結(jié)構(gòu).對于數(shù)組的混淆包括將大數(shù)組拆分為若干小數(shù)組,合并若干小數(shù)組為一個數(shù)組或修改數(shù)組的維數(shù).對數(shù)組結(jié)構(gòu)使用適當(dāng)?shù)霓D(zhuǎn)換,可以隱藏數(shù)組數(shù)據(jù)所代表的實際含義.

c.轉(zhuǎn)換類結(jié)構(gòu)

類結(jié)構(gòu)的轉(zhuǎn)換是指合并類、分裂類和類型隱蔽.類合并是將代碼中的2個或多個類合并成一個類,從而改變類之間原來的關(guān)系,隱蔽程序設(shè)計的思路.如果有必要,甚至可以將程序中所有的類都合并成一個類.類的分裂是將一個初始的類轉(zhuǎn)換成2個或以上個新類來代替.類型隱蔽主要是利用如Java、.Net中的接口(interface)進(jìn)行類型映射操作來實現(xiàn). 3.4預(yù)防混淆

預(yù)防混淆一般是根據(jù)一些已有反編譯器的特點而設(shè)計的特殊混淆方法.已有的反編譯器基本上都存在弱點或者Bug.利用好這些漏洞,就可以很好的提高程序的反編譯強(qiáng)度.如VS.Net中自帶的混淆器Dotfuscator就包含有針對反編譯器ILDASM的預(yù)防混淆策略.

4 代碼混淆技術(shù)的應(yīng)用與評價

4.1 應(yīng)用

代碼混淆技術(shù)應(yīng)用很廣泛,目前,主要應(yīng)用于以下4個領(lǐng)域:

(1)關(guān)鍵算法保護(hù).對于程序中重要的算法采用必要的代碼混淆,以確保算法策略不被攻擊者分析獲取,防止程序被惡意攻擊或篡改.

(2)軟件知識產(chǎn)權(quán)保護(hù).隨著網(wǎng)絡(luò)軟件和移動應(yīng)用迅速發(fā)展,軟件盜版也愈發(fā)的嚴(yán)重,使用代碼混淆技術(shù)可以提高軟件的逆向工程難度,是保護(hù)軟件知識產(chǎn)權(quán)的有效技術(shù)手段之一.

(3)惡意代碼取證.在網(wǎng)絡(luò)信息取證中,惡意代碼通過代碼混淆產(chǎn)生多種變種,給計算機(jī)信息安全帶來許多新的挑戰(zhàn).所以,研究惡意代碼所使用的代碼混淆技術(shù),對于惡意代碼的特征提取就有著非常重要的意義.

4.2 評價

如何評價代碼混淆的效果,通常從強(qiáng)度(Potency)、彈性(Resilience)、代價(Cost)、隱蔽性(Stealth)等4個方面來評價:

(1)強(qiáng)度.指經(jīng)過混淆交換后的程序被逆向工程的復(fù)雜程度.一般來說,增加代碼的長度;增加程序控制結(jié)構(gòu)中的分支數(shù)、循環(huán)嵌套數(shù)及函數(shù)調(diào)用的深度;加大類的繼承高度等方法都可以提高代碼混淆變換的強(qiáng)度.

(2)彈性.指經(jīng)過混淆變換后的程序?qū)Ψ椿煜ぞ叩牡挚苟?它包括以下兩個方面,一個是反混淆工具編寫者編碼所需的代價,另一個方面是反混淆工具運行所需要的時空代價.

(3)代價.指經(jīng)過混淆變換后的程序在執(zhí)行時和原程序相比所增加的時間和空間的額外消耗.

(4)隱蔽性.是指經(jīng)過混淆變換后的程序與原程序之間的相似程度.

5 總結(jié)

綜上所述,通過適當(dāng)?shù)拇a混淆變換,加大了程序被逆向工程的難度,一定程度上起保護(hù)了軟件不被惡意篡改,保護(hù)了軟件的知識產(chǎn)權(quán).提高惡意用戶通過分析程序獲取軟件重要數(shù)據(jù)和算法的難度.但代碼混淆技術(shù)尚處于發(fā)展階段,缺乏相應(yīng)的理論基礎(chǔ),沒有準(zhǔn)確的度量代碼混淆算法有效性的評估模型.在以后發(fā)展中,我們將需要一套完整的理論體系和相應(yīng)的度量與評價模型.和其他軟件保護(hù)技術(shù)結(jié)合起來,為軟件安全提供更為有效的保護(hù).

〔1〕Collberg C,Thomborson C,Low D.A taxonomy of obfuscating transformations.Technical Report 148,University of Auckland.1997.

〔2〕A.Barak,O.Goldreich,R.Impagliazzo,S.Rudich,A.Sahai,S. Vadhan,And K.Yang.On the(im)possibility of software obfuscation.Crypto01.2001.

〔3〕羅宏,蔣劍琴,曾慶凱.用于軟件保護(hù)的代碼混淆技術(shù)[J].計算機(jī)工程,2006(11).

〔4〕王一賓,陳意云.代碼迷惑技術(shù)研究進(jìn)展[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2008(04).

TP393

A

1673-260X(2014)03-0017-02

猜你喜歡
程序工程
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
工程
工程
工程
工程
主站蜘蛛池模板: 久久特级毛片| 午夜福利免费视频| 国产精品第5页| 国产精品青青| 最新无码专区超级碰碰碰| 国产精品林美惠子在线观看| 国产亚洲欧美日韩在线观看一区二区 | 综合五月天网| 亚洲av无码人妻| 成人va亚洲va欧美天堂| 亚洲综合二区| 国产拍揄自揄精品视频网站| 亚洲综合二区| 国产中文一区二区苍井空| 一级毛片基地| 91福利国产成人精品导航| 亚洲色欲色欲www网| 蜜芽国产尤物av尤物在线看| 国产精品蜜芽在线观看| 国产男女XX00免费观看| 国产男人天堂| 午夜不卡福利| 91国内外精品自在线播放| 久久综合一个色综合网| 国产免费a级片| 欧美激情网址| 欧美色视频网站| 污网站在线观看视频| 一区二区三区精品视频在线观看| 国产成人综合亚洲欧美在| 亚洲精品中文字幕午夜| 欧洲欧美人成免费全部视频| 久久大香香蕉国产免费网站| 欧美激情综合| 99在线观看国产| 香蕉久久国产超碰青草| 沈阳少妇高潮在线| 91精品国产丝袜| 91免费在线看| 欧美在线中文字幕| 欧美成人午夜在线全部免费| 91无码视频在线观看| 久久天天躁狠狠躁夜夜躁| 亚洲色图欧美一区| 久草网视频在线| 亚洲国产精品无码AV| 欧美日韩国产在线播放| 2020精品极品国产色在线观看| 亚洲成人播放| 在线日韩日本国产亚洲| 91九色最新地址| 欧美成人手机在线视频| 91福利在线观看视频| 国产日韩欧美一区二区三区在线| 欧美综合在线观看| 97亚洲色综久久精品| 国产成人无码久久久久毛片| 日本免费一级视频| 2021国产在线视频| 久操中文在线| 亚洲精品va| 91亚洲影院| 中文字幕天无码久久精品视频免费| 青青国产视频| 亚洲Av激情网五月天| 婷婷综合在线观看丁香| 国产门事件在线| 国产白浆一区二区三区视频在线| 精品国产网站| 免费一级毛片在线播放傲雪网| 国产成人久久综合一区| 在线网站18禁| 91香蕉视频下载网站| 最新国产成人剧情在线播放| 中文字幕欧美成人免费| 免费 国产 无码久久久| 亚洲一级毛片在线观| 九九九精品成人免费视频7| 亚洲一级色| 99re视频在线| 尤物在线观看乱码| 99热这里只有精品久久免费|