淺談安卓開發(fā)代碼混淆技術(shù)

淺談安卓開發(fā)代碼混淆技術(shù)

ID:30969811

大?。?6.50 KB

頁數(shù):3頁

時間:2019-01-05

淺談安卓開發(fā)代碼混淆技術(shù)_第1頁
淺談安卓開發(fā)代碼混淆技術(shù)_第2頁
淺談安卓開發(fā)代碼混淆技術(shù)_第3頁
資源描述:

《淺談安卓開發(fā)代碼混淆技術(shù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、淺談安卓開發(fā)代碼混淆技術(shù)關(guān)鍵字:代碼混淆,代碼保護(hù),應(yīng)用安全,應(yīng)用加固,安卓安全隨著移動互聯(lián)網(wǎng)的快速發(fā)展,應(yīng)用的安全問題不斷涌現(xiàn)出來,于是越來越多的應(yīng)用開發(fā)者將核心代碼由java層轉(zhuǎn)到native層,以對抗成熟的java逆向分析工具,然而如果native層的代碼如果沒有進(jìn)行任何保護(hù),還是比較容易被逆向分析工作者獲取其運行邏輯,進(jìn)而完成應(yīng)用破解或者進(jìn)行其他的操作。那么提高native代碼的安全性有什么好辦法嗎?答案是肯定的z今天我們就來介紹_種有效對抗native層代碼分析的方;一^t碼混淆技術(shù)。那么,什么是代碼混淆呢?代碼混淆的學(xué)術(shù)定義如下:代碼混淆(codeobfuscation)是指

2、將計算機程序的代碼,轉(zhuǎn)換成一種功能上等價,所謂功能上的等價是指其在變換前后功能相同或相近。其解釋如下:程序P經(jīng)過混淆變換為P',若P沒有結(jié)束或錯誤結(jié)束,那么P'也不能結(jié)束或錯誤結(jié)束;而且P程序的結(jié)果應(yīng)與程序P具有相同的輸出。否則P不是P的有效的混淆。目前對于混淆的分類,普遍是以Collberg的理論為基礎(chǔ),分為布局混淆(layoutobfuscation數(shù)據(jù)混淆(dataobfuscation控制混淆(controlobfuscation)和預(yù)防混淆(preventiveobfuscation)這四種類型。1.布局混淆布局混淆是指刪除或者混淆軟件源代碼或者中間代碼中與執(zhí)行無關(guān)的輔助文

3、本信息,增加攻擊者閱讀和理解代碼的難度。軟件源代碼中的注釋文本、調(diào)試信息可以直接刪除,用不到的方法和類等代碼或數(shù)據(jù)結(jié)構(gòu)也可以刪除,這樣即可以使攻擊者難以理解代碼的語義,也可以減小軟件體積,提高軟件裝載和執(zhí)行的效率。軟件代碼中的常量名、變量名、類名和方法名等標(biāo)識符的命名規(guī)則和字面意義有利于攻擊者對代碼的理解,布局混淆通過混淆這些標(biāo)識符增加攻擊者對軟件代碼理解的難度。標(biāo)識符混淆的方法有多種”例如哈希函數(shù)命名、標(biāo)識符交換和重載歸納等。哈希函數(shù)命名是簡單地將原來標(biāo)識符的字符串替換成該字符串的哈希值,這樣標(biāo)識符的字符串就與軟件代碼不相關(guān)了;標(biāo)識符交換是指先收集軟件代碼中所有的標(biāo)識符字符串,然后再隨

4、機地分配給不同的標(biāo)識符,該方法不易被攻擊者察覺;重載歸納是指利用高級編程語言命名規(guī)貝呻的一些特點,例如在不同的命名空間中變量名可以相同,使軟件中不同的標(biāo)識符盡量使用相同的字符串,增加攻擊者對軟件源代碼的理解難度。布局混淆是最簡單的混淆方法,它不改變軟件的代碼和執(zhí)行過程。2.數(shù)據(jù)混淆數(shù)據(jù)混淆是修改程序中的數(shù)據(jù)域,而對代碼段不作處理。常用的數(shù)據(jù)混淆方式有合并變量、分割變量、數(shù)組重組、字符串加密等。合并變量是將幾個變量合并為一個數(shù)據(jù),原來的每個變量占據(jù)其中一個區(qū)域,類似于一個大的數(shù)據(jù)結(jié)構(gòu)。分割變量則是將一個變量分割為兩個變量,對分割前后提供一種映射關(guān)系,將對一個變量的操作轉(zhuǎn)化為對分割后兩個變量

5、的操作。數(shù)組重組有數(shù)組的分割、合并、折疊和平滑等幾種方式。分割是將一個數(shù)組分成2個或多個相同維度的數(shù)組;合并則相反;折疊是增加數(shù)組的維數(shù);平滑則是相反。在ELF文件中,全局變量和常量字符串存放在數(shù)據(jù)段中,反匯編工具可以輕易查找到字符串與代碼之間的引用關(guān)系。在軟件破解中,通過一些字符串提示可以很方便的找到代碼關(guān)鍵語句,從而破解軟件。字符串加密則可以對這些明顯的字符串進(jìn)行加密存儲,在需要時再進(jìn)行解密。3.控制混淆控制混淆也稱流程混淆尼是改變程序的執(zhí)行流程,從而打斷逆向分析人員的跟蹤思路達(dá)到保護(hù)軟件的目的。一般采用的技術(shù)有插入指令、偽裝條件語句、斷點等。偽裝條件語句是當(dāng)程序順序執(zhí)行從A到B,混

6、淆后在A和B之間加入條件判斷,使A執(zhí)行完后輸岀TRUE或FALSE,但不論怎么輸岀,B一定會執(zhí)行。控制混淆采用比較多的還有模糊謂詞、內(nèi)嵌外聯(lián)、打破順序等方法。模糊謂詞是利用消息不對稱的原理,在加入模糊謂詞時其值對混淆者是已知的,而對反混淆者卻很難推知。所以加入后將干擾反匯編者對值的分析。模糊謂詞的使用一般是插入一些死的或不相關(guān)的代碼(boguscode),或者是插入在循環(huán)或分支語句中,打斷程序執(zhí)行流程。內(nèi)嵌(in-line)是將一小段程序嵌入到被調(diào)用的每一個程序點,外聯(lián)(outline)是將沒有任何邏輯聯(lián)系的一段代碼抽象成一段可被多次調(diào)用的程序。打破順序是指打破程序的局部相關(guān)性。由于程序

7、員往往傾向于把相關(guān)代碼放在一起,通過打破丿II頁序改變程序空間結(jié)構(gòu),將加大破解者的思維跳躍。3.預(yù)防混淆預(yù)防混淆一般是針對專用的反編譯器設(shè)計的,目的就是預(yù)防被這類反編譯器反編譯。他是利用特定的反編譯器或反混淆器的弱點進(jìn)行專門設(shè)計。預(yù)防混淆對于特定的反編譯器非常有效,所以在使用時要綜合利用各種反編譯器的特點進(jìn)行設(shè)計。市面的安全服務(wù)供應(yīng)商如騰訊御安全,所提供的保護(hù)方案提供了以上所述四種混淆分類的多維度的保護(hù);布局混淆方面:提供了針對na

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。