在我做南京学思XSuperMES时,反编译可以帮助我们学习别人架构等一些技术,这对我们在学习的过程中有
一定的帮助,现把反编译所用到的工具分享给大家,感谢学思。
三个工具:
网站code.google.com
1、apktool,反编译获取xml文件,读取应用程序的资源信息。
2、dex2.jar,把dex 文件转化为 jar 文件 。
3、jd-gui.exe 把 .class.jar 转化 java 文件。
apktool:
命令行到apktool目录:apktool d [apk文件] [反编译后的文件存放地址]
这可反编译得到程序的xml和资源文件,同时等到的.9.png文件也可用。
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.jar到 C:\Windows ,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。
2. Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。会列出一些
帮助的话就成功了(解释d为加压 第一个路径为你的apk所在的位置。第二个是要输出的位置)
apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC 3. 在解压后的文件夹中可以得到apk的xml配置文
件
四、将“二”中得到的class文件和“三”中得到的xml文件组合成一个android工程,即可得到完整的apk
源码
apktool反编译时经常会出现下面的信息
1.Input file was not found or was not readable.
2.Destination directory (C:\Users\user\a) already exists. Use -f switch if you want to
overwrite it.
3.Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars c
fil..........
解决方案:
1和2是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f <apkPath> -o
<folderPath>,参数具体的意思可以直接打apktool回车(windows)查看帮助
3是因为apktool版本过低导致,请升级到最新版本,地
址:https://bitbucket.org/iBotPeaches/apktool/downloads
dex2jar
解压apk得到classes.dex
命令行dex2jar目录:dex2jar [classes.dex]
生成classes.dex.dex2jar.jar在classes.dex所在目录
jd-gui
用jd-gui打开classes.dex.dex2jar.jar便可看到源代码