發(fā)現(xiàn)很多人都在關(guān)心apk的反編譯,上傳一個可視化的工具吧,原理和下面說的差不多,就是封裝了一下。點我下載Android反編譯工具
另外,作為應(yīng)用開發(fā)者,肯定不希望自己的代碼被反編譯的,另外寫了篇文章,講述如何通過混淆代碼放在反編譯:《如何防止Android應(yīng)用被反編譯》
這段時間在學Android應(yīng)用開發(fā),在想既然是用Java開發(fā)的應(yīng)該很好反編譯從而得到源代碼吧,google了一下,確實很簡單,以下是我的實踐過程。在此鄭重聲明,貼出來的目的不是為了去破解人家的軟件,完全是一種學習的態(tài)度,不過好像通過這種方式也可以去漢化一些外國軟件。
一.反編譯Apk得到Java源代碼
首先要下載兩個工具:dex2jar和JD-GUI,前者是將apk中的classes.dex轉(zhuǎn)化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。以下是下載地址:dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
具體步驟:
- 首先將apk文件,將后綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
- 解壓下載的dex2jar,將classes.dex復(fù)制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄,運行
生成classes.dex.dex2jar.jar
- 運行JD-GUI,打開上面生成的jar包,即可看到源代碼了。
二.反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件
如果是只是漢化軟件,這將特別有用。首先還是下載工具,這次用到的是apktool,下載地址:
http://code.google.com/p/android-apktool/,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下。
具體步驟:
- 將下載的兩個包解壓到同一個文件夾下,應(yīng)該會有三個文件:aapt.exe,apktool.bat,apktool.jar;
- 在命令行下定位到apktool.bat文件夾,輸入以下命令:
apktool d C:\***.apk C:\***文件夾
命令行解釋:apktool d [要反編譯的apk文件 ] [輸出文件夾],特別注意:你要反編譯的文件一定要放在C盤的根目錄里;
- 將反編譯完的文件重新打包成apk,很簡單,輸入apktool b c:\***文件夾(你編譯出來文件夾)即可。
1、把dex文件反編譯為jar文件的工具。(dex2jar)
2、把jar反編譯為java的工具。(JD-GUI)
3、AXMLPrinter2
三者下載鏈接分別是:
http://code.google.com/p/dex2jar/
http://java.decompiler.free.fr/?q=jdgui
http://code.google.com/p/android4me/downloads/detail?name=AXMLPrinter2.zip&can=2&q=
XML文件的反編譯
apk文件中的xml文件都是經(jīng)過壓縮的,所以如果直接打開會看到一些亂碼,所以需要工具AXMLPrinter2。
安裝完java環(huán)境,然后cmd進入你把apk文件解壓到的文件目錄內(nèi),使用命令(注意,AXMLPrinter2.jar文件也要):
java -jar AXMLPrinter2.jar main.xml
成功后會在cmd里出現(xiàn)xml反編譯出的文件