apk反编译

来源:互联网 发布:ubuntu 映射网络共享 编辑:程序博客网 时间:2024/06/05 11:12

测试环境:Ubuntu 12.04

以反编译Launcher2为例


apk文件的反编译,需要的工具apktool(反编译资源文件)和dex2jar(反编译源码)


1).反编译资源文件

http://code.google.com/p/android-apktool/downloads/list
下载  apktool1.4.3.tar.bz2 、apktool-install-linux-r04-brut1.tar.bz2 两个包,并解压到统一个目录中,解压后得到aapt  apktool  apktool.jar 。解压安装完成后输入以下命令解压:

wufen@wufenpc:~/apktool$ tar jxvf apktool1.5.2.tar.bz2 apktool1.5.2/apktool1.5.2/apktool.jar

wufen@wufenpc:~/apktool$ tar jxvf apktool-install-linux-r05-ibot.tar.bz2 apktool-install-linux-r05-ibot/aaptbzip2: (stdin): trailing garbage after EOF ignoredapktool-install-linux-r05-ibot/apktool-install-linux-r05-ibot/apktoolwufen@wufenpc:~/apktool$ 

我将解压得到的三个文件aapt  apktool apktool.jar统一放在apktool目录,并把要进行反编译的launcher2放在apktool/apk里

命令:apktool d <file.apk> <dir>

ps:sudo ln -s /home/ww/apktool/apktool(自己的apktool文件所在的位置) /usr/bin/apktool (配置全局)
         如果不配置 liutao@liutao-desktop:~$ ./apktool d xxx.apk

wufen@wufenpc:~/apktool$ ./apktool d apk/Launcher2.apk I: Baksmaling...I: Loading resource table...I: Loaded.I: Decoding AndroidManifest.xml with resources...I: Loading resource table from file: /home/wufen/apktool/framework/1.apkI: Loaded.I: Regular manifest package...I: Decoding file-resources...I: Decoding values */* XMLs...I: Done.I: Copying assets and libs...wufen@wufenpc:~/apktool$ 
于是在apktool文件夹下生成了Launcher2  framework文件夹

至此,我们就可以看到反编译后的资源文件了


ps:

将编译修改好的文件打包成apk,一般用法为

 apktool b <dir>

这里的<dir>就是刚才你反编译时输入的<dir>,输入这行命令后,如果一切正常,你会发现<dir>内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。


2).反编译java源码

1.下载dex2jar:
      http://code.google.com/p/dex2jar/downloads/list

2.将.apk解压得到classes.dex文件,将其放到apktool/apk目录。

wufen@wufenpc:~/apktool$ unzip dex2jar-0.0.9.13.zip 


执行完毕之后,会在dex2jar文件夹中生成一个classes.dex.dex2jar.jar的文件,这个文件就是反编译源码的压缩文件。

wufen@wufenpc:~/apktool$ ./dex2jar-0.0.9.13/dex2jar.sh apk/classes.dex this cmd is deprecated, use the d2j-dex2jar if possibledex2jar version: translator-0.0.9.13dex2jar apk/classes.dex -> apk/classes_dex2jar.jarDone.wufen@wufenpc:~/apktool$

3.查看反编译之后的源码

由于反编译之后的源码是.class文件,所以要用专有的软件才能看。

用JD-GUI工具查看classes.dex.dex2jar.jar文件就可以了。下载地址: http://java.decompiler.free.fr/?q=jdgui





补充 jad:

1. 反编译 classes.dex
在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文件。
如进入本机路径: D:\dex2jar-0.0.7.10-SNAPSHOT
在后面加入你要反编译的路径 如:H:\android_project\xShare-33\classes.dex
变成 : dex2jar.bat H:\android_project\xShare-33\classes.dex
成功后生成一个.jar文件
2.用rar解压出jar文件中的class文件,然后用jad或DJ Java Decompiler反编译工具将.class文件反编译成.java文件


用jad反编译java文件
1.下载jad.exe
2.解压后把jad.exe 放到你的jdk bin目录下(如:D:\Java\jdk1.6.0_06\bin)这样就可以直接在命令行里面使用jad命令了。如果有多个jdk环境,要配置成当前使用的jdk环境
3.在命令行控制台先到你要反编译的目录下,输入编译命令jad -sjava *.class就把所有.class的文件反编译成java文件了。如下命令可以反编译jfreechart-1.0.13-demo的代码:D:\Java\sorcue\jfreechart-1.0.13\jfreechart-1.0.13-demo\demo>jad -sjava *.class


3.用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.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配置文件
直接 E:\apktool-install-windows-2.1_r01-1>apktool d xShare-33.apk apk/xShare
apk/xShare 为编译后存放的文件夹
xShare-33 为要编译的apk文件




一次性编辑某个文件夹下的文件  并存放在src下面
jad -o -r -sjava -dsrc E:\apktool-install-windows-2.1_r01-1\apk\catchnote\classes.dex.dex2jar/**/*.class



原创粉丝点击