安装步骤
1、Apktool下载
安装apktool
Apktool下载
- macOS:
- Download Mac wrapper script (Right click, Save Link As
apktool
) - Download apktool-2 (find newest here)
- Rename downloaded jar to
apktool.jar
- Move both files (
apktool.jar
&apktool
) to/usr/local/bin
(root needed) - Make sure both files are executable (
chmod +x
) - Try running apktool via cli
Or you can install apktool via Homebrew:
- Install Homebrew as described in this page
- Execute command
brew install apktool
in terminal (no root needed). The latest version will be installed in/usr/local/Cellar/apktool/[version]/
and linked to/usr/local/bin/apktool
. - Try running apktool via cli
- Download Mac wrapper script (Right click, Save Link As
Note - Wrapper scripts are not needed, but helpful so you don’t have to type java -jar apktool.jar over and over.
一、下载 apktool-2xxx.jar,重命名为apktool.jar
下载地址:iBotPeaches / Apktool / Downloads — Bitbucket
或者下载地址: Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.
或者下载地址: Apktool v2.7.0 Released
二、apktool 文件下载地址
GitHub - renhaijun/Apktool: A tool for reverse engineering Android apk files
在工程script目录下的osx目录下直接复制下来就行:
Apktool/scripts/osx at master · renhaijun/Apktool · GitHub
在访达中前往“/usr/local/bin”这个隐藏目录
2、把 apktool.jar 和 apktool 这两个文件,复制或剪切到 /usr/local/bin 目录。设置权限。
cd /usr/local/bin
chmod +x apktool
chmod +x apktool.jar
输入 apktool ,查看是否展示apktool的相关信息,有则配置成功。
Macbook$ apktool
Apktool v2.7.0 - a tool for reengineering Android apk files
with smali v2.5.2-403e9037 and baksmali v2.5.2-403e9037
Copyright 2010 Ryszard Wiśniewski <brut.alll@gmail.com>
Copyright 2010 Connor Tumbleson <connor.tumbleson@gmail.com>
usage: apktool
-advance,--advanced prints advance information.
-version,--version prints the version then exits
usage: apktool if|install-framework [options] <framework.apk>
-p,--frame-path <dir> Stores framework files into <dir>.
-t,--tag <tag> Tag frameworks using <tag>.
usage: apktool d[ecode] [options] <file_apk>
-f,--force Force delete destination directory.
-o,--output <dir> The name of folder that gets written. Default is apk.out
-p,--frame-path <dir> Uses framework files located in <dir>.
-r,--no-res Do not decode resources.
-s,--no-src Do not decode sources.
-t,--frame-tag <tag> Uses framework files tagged by <tag>.
usage: apktool b[uild] [options] <app_path>
-f,--force-all Skip changes detection and build all files.
-o,--output <dir> The name of apk that gets written. Default is dist/name.apk
-p,--frame-path <dir> Uses framework files located in <dir>.
For additional info, see: https://ibotpeaches.github.io/Apktool/
For smali/baksmali info, see: https://github.com/JesusFreke/smali
3、反编译
将需要反编译的apk文件,复制或剪切到 /usr/local/bin 目录。
在终端输入“apktool d xxx.apk”,xxx为文件名。
MacBook-Pro bin % apktool d test.apk
I: Using Apktool 2.5.0 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /Users/os/Library/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Baksmaling classes2.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
反编译完成后,apk同目录下会生成一个文件夹。
其中d是decode的意思,表示我们要对apk文件进行解码。
还可以再加上一些附加参数来控制decode的更多行为:
·f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
apktool d -f test.apk
·o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹。
·s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
apktool d -s test.apk
·r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)。
使用apktool 将APK 文件解析出来,这样能获取到 /res 目录下的资源文件。
4、解压文件
在apk文件上右键单击,解压文件。
解压后得到了若干个dex文件。它是java源代码经过编译,再通过dx工具打包而成。
5、使用dex2jar
jadx-gui下载地址: https://github.com/ys1231/jadx
复制出bin文件夹,把复制jadx-dev-all.jar文件放在jadx-gui目录下
点击jadx-gui 执行启动jadx-dev-all.jar, 把classes.dex文件托到gui中查看。
https://github.com/ys1231/jadx
或者
dex2jar下载
将dex文件复制到dex2jar所在的文件夹。
执行命令
sh d2j-dex2jar.sh classes.dex
结果如下,提示“Permission denied”
MacBook-Pro dex2jar-2.0 % sh d2j-dex2jar.sh classes.dex
d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied
这是文件权限不足导致的。执行如下命令修改权限:
chmod 777 d2j_invoke.sh
然后再执行反编译命令。过程如下:
MacBook-Pro dex2jar-2.0 % chmod 777 d2j_invoke.sh
MacBook-Pro dex2jar-2.0 % sh d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> ./classes-dex2jar.jar
6、
完成后,目录下出现了一个名为“classes-dex2jar.jar”的jar包。
怎么处理这个jar包呢?这个时候jd-gui就起作用了。
使用jd-gui
jd-gui下载
或者 jadx-gui下载地址: https://github.com/ys1231/jadx
下载后得到一个tar文件。双击解压。
打开JD-GUI主程序,将jar包拖进主窗口。
或者 jadx-gui