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

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