关于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://https//frida.re/

https://frida.re/docs/gadget/

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

本文作者:Alpha_h4ck, 转自FreeBuf