apktool
作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2ja
作用:将apk反编译成Java源码(classes.dex转化成jar文件)
jd-gui
作用:查看APK中classes.dex转化成出的jar文件,即源码文件
===============================================================
apktool的使用
(1)下载Apktool工具
https://ibotpeaches.github.io/Apktool/
工具的使用标准请根据官网来。
(2)目的:拿到资源文件
(3)cmd常用命令:
写本章时,apktool最新版本为2.3.4,使用方法官网上也给了出来
假设我们将要反编译的安装包名称是test
apktool d test.apk:反编译文件test.apk,输出文件夹是test(文件名)
apktool b test:指定输出文件夹test,将输出文件夹重新编译成apk
以上是官方给出的命令, 实际上我们本地的apktool.jar这个文件并不一定是默认的可执行文件。
如果系统默认认为jar不是可执行文件, 那么没关系:
方法一:(利用java工具执行jar包)
直接在控制台输入:
java -jar "D:\1\apktool\\apktool.jar" d test.apk
执行效果如下:
方法二:(配置批处理文件)
批处理文件(.bat)是window系统默认的可运行文件,所以我们可以配置批处理文件来简化命令。
@echo off //让下方的多条命令不会显示在控制台
set PATH=%CD%;%PATH%;//配置当前控制台的临时环境变量
java -jar "%~dp0apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9//执行命令
注意:%CD%和%~dp0都是获取当前路径,区别是前者路径末尾没有“\”,后者有。
配置文件名为apktool.bat(名称任意), 将文件放在和apktool.jar一个目录下。
切换到当前目录:
cd D:\1\apktool
执行批处理文件:
apktool d test.apk
输出文件目录结构如下:
两种方法的本质其实都是执行apktool.jar文件来反编译test.apk。
将输出文件重新生成apk
apktool b test
输出文件目录结构如下:
重新生成的apk无法安装,原因是重新生成的包是没有签名的, 需要对该包重新签名即可安装。
dex2ja
(1)下载dex2ja工具
https://sourceforge.net/projects/dex2jar/
(2)目的:将dex文件转成jar文件
(3)操作
将apk格式改成rar, 解压
执行命令:
d2j-dex2jar.bat [classes.dex文件]
生成结果是一个jar包(备用)
jd-gui
(1)下载jd-gui工具
http://jd.benow.ca/jd-eclipse/update/#jd-gui-download
(2)打开软件,打开第二步生成的classes-dex2jar.jar文件,查看代码