http://www./thread-30768-1-1.html
今天反編譯一個apk,,遇到了很多問題,,查了好幾個文檔,現(xiàn)在把前人的一些經驗和自己碰到的問題記錄下來,作一個總結,,與大家分享,,希望對大家有幫助
一、找到apk中的class.dex:
把apk文件改名為.zip,,然后解壓縮其中的class.dex文件,,它就是java文件編譯再通過dx工具打包成的。
二,、得到java源文件
工具準備:
1,、把dex文件反編譯為jar文件的工具。(dex2jar)
http://code.google.com/p/dex2jar/downloads/list
2,、把jar反編譯為java的工具,。(JD-GUI)
http://java.decompiler./?q=jdgui
反編譯步驟:
1、把class.dex拷貝到dex2jar.bat所在目錄,,直接拖動class.dex到dex2jar.bat,,生成classes.dex.dex2jar.jar。
或者:1.在cmd下進入dex2jar.bat所在路徑,,然后輸入“dex2jar.bat XXX”,,XXX指的是你要反編譯的apk中的classes.dex文件所在路徑及名稱,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路徑下, classes.dex在D:\Android下,,所以: 你進入dex2jar.bat路徑下后,,輸入dex2jar.bat D:\Android\classes.dex,這樣會生成一個jar文件,。
2.用rar解壓出jar文件中的class文件,,然后用jad或DJ Java Decompiler反編譯工具將.class文件反編譯成.java文件
3、運行JD-GUI工具(它是綠色無須安裝的),,打開上面的jar文件,,在File下有個Save JAR Source,它可以生成src源代碼,。
三,、上面操作只能得到class文件,下面利用Google提供的apktool得到xml文件
1. 下載apktool,,可以去Google的官方下載,,地址:http://code.google.com/p/android-apktool/得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下,。解壓apktool-1.0.0.tar.bz2得到apktool.jar放到 C:\Windows ,,解壓apktool-install-windows.zip到任意文件夾(例如E盤根目錄),。(我是兩個包解壓后都放在C:\Windows下)
2. Win+R 運行CMD,,用cd命令轉到apktool-install-windows所在文件夾,輸入apktool看看。會列出一些幫助的話就成功了(解釋d為加壓 第一個路徑為你的apk所在的位置,。第二個是要輸出的位置)
在這一步中我碰到這樣一個問題:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version n
umber in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
版本問題,,裝了個jre6,在360中的軟件管家可以找到的,,記得裝完后配置path路徑,,果然,ok,。
繼續(xù):
apktool d e:\a.apk(apk路徑)ABC(文件夾名稱)
這時當前目錄下生成 ABC文件夾,,里面就是我們想要的東東了
四、將“二”中得到的java文件和“三”中得到的xml文件組合成一個android工程,,即可得到完整的apk源碼,。
但是好像項目中用到的包沒用弄進來,很是郁悶,,希望哪位大俠弄懂之后教我,,謝謝