1、Android反編譯
1)下載兩個工具 dex2jar,jar2java
相關閱讀下載見:http://www.linuxidc.com/Linux/2011-02/32775.htm
2)修改apk後綴為.zip,解壓得classes.dex
3)用dex2jar.bat打開classes.dex得到classes.dex.dex2jar.jar
4)用jar2java打開上面得到的jar包即得Java文件
2、Android防止反編譯
這裡介紹的Android反編譯工具是ProGuard。
ProGuard是一個SourceForge上非常知名的開源項目。官網網址是:http://proguard.sourceforge.net/。
Java的字節碼一般是非常容易反編譯的。為了很好的保護Java源代碼,我們往往會對編譯好的class文件進行混淆處理。
ProGuard的主要作用就是混淆。當然它還能對字節碼進行縮減體積、優化等。
Android Eclipse開發環境與ProGuard在Android 2.3以前,混淆Android代碼只能手動添加proguard來實現代碼混淆,非常不方便。而2.3以後,Google已經將這個工具加入到了SDK的工具集裡。具體路徑:SDK\tools\proguard。
當創建一個新的Android工程時,在工程目錄的根路徑下,會出現一個proguard的配置文件proguard-project.txt。我們可以通過簡單的配置,在elipse工程中直接使用ProGuard混淆Android工程。
使用方法:
1)打開project.properties
2)找到這句話
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
把前面的"#"去掉
3)Android tools --> Export Application Package
3、對比
未使用Proguard,反編譯的結果
使用Proguard後,反編譯的結果