2/02/2012

如何Proguard,以輸出有程式保護且可上載與發佈到 Android Market 的 APK 檔?

繼上篇如何將別人的程式反組譯後(http://phonewalker.blogspot.com/2012/02/android20.html),這篇來教各位開發者如何保護自己~新版Sdk支援Proguard,在專案產生時就會產生,不過需注意Proguard的版本更新,可以參考之前寫的(http://phonewalker.blogspot.com/2012/02/proguard-apk-conversion-to-dalvik.html)

(1)打開專案裡的 proguard.cfg 檔,加入在 AndroidManifest.xml 中出現的 activity 名稱 (如有引入 JNI 也需要,參考:http://developer.android.com/guide/developing/tools/proguard.html

(2)找到並打開專案中的 default.properties 檔,加入 Enabled the Proguard 所需參數到 default.properties 檔中
image
(3)編輯 Android 專案,以產生原始 apk 檔 (在專案上以滑鼠右鍵叫出選單再點選 Build Project)。

(4)匯出有簽章並經 Proguard 混淆且已 Zipaglin 可上載到 Android Market 的 apk 檔  (在專案上以滑鼠右鍵叫出選單再點選 Android Tools -- Export Signed Application Package...).

(5)如匯出 apk 檔成功,Refresh 專案,就可看到在專案底下有個 proguard 目錄,其中有許多關於在經過 Proguard 混淆後的專案參數資料可以參考。
image
PS1:當使用 Eclipse 中 Android SDK (ADT) 所提供的 Export Wizard 匯出含簽章的 .apk 檔時,ADT就已順便幫你使用 Zipalign 優化過了,因此可將製作出的 .apk 檔上載 Android Market,
參考:http://developer.android.com/guide/developing/tools/zipalign.html
(6)然後用反compile-工具最多可以DEX文件,最後更新導出反compile-之後的混淆程式碼如下圖最

(7)可以與沒有使用Proguard 的apk做比較,如何比較?
產生後的兩組apk,經由反組譯,方可以看出加入Proguard 的差異

沒有留言:

張貼留言

請留言~一起討論吧~