隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,應(yīng)用的安全問(wèn)題不斷涌現(xiàn)出來(lái),于是越來(lái)越多的應(yīng)用開發(fā)者將核心代碼由java層轉(zhuǎn)到native層,以對(duì)抗成熟的java逆向分析工具,然而如果native層的代碼如果沒有進(jìn)行任何保護(hù),還是比較容易被逆向分析工作者獲取其運(yùn)行邏輯,進(jìn)而完成應(yīng)用破解或者進(jìn)行其他的操作。那么提高native代碼的安全性有什么好辦法嗎?答案是肯定的,今天我們就來(lái)介紹一種有效對(duì)抗native層代碼分析的方法——代碼混淆技術(shù)。
我們擁有十年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、微信開發(fā)、小程序開發(fā)、手機(jī)網(wǎng)站制作、html5、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。那么,什么是代碼混淆呢?代碼混淆的學(xué)術(shù)定義如下:
代碼混淆(code obfuscation)是指將計(jì)算機(jī)程序的代碼,轉(zhuǎn)換成一種功能上等價(jià),所謂功能上的等價(jià)是指其在變換前后功能相同或相近。其解釋如下:程序P經(jīng)過(guò)混淆變換為P‘,若P沒有結(jié)束或錯(cuò)誤結(jié)束,那么P’也不能結(jié)束或錯(cuò)誤結(jié)束;而且P‘程序的結(jié)果應(yīng)與程序P具有相同的輸出。否則P’不是P的有效的混淆。
目前對(duì)于混淆的分類,普遍是以Collberg 的理論為基礎(chǔ),分為布局混淆(layout obfuscation)、數(shù)據(jù)混淆(data obfuscation)、控制混淆(control obfuscation)和預(yù)防混淆(preventive obfuscation)這四種類型。
1. 布局混淆
布局混淆是指刪除或者混淆軟件源代碼或者中間代碼中與執(zhí)行無(wú)關(guān)的輔助文本信息,增加***者閱讀和理解代碼的難度。軟件源代碼中的注釋文本、調(diào)試信息可以直接刪除,用不到的方法和類等代碼或數(shù)據(jù)結(jié)構(gòu)也可以刪除,這樣即可以使***者難以理解代碼的語(yǔ)義,也可以減小軟件體積,提高軟件裝載和執(zhí)行的效率。軟件代碼中的常量名、變量名、類名和方法名等標(biāo)識(shí)符的命名規(guī)則和字面意義有利于***者對(duì)代碼的理解,布局混淆通過(guò)混淆這些標(biāo)識(shí)符增加***者對(duì)軟件代碼理解的難度。標(biāo)識(shí)符混淆的方法有多種,例如哈希函數(shù)命名、標(biāo)識(shí)符交換和重載歸納等。哈希函數(shù)命名是簡(jiǎn)單地將原來(lái)標(biāo)識(shí)符的字符串替換成該字符串的哈希值,這樣標(biāo)識(shí)符的字符串就與軟件代碼不相關(guān)了;標(biāo)識(shí)符交換是指先收集軟件代碼中所有的標(biāo)識(shí)符字符串,然后再隨機(jī)地分配給不同的標(biāo)識(shí)符,該方法不易被***者察覺;重載歸納是指利用高級(jí)編程語(yǔ)言命名規(guī)則中的一些特點(diǎn),例如在不同的命名空間中變量名可以相同,使軟件中不同的標(biāo)識(shí)符盡量使用相同的字符串,增加***者對(duì)軟件源代碼的理解難度。布局混淆是最簡(jiǎn)單的混淆方法,它不改變軟件的代碼和執(zhí)行過(guò)程。
2. 數(shù)據(jù)混淆
數(shù)據(jù)混淆是修改程序中的數(shù)據(jù)域,而對(duì)代碼段不作處理。常用的數(shù)據(jù)混淆方式有合并變量、分割變量、數(shù)組重組、字符串加密等。
合并變量是將幾個(gè)變量合并為一個(gè)數(shù)據(jù),原來(lái)的每個(gè)變量占據(jù)其中一個(gè)區(qū)域,類似于一個(gè)大的數(shù)據(jù)結(jié)構(gòu)。分割變量則是將一個(gè)變量分割為兩個(gè)變量,對(duì)分割前后提供一種映射關(guān)系,將對(duì)一個(gè)變量的操作轉(zhuǎn)化為對(duì)分割后兩個(gè)變量的操作。
數(shù)組重組有數(shù)組的分割、合并、折疊和平滑等幾種方式。分割是將一個(gè)數(shù)組分成2個(gè)或多個(gè)相同維度的數(shù)組;合并則相反;折疊是增加數(shù)組的維數(shù);平滑則是相反。
在ELF文件中,全局變量和常量字符串存放在數(shù)據(jù)段中,反匯編工具可以輕易查找到字符串與代碼之間的引用關(guān)系。在軟件破解中,通過(guò)一些字符串提示可以很方便的找到代碼關(guān)鍵語(yǔ)句,從而破解軟件。字符串加密則可以對(duì)這些明顯的字符串進(jìn)行加密存儲(chǔ),在需要時(shí)再進(jìn)行解密。
3. 控制混淆
控制混淆也稱流程混淆,它是改變程序的執(zhí)行流程,從而打斷逆向分析人員的跟蹤思路,達(dá)到保護(hù)軟件的目的。一般采用的技術(shù)有插入指令、偽裝條件語(yǔ)句、斷點(diǎn)等。偽裝條件語(yǔ)句是當(dāng)程序順序執(zhí)行從A到B,混淆后在A和B之間加入條件判斷,使A執(zhí)行完后輸出TRUE或FALSE,但不論怎么輸出,B一定會(huì)執(zhí)行。
控制混淆采用比較多的還有模糊謂詞、內(nèi)嵌外聯(lián)、打破順序等方法。
模糊謂詞是利用消息不對(duì)稱的原理,在加入模糊謂詞時(shí)其值對(duì)混淆者是已知的,而對(duì)反混淆者卻很難推知。所以加入后將干擾反匯編者對(duì)值的分析。模糊謂詞的使用一般是插入一些死的或不相關(guān)的代碼(bogus code),或者是插入在循環(huán)或分支語(yǔ)句中,打斷程序執(zhí)行流程。
內(nèi)嵌(in-line)是將一小段程序嵌入到被調(diào)用的每一個(gè)程序點(diǎn),外聯(lián)(out-line)是將沒有任何邏輯聯(lián)系的一段代碼抽象成一段可被多次調(diào)用的程序。
打破順序是指打破程序的局部相關(guān)性。由于程序員往往傾向于把相關(guān)代碼放在一起,通過(guò)打破順序改變程序空間結(jié)構(gòu),將加大破解者的思維跳躍。
4. 預(yù)防混淆
預(yù)防混淆一般是針對(duì)專用的反編譯器設(shè)計(jì)的,目的就是預(yù)防被這類反編譯器反編譯。他是利用特定的反編譯器或反混淆器的弱點(diǎn)進(jìn)行專門設(shè)計(jì)。預(yù)防混淆對(duì)于特定的反編譯器非常有效,所以在使用時(shí)要綜合利用各種反編譯器的特點(diǎn)進(jìn)行設(shè)計(jì)。
騰訊御安全保護(hù)方案提供了以上所述四種混淆分類的多維度的保護(hù);布局混淆方面:提供了針對(duì)native代碼層中的函數(shù)名進(jìn)行了混淆刪除調(diào)試信息等功能;數(shù)據(jù)混淆方面:提供了針對(duì)常量字符串加密及全局變量的混淆的功能;控制混淆方面:針對(duì)代碼流程上,提供了扁平化,插入bogus 分支以及代碼等價(jià)變換等功能;預(yù)防混淆方面:在混淆過(guò)程中加入了針對(duì)主流反編譯器的預(yù)防混淆的代碼,能夠有效地抵抗其分析。此外還對(duì)應(yīng)用開發(fā)者提供不同等級(jí)的保護(hù)力度及多種混淆方式的功能的選擇,用戶可以根據(jù)自己的需求定制不同的混淆功能保護(hù)。
安全保護(hù)方案除了提供代碼混淆保護(hù)方面的技術(shù),還提供代碼虛擬化技術(shù)及反逆向、反調(diào)試等其他應(yīng)用安全加固方案,綜合使用多種代碼保護(hù)方案可以有效地提高應(yīng)用代碼安全。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)題目:淺談安卓開發(fā)代碼混淆技術(shù)-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://jinyejixie.com/article6/dpdsog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、定制網(wǎng)站、服務(wù)器托管、動(dòng)態(tài)網(wǎng)站、虛擬主機(jī)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容