职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 603|回复: 5

andriod的apk文件相关的编译反编译工具

[复制链接]
北大青鸟 发表于 2011-9-9 10:14 | 显示全部楼层 |阅读模式
1、smali-1.2.6.jar
用途:.smali文件 转成 classes.dex文件
说明:.smali文件,类似于.class文件,可以用普通文本编辑器查看和修改。
用法举例:命令行:java -jar smali.jar classout/ -o classes.dex
下载:http://code.google.com/p/smali/downloads/list

2、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

3、AXMLPrinter2.jar
用途:xml文件 转成 普通文本文件(txt)
说明:apk中的xml文件被搞成二进制了,无法阅读,使用此工具转换后,可以查看正常的xml文件。
用法举例:命令行:java -jar AXMLPrinter2.jar main.xml > main.txt
下载:http://code.google.com/p/android4me/downloads/list

叫我小乖 发表于 2011-9-9 10:14 | 显示全部楼层
http://dohkoos.name/decompile-android-apk-file.html

classes.dex是Java源码编译后生成的字节码文件。由于Android使用的dalvik虚拟机与标准的Java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。

目前有下面这几种反编译的工具:
dexdump
Dedexer
AXMLPrinter2
apktool
dex2jar + JD-GUI
smali

Android开发包提供了一个dex的反编译工具dexdump。用法为首先启动Android模拟器,把要反编译的dex文件用adb push上传到模拟器中,然后通过adb shell登录,找到该dex文件,执行dexdump xxx.dex。总的来说dexdump功能比较弱,且用起来麻烦,另外反编译的结果可读性也很差。

另一个dex文件的反编译工具是Dedexer,且反编译的效果比较好。它可以读取dex格式的文件,生成一种类似于汇编语言的输出。这种输出与Jasmin的输出相似,但包含的是Dalvik的字节码。Dedexer与dexdump相比至少有3个优点:
1. 不需要在Android模拟器中运行;
2. 反编译后的文件目录结构和源代码结构相近,每个class文件对应一个ddx文件。不像dexdump那样把所有的结果都放在一起;
3. 可以作为反编译引擎。目前好多强大的反编译工具都是以Jasmin作为反编译引擎的。
可以下载已经编译好的jar文件ddx1.11.jar,对应Java 1.6版本。用法:
java -jar ddx1.11.jar -o -D -r -d src classes.dex //在src目录下生成ddx文件

在apk中的资源是经过压缩的,用文本工具看都是乱码,可以通过AXMLPrinter2将其转换为可读的xml文件。具体命令为:
java -jar AXMLPrinter2.jar xxx.xml output.xml

目前最好的dex反编译工具是apktool。可以帮助我们把apk文件反编译,输出smali格式的代码和图片和资源等文件,还可以在修改后重新打包。将下载下来的apktool和apktool-install-windows解压到同一目录下,有三个文件:aapt.exe,apktool.bat和apktool.jar。使用方法:
apktool d xxx.apk zzz //反编译xxx.apk到zzz目录,得到apk的图片和配置资源文件等
apktool b zzz //从文件夹zzz重建apk,输出到zzz/dist/out.apk

dex2jar是一个将Dalvik虚拟机的dex文件转换回标准Java的class文件的工具:
dex2jar xxx.apk //生成jar文件,可以用JD GUI工具直接打开查看

smali可以反编译dex文件,也可以把你修改过的代码重新编译成dex:
java -jar baksmali.jar classes.dex -o classes
java -jar smali.jar classes -o classes.dex

叫我小乖 发表于 2011-9-9 10:14 | 显示全部楼层
恩,总结的很不错学习了!我用的是apktool 和dex2jar + JD-GUI 别的都没怎么用过


yoyo 发表于 2011-9-9 10:14 | 显示全部楼层
留脚印,以后用时再学习

天上智喜 发表于 2011-9-9 10:14 | 显示全部楼层
这个太狠了,本来还准备把程序弄到android上,现在看来,还是算了吧


已经来了吗 发表于 2011-9-9 10:15 | 显示全部楼层
这个犀利了。。。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-28 06:09 , Processed in 0.123665 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表