天天看點

Android 安全之如何反編譯與加密apk包

apk包真的安全嗎?會被反編譯嗎?如何防止被反編譯?

一、檢視APK包的源碼

        dex2jar 這個工具用于将dex檔案轉換成jar檔案

        jd-gui 這個工具用于将jar檔案轉換成java代碼

        1.解壓apk壓縮包,找到classes.dex.

        執行代碼: <code>d2j-dex2jar classes.dex</code>

        2.然後使用jd-gui工具打開classes-dex2jar.jar這個檔案就可以看到源碼了

二、檢視和修改apk包資源

        apktool 解壓。

        apktool d dujinyang.apk編譯出來smail檔案,修改之後apktool b dujinyang -o KARL_dujinyang.apk把它編譯回去,當然,如果要正常使用的話要使用簽名。

        簽名使用:

        簽名之後才可以正常安裝到手機上的,當然,你可以優化下包,使用Zip對齊下,如果要深入的話,Zip還有其它用法。

文法:zipalign 4 KARL_dujinyang.apk KARL_dujinyang_ok.apk

三、如何混淆代碼防止反編譯

        Eclipse的話可以通過Jocky插件、project.properties檔案等

        Android Studio的話可以通過借助SDK中自帶的Proguard工具,需要修改build.gradle中的一行配置即可。

        并且還可以起到壓縮APK包的作用。

四、混淆sdk/Jar

        1.通過ClassLoader動态加載的方式進行加密。

        2.通過安卓sdk自帶/tools目錄下的proguard GUI進行配置,執行到最後一步即可。

五、加密apk

        1.通過動态加載時,加入自身加密算法。

        2.通過第三方平台進行加密,現在都比較穩定安全了。