apk反编译(转)

http://bbs.hiapk.com/thread-1897009-1-1.html

《android-apktool》软件软件可以访问它的主页http://code.google.com/p/android-apktool/下载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。
apktool d "C:\LiveWallpapersPicker.apk" "C:\LiveWallpapersPicker
重新打包
apktool b "C:\LiveWallpapersPicker"

编译dex获取Java源代码
         Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具:dex2jar,下载地址:http://code.google.com/p/dex2jar/。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件,然后可以通过jad工具把jar文件反编译成Java源文件,jd-gui下载地址:
http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip 。
详细步骤:

解压apk文件,直接拖拽(rar解压软件),找到classes.dex文件
在cmd下进入dex2jar.bat所在路径,
然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称(classes上面解压得到),
如:dex2jar.bat D:\classes.dex;
这样会生成一个jar文件,然后用jd-gui工具将jar文件反编译成java文件,选择保存所有,它会生成一个压缩文件,所有的源码都在这个压缩文件中,解压了就可以看到详细的代码了。



Android DEX反汇编器 baksmali2010-10-31 
http://code.google.com/p/smali/downloads/list
将需要反汇编的classes.dex和 baksmali-1.2.4.jar放到同一个目录下,然后执行
java -jar baksmali-1.2.4.jar -o classout/ classes.dex
就将classes.dex的内容 反汇编到 classout目录之下了
baksmali有几个重要的选项
-x,–deodex   可以对针对特定平台优化过的dex文件,也就是odex文件进行反汇编, 比如
java -jar baksmali-1.2.6.jar -x Calculator.odex
odex文件依赖于生成它时的 BOOTCLASSPATH目录下的所有文件,在odex里存储着所有依赖着的文件的checksum信息,以确保在虚拟机中加载时,也能加载匹配的依赖文件
BOOTCLASSPATH 就是当主jar/apk加载是, 同时需要加载的jars/apk列表
一般的Android系统, BOOTCLASSPATH 有这个5个jars
core.jar, ext.jar, framework.jar, android.policy.jar 以及 services.jar
它们都能在 /system/framework 目录下找到
对于Layout文件,也可以转
java -jar AXMLPrinter2.jar AndroidManifest.xml > Android.txt
posted @ 2011-10-26 09:15  厘米  阅读(483)  评论(0编辑  收藏  举报