注意:
资源和代码是两个工具
资源一般不需要,直接解压即可
防止反编译方法:<混淆加固>
1.1、使用工具
- apktool (资源文件获取)
- dex2jar(源码文件获取)
- jd-gui (源码查看)
1.2、工具介绍
apktool
作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2jar
作用:将apk反编译成java源码(classes.dex转化成jar文件)
jd-gui
作用:查看APK中classes.dex转化成出的jar文件,即源码文件
apktool下载地址:
https://ibotpeaches.github.io/Apktool/install/
1、在Chrome中,打开网址,找到图中所示Mac相关部分
2、在Chrome中,打开网址,在“ wrapper script”上点击鼠标右键,选择“链接存储为”
存储时,必须选择格式为“所有文件”,文件名为“apktool”,没有后缀(貌似有些浏览器不能选择格式,我在Chrome浏览器可以选择文件格式)
3、点击“find newest here”进入下载页面,选择合适的版本,下载.jar文件,下载后文件名要改为“apktool.jar”
4、把apktool和apktool.jar文件移动到"/usr/local/bin"目录下,并使用终端命令为两个文件增加执行权限
命令如下:
chmod +x apktool.jar
5、验证是否安装成功
在终端输入命令:apktool
打印如下信息:
方法一:使用apktool
1、工具下载:https://ibotpeaches.github.io/Apktool/install/
2、下载script,命名为:apktool.sh
3、下载apktool.jar,命名:apktool.jar
(.sh脚本是自写脚本可不用更新最新,下载的jar文件名必须是apktool.jar,不能是apktool-2.0.1.jar这样的形式)
4、增加这两个文件可执行权限(chmod a+x file )
在命令提示符下执行:
cd /usr/local/bin
chmod a+x apktool.sh
chmod a+x apktool.jar
5、执行apktool.sh d XXX.apk
注:XXX.apk 是在当前目录下的需要反编译的apk文件
总结:该方法可以反编译出资源文件和smali文件
方法二:使用apktool
步骤
将下载的 dex2jar 压缩包解压。
运行终端,cd 命令到 dex2jar 目录,目录可以直接拖这个文件夹到终端窗口。
将 apk 文件改后缀为 7z,这个比较好解压(电脑其他格式无法解压,也没有装其它软件,可能是懒)我将其中的 classes.dex文件拷贝到 dex2jar目录。
在终端运行 ./d2j-dex2jar.sh classes.dex
如果出现 Permission Denied 异常,一般报的哪个文件就修改对应文件权限即可
例如: d2j_xxx.sh 文件,然后修改 chmod 777 d2j_xxx.sh
反编译成功后,将目录中生成的 classes-dex2jar.jar 文件用 jd-gui 打开就可以看到代码了,也可以进行导出等操作,当然也可能是混淆后的代码。
(1)打开终端,输入:
cd /usr/local/bin
如果电脑不存在这个目录,那么创建一个:
sudo mkdir bin
创建完成后再使用cd命令看看。
(2)打开终端,使用cd命令定位到apktool文件夹:
cd Desktop/apktool/
使用cp命令把apktool.jar和apktool文件拷贝到/usr/local/bin
sudo cp apktool.jar apktool /usr/local/bin
之后,使用
sudo apktool
可以查看apktool的版本
(3)现在可以使用apktool相关命令了,和windows是一样的。
把apk文件放到apktool文件夹,然后回到apktool文件夹下:
cd /Desktop/apktool/
使用(xxx.apk是你的apk名字)
apktool d xxx.apk
就能进行反编译了。对于系统apk,需要额外导入框架才能反编译。更多apktool命令可以自行百度Google。
5.配置dex2jar
(1)下载https://sourceforge.net/projects/dex2jar/
,解压
(2)将dex2jar文件夹放在apktool文件夹下
(3)把apk文件解压,可以直接解压或者修改后缀.zip再解压,找到classes.dex文件,把它放进dex2jar文件夹下
(4)定位到dex2jar文件夹(不同版本的dex2jar文件名不同,请作相应替换):
cd Desktop/apktool/dex2jar-0.0.9.15/
添加权限
sudo chmod +x d2j_invoke.sh
但是我运行之后还是不行,依然是权限问题。后来找到一个解决方法:
chmod a+x *.sh
执行命令:
sh dex2jar.sh classes.dex
这时会在dex2jar文件夹下生成一个classes_dex2jar.jar文件。
6.查看java源码
下载jd-gui,将下载的jd-gui压缩包解压,然后右键上一步生成的classes_dex2jar.jar文件,选择打开方式->JD-GUI,就可以查看java源码了!