本發(fā)明涉及移動app安全防護性能測評領(lǐng)域,特別是涉及一種基于加密與控制流混淆的代碼安全防護能力測評方法。
背景技術(shù):
:標(biāo)識符重命名混淆功能,不僅實現(xiàn)了對方法和變量的重命名,還支持用戶自己設(shè)置重命名字母表、新名字的最小長度,以及自定義選擇需要進行重命名工作的類或方法。字符串加密功能實現(xiàn)對字符串常量內(nèi)容的加密工作,使得攻擊者不能直接獲得字符串常量內(nèi)容。dasho還支持用戶設(shè)置字符串的加密等級、自定義每個類和方法是否需要進行字符串加密工作,還支持用戶使用定制的加密算法。在控制流混淆方面,相較于傳統(tǒng)的只是插入錯誤的多余基本塊的方法,dasho提供了更進一步的控制流混淆,即在增加基本塊的基礎(chǔ)上,摧毀代碼的架構(gòu),重新構(gòu)建代碼。最終的代碼和源代碼功能相同,但是在表示上與源代碼完全不同。同樣,用戶可以自定義類和方法是否需要進行控制流混淆工作。dasho作為一款java混淆器,可以對java代碼可以進行壓縮、優(yōu)化、混淆的工作。其中混淆功能包括標(biāo)識符重命名、字符串加密和控制流混淆。技術(shù)實現(xiàn)要素:為了解決上述存在的問題,本發(fā)明提供一種基于加密與控制流混淆的代碼安全防護能力測評方法,為了防范惡意主機對合法移動app進行逆向分析和惡意篡改,采用基于java的混淆器dasho,可以對java代碼可以進行壓縮、優(yōu)化、混淆的工作。從而達到混淆功能包括標(biāo)識符重命名、字符串加密和控制流混淆的目的,為達此目的,本發(fā)明提供一種基于加密與控制流混淆的代碼安全防護能力測評方法,具體測評方法,:基于dasho代碼混淆工具對移動app源代碼實施混淆,定義源代碼文件為dasho.apk,經(jīng)過混淆后的測試文件為dasho1.apk、dasho2.apk、dasho3.apk,按照如下步驟進行:1)dasho在應(yīng)用于android混淆時,支持ant、gradle和圖形界面直接對apk文件操作三種方式,使用圖形界面可以發(fā)現(xiàn)有諸多操作選項,幾個主要類別包括輸出、切入口、移除、混淆、優(yōu)化、輸出和結(jié)果,我們主要研究其中的輸入、混淆、輸出和結(jié)果,并根據(jù)需要選擇不同的選項獲得不同的結(jié)果;2)勾選標(biāo)識符重命名功能,利用dasho實現(xiàn)對標(biāo)識符進行重命名,獲得混淆后代碼dasho1.apk;3)勾選字符串加密功能,利用dasho實現(xiàn)對字符串進行加密,獲得混淆后代碼dasho2.apk;4)勾選隱藏調(diào)用功能,利用dasho實現(xiàn)控制流混淆功能,獲得混淆后代碼dasho3.apk;5)根據(jù)步驟2)-4)代碼混淆執(zhí)行輸出文件,利用反編譯軟件對混淆后代碼開展防護效果評測工作。作為本發(fā)明進一步改進,dasho1.apk具備標(biāo)識符重命名,dasho2.apk具備字符串加密,dasho2.apk具備控制流混淆,本發(fā)明常用具備標(biāo)識符重命名dasho1.apk、具備字符串加密dasho2.apk、具備控制流混淆dasho3.apk作為混淆后的測試文件。本發(fā)明公開了一種基于加密與控制流混淆的代碼安全防護能力測評方法,采用基于java的混淆器dasho,可以對java代碼可以進行壓縮、優(yōu)化、混淆的工作。從而達到混淆功能包括標(biāo)識符重命名、字符串加密和控制流混淆的目的,其有益效果如下:1)本發(fā)明方法可以針對利用dasho代碼混淆軟件對移動app實現(xiàn)代碼混淆,使用圖形界面可以發(fā)現(xiàn)有諸多操作選項,并根據(jù)需要選擇不同的選項獲得不同的結(jié)果;2)本發(fā)明方法可以采用反編譯軟件檢驗混淆結(jié)果,對混淆代碼實施全面評估。附圖說明圖1是dasho混淆前后標(biāo)識符效果對比圖;圖2是dasho混淆后標(biāo)識符效果圖;圖3是dasho混淆后字符串加密效果圖。具體實施方式下面結(jié)合附圖與具體實施方式對本發(fā)明作進一步詳細描述:本發(fā)明提供一種基于加密與控制流混淆的代碼安全防護能力測評方法,為了防范惡意主機對合法移動app進行逆向分析和惡意篡改,采用基于java的混淆器dasho,可以對java代碼可以進行壓縮、優(yōu)化、混淆的工作。從而達到混淆功能包括標(biāo)識符重命名、字符串加密和控制流混淆的目的。作為本發(fā)明一種具體實施例,本發(fā)明提供一種基于加密與控制流混淆的代碼安全防護能力測評方法,基于dasho代碼混淆工具對移動app源代碼實施混淆,以源代碼文件dasho.apk以及經(jīng)過混淆后的測試文件dasho1.apk(具備標(biāo)識符重命名)、dasho2.apk(具備字符串加密)、dasho3.apk(具備控制流混淆)為例,具體實施步驟如下:1)dasho在應(yīng)用于android混淆時,支持ant、gradle和圖形界面直接對apk文件操作三種方式。使用圖形界面可以發(fā)現(xiàn)有諸多操作選項,幾個主要類別包括輸出、切入口、移除、混淆、優(yōu)化、輸出和結(jié)果,我們主要研究其中的輸入、混淆、輸出和結(jié)果,并根據(jù)需要選擇不同的選項獲得不同的結(jié)果;2)勾選標(biāo)識符重命名功能,利用dasho實現(xiàn)對標(biāo)識符進行重命名,獲得混淆后代碼dasho1.apk;3)勾選字符串加密功能,利用dasho實現(xiàn)對字符串進行加密,獲得混淆后代碼dasho2.apk;4)勾選隱藏調(diào)用功能,利用dasho實現(xiàn)控制流混淆功能,獲得混淆后代碼dasho3.apk;5)根據(jù)步驟2)-4)代碼混淆執(zhí)行輸出文件,利用反編譯軟件對混淆后代碼開展防護效果評測工作。附圖附表說明如下:圖1、圖2、圖3和表1是本發(fā)明公開的一種基于加密與控制流混淆的代碼安全防護能力測評方法的實驗結(jié)果。圖1是dasho混淆前后標(biāo)識符效果對比圖。使用jd-gui分別對dasho.apk和dasho1.apk文件進行反編譯,觀察混淆前后項目中person類代碼,混淆前后項目中標(biāo)識符名字。觀察圖1,可以觀察到除卻activity以外的類(測試時重命名功能設(shè)置了activity除外)均被重命名,而且類中的方法和變量也均被重命名??梢宰C明dasho對類名、方法名以及變量名均進行了重命名工作,有效地實現(xiàn)了標(biāo)識符重命名功能。圖2是dasho混淆后標(biāo)識符效果圖。由圖2可以得到dasho的標(biāo)識符重命名采用了hash改名和過度重載。類、方法和變量均被用大量無意義不相關(guān)的名字進行重命名,這是hash改名,增加了攻擊者的閱讀難度;在兩個不同的類eval_e和eval_j中有名同為eval_g的兩個變量以及同為同為eval_q的兩個變量,可見dasho會在不同的類中重復(fù)使用相同無意義的名字來進行重命名工作,這屬于過度重載,進一步增加了攻擊者對程序的理解難度。由圖3可知,到混淆后程序string類型變量address、age和name變量的內(nèi)容均被加密,無法直接獲得常量內(nèi)容,但sex變量沒有被加密,可以直接獲取內(nèi)容。可以看出dasho采用加密算法很好地對程序中字符串常量內(nèi)容進行加密,加密效果很顯著,然而仍存在缺漏,少數(shù)常量沒有被加密。表1為person類中各方法控制流參數(shù)變化表。使用idapro對dasho.apk和dasho1.apk進行反匯編工作,獲取其中部分方法的控制流圖,以person類中g(shù)etmessage方法、selectsort方法和mainactivity類中onclick方法為例,統(tǒng)計各個方法控制流圖中邊數(shù)目、節(jié)點數(shù)目和控制流循環(huán)復(fù)雜度,如表1所示。盡管控制流復(fù)雜度沒有變化,但每個方法控制流圖中的邊數(shù)目和節(jié)點數(shù)目都有所變化,相比較于經(jīng)過proguard混淆前后控制流指標(biāo)沒有任何變化效果已經(jīng)很顯著。本發(fā)明附圖附表說明:圖1、圖2、圖3和表1是本發(fā)明公開的一種基于加密與控制流混淆的代碼安全防護能力測評方法的實驗結(jié)果。圖1是dasho混淆前后標(biāo)識符效果對比圖。使用jd-gui分別對dasho.apk和dasho1.apk文件進行反編譯,觀察混淆前后項目中person類代碼,混淆前后項目中標(biāo)識符名字。觀察圖1,可以觀察到除卻activity以外的類(測試時重命名功能設(shè)置了activity除外)均被重命名,而且類中的方法和變量也均被重命名??梢宰C明dasho對類名、方法名以及變量名均進行了重命名工作,有效地實現(xiàn)了標(biāo)識符重命名功能。圖2是dasho混淆后標(biāo)識符效果圖。由圖2可以得到dasho的標(biāo)識符重命名采用了hash改名和過度重載。類、方法和變量均被用大量無意義不相關(guān)的名字進行重命名,這是hash改名,增加了攻擊者的閱讀難度;在兩個不同的類eval_e和eval_j中有名同為eval_g的兩個變量以及同為同為eval_q的兩個變量,可見dasho會在不同的類中重復(fù)使用相同無意義的名字來進行重命名工作,這屬于過度重載,進一步增加了攻擊者對程序的理解難度。由圖3可知,到混淆后程序string類型變量address、age和name變量的內(nèi)容均被加密,無法直接獲得常量內(nèi)容,但sex變量沒有被加密,可以直接獲取內(nèi)容??梢钥闯鰀asho采用加密算法很好地對程序中字符串常量內(nèi)容進行加密,加密效果很顯著,然而仍存在缺漏,少數(shù)常量沒有被加密。方法邊數(shù)目(混淆前/混淆后)節(jié)點數(shù)目(混淆前/混淆后)控制流復(fù)雜度(混淆前/混淆后)變化(混淆后比較于混淆后)getmessage9/107/84/4不變selectsort18/2014/166/6不變onclick10/8/810/10不變表1為person類中各方法控制流參數(shù)變化表。使用idapro對dasho.apk和dasho1.apk進行反匯編工作,獲取其中部分方法的控制流圖,以person類中g(shù)etmessage方法、selectsort方法和mainactivity類中onclick方法為例,統(tǒng)計各個方法控制流圖中邊數(shù)目、節(jié)點數(shù)目和控制流循環(huán)復(fù)雜度,如表1所示。盡管控制流復(fù)雜度沒有變化,但每個方法控制流圖中的邊數(shù)目和節(jié)點數(shù)目都有所變化,相比較于經(jīng)過proguard混淆前后控制流指標(biāo)沒有任何變化效果已經(jīng)很顯著。以上所述,僅是本發(fā)明的較佳實施例而已,并非是對本發(fā)明作任何其他形式的限制,而依據(jù)本發(fā)明的技術(shù)實質(zhì)所作的任何修改或等同變化,仍屬于本發(fā)明所要求保護的范圍。當(dāng)前第1頁12