apk反编译一直使用别人做好的一套工具,但是越来越多的公漏洞进行司对反编译工具的研究并加以使用,有时我们使用老版本的工具无法破解apk。所以,保持我们的工具实时更新变得越来越重要。
1、android-apktool
a.进入https://code.google.com/p/android-apktool/downloads/list下载最新的文件。window系统下载apktool1.5.2.tar.bz2和apktool-install-windows-r05-ibot.tar.bz2。
b.将下载好的文件解压后的文件(注意是文件不是文件夹)copy到c:\windows\目录。在cmd中输入apktool,指令有效就说明成功了。
c.反编译:apktool d 路径+name.apk 路径+foldename
如果出现Exception in thread "main" brut.androlib.err.UndefinedResObject: resource spec错误,去手机/system/framework下取出framework-res.apk,执行指令apktool if 路径+framework-res.apk
打包成apk: apktool b foldename,其中foldername为反编译得到的文件夹。
2. dex2jar下载后解压即可使用。
用途:将apk或者dex转化为可以用gui查看的class文件
下载地址:http://code.google.com/p/dex2jar/downloads/list
3. smali.jar和smali下载后放置到apktool目录下即可
用途:.smali文件 转成 classes.dex文件
说明:.smali文件,类似于.class文件,可以用普通文本编辑器查看和修改。
用法举例:命令行:java -jar smali.jar classout/ -o classes.dex
下载地址:http://code.google.com/p/smali/downloads/list
4. baksmali-1.2.6.jar
用途:classes.dex文件 转成 .smali文件
说明:classes.dex不便于查看和理解,使用此工具转成的.smali文件易于阅读和修改。
用法:命令行:java -jar baksmali.jar -o classout/ classes.dex
下载:http://code.google.com/p/smali/downloads/list
5. AXMLPrinter2.jar
用途:xml文件 转成 普通文本文件(txt)
说明:apk中的xml文件被搞成二进制了,无法阅读,使用此工具转换后,可以查看正常的xml文件。
用法举例:命令行:java -jar AXMLPrinter2.jar main.xml > main.txt
下载:http://code.google.com/p/android4me/downloads/list
APK反编译步骤:
1. 应用test.apk文件拷贝到apktool文件夹下
2.打开cmd,跳转到apktool目录下输入apktool.bat d test.apk,得到test文件
3. 经过上述步骤后,test文件中生成.smali文件,工具文件smali.jar和smali拷贝到apktool根目录下,
再使用命令:java -jar smali.jar test/ -o classes.dex
4. 把文件classex.dex拷贝到dex2jar根目录下,
执行命令:dex2jar.bat classes.dex, 便会得到classes_dex2jar.jar文件。
5. classes_dex2jar.bat使用jdgui打开就可以看见java代码了。