標籤:android sdk adt 混淆 proguard
我在部落格上發表一些我的Android學習心得,希望對大家能有協助。
這一篇我們講述一下最新的ADT環境下如何進行Android混淆
在新版本的ADT建立項目時,混碼的檔案不再是proguard.cfg, 而是project.properties和proguard-project.txt。 我們把之前配置都配置好了,proguard已經在包含在sdk中了。
環境配置參考 Android學習心得(1) --- MAC下Android環境的搭建
建立一個項目的時候,會自動產生project.properties和proguard-project.txt檔案, 無需自己建立,如果你的項目無法自動產生,那麼你就要檢查一下你的ADT版本了
如果需要對項目進行全域混碼,只需要進行一步操作:將project.properties的中“#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”把“#”去掉就可以了。
由於apk檔案的混淆往往是伴隨著檔案的壓縮和代碼的最佳化問題,混淆的apk檔案解壓轉換為jar檔案, 使用ju-gui開啟以後有一個不太引人注意的細節問題---其中找不到資源檔類。 利用這一特性,我們可以直接利用apktool解壓apk檔案,對其smali檔案的檔案名稱進行分析, 如果存在一個或以上的資源的smali檔案,就可以證明該apk檔案沒有混淆,反之,則說明已經是混淆過了的檔案。 我們將沒有混淆和混淆過的apk分別使用Eclipse匯出並簽名
參考Android學習心得(12) --- APK簽名keystore
分別通過dex2jar和jd-gui查看原始碼
明顯的發現,第二個顯示的原始碼已經被混淆過了,產生了a,b,c三個類,R.class已經不見了。另外一個明顯的區別是,混淆過後的apk大小是未混淆的apk三分之一,代碼往往經過壓縮和最佳化。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Android學習心得(13) --- Android代碼混淆(1)