关于apk.sh
apk.sh是一款功能强大的Android Apo逆向工程分析工具,该工具本质上是一个Bash脚本,可以帮助广大研究人员轻松对目标Android应用程序执行逆向工程分析,并能够将一些重复执行的任务以自动化的形式实现,例如针对APK文件的提取、解码、重构和修复等工作。
功能介绍
apk.sh使用了apktool来执行反汇编、解码和资源重构任务,并使用了其他一些bash脚本来自动化Frida小工具的注入过程。除此之外,该工具还支持App捆绑和APK拆分。
当前版本的apk.sh支持下列功能:
1、修改APK文件并在启动时加载Frida小工具;
2、支持App捆绑和APK拆分;
3、使用apktool将资源反汇编为几乎原始的形式;
4、使用apktool将解码的资源重构回二进制APK/JAR;
5、用apksigner对apk的代码进行签名;
6、支持多种架构,例如ARM、ARM64、x86、x86_64;
7、Android设备无需Root;
工具依赖
apktool
apksigner
unxz
zipalign
aapt
adb
工具下载
该工具基于Shell开发,因此我们需要在支持Shell/Bash脚本的设备上使用该工具。
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/ax/apk.sh.git
工具使用参考
参数选项
-a, --arch <arch>:指定目标架构; -g, --gadget-conf <json_file>:指定一个Frida小工具; -n, --net:在构建时添加一个允许的网络安全配置; -s, --safe:解码时不解码资源,例如apktool -r; -d, --no-dis:不反汇编dex,解码时可选,例如apktool -s;
简单使用
apk.sh [SUBCOMMAND] [APK FILE|APK DIR|PKG NAME] [FLAGS] apk.sh pull [PKG NAME] [FLAGS] apk.sh decode [APK FILE] [FLAGS] apk.sh build [APK DIR] [FLAGS] apk.sh patch [APK FILE] [FLAGS] apk.sh rename [APK FILE] [PKG NAME] [FLAGS]
子命令
pull 从设备/模拟器中拉取APK decode 解码APK build 重构APK patch 修改APK rename 重命名APK包
工具使用
使用方法
首先,使用下列命令将APK从设备中拉取到本地:
./apk.sh pull <package_name>
运行下列命令即可解码APK:
./apk.sh decode <apk_name>
运行下列命令即可重构APK:
./apk.sh build <apk_dir>
下列命令可修改APK并在APK启动时加载frida-gadget.so:
./apk.sh patch <apk_name> --arch arm ./apk.sh patch <apk_name> --arch arm --gadget-conf <config.json>
上述命令还需要指定一个Frida小工具的配置JSON文件。
许可证协议
本项目的开发与发布遵循GPL-3.0开源许可证协议。
项目地址
apk.sh:【GitHub传送门】
参考资料
https://ibotpeaches.github.io/Apktool/
https://lief-project.github.io/doc/latest/tutorials/09_frida_lief.html
https://koz.io/using-frida-on-android-without-root/
https://github.com/sensepost/objection/
https://github.com/NickstaDB/patch-apk/
https://neo-geo2.gitbook.io/adventures-on-security/frida-scripting-guide/frida-scripting-guide