河北铝猎工艺品有限公司

您好,微網(wǎng)歡迎您! 登錄  |  注冊
汕頭公司 |  深圳公司              咨詢熱線:400-830-8248               微網(wǎng)優(yōu)點(diǎn)  |  視頻介紹 |  服務(wù)支持
開店咨詢
咨詢電話:400-830-8248
微網(wǎng)商學(xué)院
中國第一微商學(xué)院
網(wǎng)絡(luò)商學(xué)院
首頁 > 商城運(yùn)營
APK混淆保護(hù)解析,如何保護(hù)APP應(yīng)用安全
文章出處:微網(wǎng)  更新時(shí)間:2015-05-25  點(diǎn)擊率:
到目前為止,對于APK的保護(hù),混淆技術(shù)是最為基本的保護(hù)方法。JAVA混淆工具也非常多,包括商業(yè)的、免費(fèi)的、開放源代碼的,大多是對Class文件進(jìn)行混淆處理,也有少量工具首先對源代碼進(jìn)行處理,然后再對Class進(jìn)行處理,這樣加大了混淆處理的力度。
    做APP開發(fā)的一般都會(huì)遇到如何保護(hù)應(yīng)用APK代碼的問題。Java APK語言是基于jvm上面,反編譯APK源代碼很很容易。包括所有的class文件、src文件和jsp文件等等。

    到目前為止,對于APK的保護(hù),混淆技術(shù)是最為基本的保護(hù)方法。JAVA混淆工具也非常多,包括商業(yè)的、免費(fèi)的、開放源代碼的,大多是對Class文件進(jìn)行混淆處理,也有少量工具首先對源代碼進(jìn)行處理,然后再對Class進(jìn)行處理,這樣加大了混淆處理的力度。

    目前主要的混淆技術(shù)按照混淆目標(biāo)主要可分為分別為:符號混淆、數(shù)據(jù)混淆、控制混淆、控制流重組、預(yù)防性混淆。對此,集中對其進(jìn)行簡單的分析。

    一、符號混淆

    Class文件中有許多與程序執(zhí)行本身無關(guān)的信息,例如變量名稱、方法名稱,并帶有一定的含義,例如某個(gè)方法名為getKeyLength(),那么這個(gè)方法很可能就是用來返回Key的長度。符號混淆就是打亂這些信息,將其變成無任何意義的表示,例如:對于所有的方法從method_001開始編號;將所有的變量從vairant_001開始編號。符號混淆可對APK反編譯帶來一定的困難,從而達(dá)到保護(hù)APP安全的作用。

    對于私有函數(shù)、局部變量,可改變它們的符號,也不影響程序的運(yùn)行。但是一些接口名稱、公有函數(shù)、成員變量,若有其它外部模塊需要引用這些符號,往往需要保留這些名稱,否則外部模塊找不到這些名稱的方法和變量。

    二、數(shù)據(jù)混淆

    數(shù)據(jù)混淆是對程序使用的數(shù)據(jù)進(jìn)行混淆,可分為改變數(shù)據(jù)存儲(chǔ)及編碼和改變數(shù)據(jù)訪問。

    改變數(shù)據(jù)存儲(chǔ)和編碼可以打亂程序使用的數(shù)據(jù)存儲(chǔ)方式。例如將一個(gè)有10個(gè)成員的數(shù)組,拆開為10個(gè)變量,并且打亂這些變量的名字;將一個(gè)兩維數(shù)組轉(zhuǎn)化為一個(gè)一維數(shù)組等。另外,一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu),我們將打亂它的數(shù)據(jù)結(jié)構(gòu),例如用多個(gè)類代替一個(gè)復(fù)雜的類等。

    改變數(shù)據(jù)訪問,例如訪問數(shù)組的下標(biāo)時(shí),我們可以進(jìn)行一定的計(jì)算。

    在實(shí)踐混淆處理中,這兩種方法通常是綜合使用的,在打亂數(shù)據(jù)存儲(chǔ)的同時(shí),也打亂數(shù)據(jù)訪問的方式。經(jīng)過對數(shù)據(jù)混淆,程序的語義變得復(fù)雜了,這樣增大了APK反編譯的難度。

    三、控制混淆

    控制混淆就是對程序的控制流進(jìn)行混淆,使得應(yīng)用APK更加難以反編譯,通?刂屏鞯母淖冃枰黾右恍╊~外的計(jì)算和控制流,因此在性能上會(huì)給程序帶來一定的負(fù)面影響。有時(shí),還需要在程序的性能和混淆程度之間進(jìn)行權(quán)衡。

    四、控制流重組

    重組控制流也是重要的混淆方法。例如,程序調(diào)用一個(gè)方法,混淆后,可將該方法代碼嵌入到調(diào)用程序當(dāng)中。反過來,程序中的一段代碼也可以轉(zhuǎn)變?yōu)橐粋(gè)函數(shù)調(diào)用。另外,對于一個(gè)循環(huán)的控制流,為可以拆分多個(gè)循環(huán)的控制流,或者將循環(huán)轉(zhuǎn)化成一個(gè)遞歸過程。這種方法最為復(fù)雜,研究的人員也非常多。

    五、預(yù)防性混淆

    這種混淆通常是針對一些專用的反編譯器而設(shè)計(jì)的,一般來說,這些技術(shù)利用反編譯器的弱點(diǎn)或者Bug來設(shè)計(jì)混淆方案。例如,有些反編譯器對于Return后面的指令不進(jìn)行反編譯,而有些混淆方案恰恰將代碼放在Return語句后面。這種混淆的有效性對于不同反編譯器的作用也不太相同的。

    文章編輯:微網(wǎng)網(wǎng)絡(luò)   最好的微商城系統(tǒng)盡在Micronet微網(wǎng)

    如需了解更多APP商城資訊,可撥打全國免費(fèi)電話400-830-8248

    關(guān)注微網(wǎng)動(dòng)態(tài),可掃描二維碼或查找微信號micronetshop
 
 

 

聲明:本網(wǎng)部份文章為轉(zhuǎn)載文章,在每篇文章底部有說明,文章的觀點(diǎn)和立場僅代表作者個(gè)人立場,不代表微網(wǎng)立場,若是文章轉(zhuǎn)載中有侵范您的權(quán)益,請發(fā)郵件到 493149@qq.com或致電13922854199通知?jiǎng)h除,謝謝!

在線咨詢

免費(fèi)電話 免費(fèi)熱線:400-830-8248  

微信咨詢  

注冊開店

代理加盟

返回頂部