MD,昨天背到家了,電腦上的硬碟壞了,最近搞的工程全完蛋,就只剩下一個apk。只能從apk入手,重建工程了。
回到正題,反編譯APK,並擷取java原始碼以及資源檔。
參考博文: http://blog.csdn.net/sunboy_2050/article/details/6727581
一、反編譯Apk得到Java原始碼
首先要下載兩個工具:dex2jar和JD-GUI
前者是將apk中的classes.dex轉化成Jar檔案,而JD-GUI是一個反編譯工具,可以直接查看Jar包的原始碼。以下是:
dex2jar: http://code.google.com/p/dex2jar/downloads/list。請下載最新的dex2jar,否則可能會報錯,我使用了參考博文中的dex2jar,在反編譯的時候就出現了錯誤。
JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
具體步驟:
首先將apk檔案,將尾碼改為zip,解壓,得到其中的classes.dex,它就是java檔案編譯再通過dx工具打包而成的;
解壓下載的dex2jar,將classes.dex複製到dex2jar.bat所在目錄。在命令列下定位到dex2jar.bat所在目錄
運行
dex2jar.bat classes.dex
產生
classes.dex.dex2jar.jar
解壓jdgui.zip, 運行JD-GUI(jd-gui.exe),開啟上面產生的jar包,即可看到原始碼了.
二、反編譯apk產生程式的原始碼和圖片、XML配置、語言資源等檔案
如果是只是漢化軟體,這將特別有用。
首先還是下載工具,這次用到的是apktool
:http://code.google.com/p/android-apktool/downloads/list
下載:apktool1.4.3.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2(兩個包都下載)
具體步驟:
將下載的兩個包解壓到同一個檔案夾下,應該會有三個檔案:aapt.exe,apktool.bat,apktool.jar
在命令列下定位到apktool.bat檔案夾,輸入以下命令:apktool d C:\*.apk C:\*檔案夾,
特別注意:你要反編譯的檔案一定要放在C盤的根目錄裡
將反編譯完的檔案重新打包成apk,很簡單,輸入apktool b c:\***檔案夾(你編譯出來檔案夾)即可,命令如下:
打包apk後的檔案在目錄C:\HelloAndroid下,產生了兩個檔案夾:
build
dist
其中,打包產生的HelloAndroid.apk,在上面的dist檔案夾下,Ok
Note :
反編譯之後的java代碼跟XML資源,是不能直接複製到Workbench裡編輯的。XML檔案中的控制項 的id = "@id/widget_id", 必須在修改為:id= "@+id/widget_id"。java代碼中,其代碼的邏輯還是要重新寫的