Android應(yīng)用中如何保護(hù)JAVA代碼
Java Classes字節(jié)碼的反編譯太容易了,有很多功能強(qiáng)大的反編譯利器可以輕松的將Java字節(jié)碼
反轉(zhuǎn)為源代碼,但是android中普通.apk文件可以輕松的被反編譯為Java源代碼嗎?
答案是當(dāng)然可以,而且是相當(dāng)?shù)妮p松,具體步驟如下:
1.?????? 選擇你要反編譯的.apk文件, 如果它在你的Android手機(jī)里面怎么辦
?? ? ? ? ?參考這里 –>http://blog.csdn.net/jia20003/article/details/5293958
2.?????? 本質(zhì)上.apk文件只是zip格式的壓縮文件,因此你可以用WinZip,一個比較好用的工具是7-zip
?? ? ? ? ?打開.apk文件,網(wǎng)上可以download到7-zip
3.?????? 網(wǎng)上隨便找了一個android的應(yīng)用,打開apk文件結(jié)構(gòu)應(yīng)該如下:
?? ? ? ? ?res文件里面放置都是主要包括layout,drawable等子文件夾已經(jīng)里面的xml文件
?? ? ? ? ?META-INF主要記錄資源列表和各自對應(yīng)的二十字節(jié)SHA1-Digest的Key用來保護(hù).apk文件,
?? ? ? ? 不能通過非build修改和內(nèi)容替換。最感興趣的應(yīng)該是classes.dex文件,這個就是我們要反編譯的對象。
4.?????? 把classes.dex文件copy到本地,使用google提供的開源工具dex2jar
?? ? ? ? ?在windows命令行中輸入如下:dex2jar.batxxx.apk 成功執(zhí)行以后你就發(fā)現(xiàn)多了一個對應(yīng)apk
?? ? ? ? ?文件的jar文件
5.?????? 然后從jar文件到j(luò)ava源代碼,相信沒有人覺得是難事了。
?
看到自己辛辛苦苦開發(fā)出來的Android應(yīng)用如此快的被別人反編譯和copy源代碼,相信很多開發(fā)者要吐血了,不過只要我們稍微加點(diǎn)改變,想要這么輕松的讀懂classes.dex文件反編譯出來的文件也許就沒那么容易了,基于Java的代碼混淆器ProGuard已經(jīng)通過了對Android中Java應(yīng)用的代碼保護(hù),而且google已經(jīng)把它集成在android的開發(fā)環(huán)境中,但是很多時候都被大家無視!
第一步:啟用ProGuard
找到android項目 default.properties 文件在里面加入proguard.config=proguard.cfg
第二步:配置ProGuard
有時候ProGuard會根據(jù)情況remove掉一些它認(rèn)為沒有用的class而實(shí)際上這些class仍然被使用,這些情況包括以下幾種:
?? ? - Class只在AndroidManifest.xml文件中被引用
?? ?- 通過JNI的方法調(diào)用
?? ?- 通過反射動態(tài)被引用的方法和域值
當(dāng)你得到ClassNotFoundException之類的錯誤的時候,你就應(yīng)該意識到要自己配置了:
-keep public class <myclass> 更多的參數(shù)選項可以參考ProGuard官方文檔。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
