开始鹅厂实习的社畜搬砖生活(°∀°)ノ
frida-gadget的优势在于通过对应用重打包,加入gadget.so的调用,从而实现frida的hook
这种途径避免了注入所需要的root权限
发现了一个现成的脚本,但测了一下似乎有一些问题,明天修一下看看
以下是手动流程
解包
apktool d xxx.apk
-r选项可以使得不解析资源,但AndroidManifest.xml也不会解析,此时无法添加gadget.so需要的socket权限
添加lib和修改smali
lib/armeabi/libxxx.so
修改入口smali的construct method
将locals加1
const-string v0, "frida-gadget"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
寄存器名称v0的数字使用locals数量的最后一个
添加权限
在AndroidManifest.xml中,<application>外添加权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
打包
直接apktool b xxx打包经常会报资源错误,此时有四个解决办法
- 暴力删除出错的layout文件
- 修改出错的layout文件
- 不解包资源文件,也就是在解包的时候加入-r选项
- 通过
-f -p <empty path>选项使得打包时忽略这些资源
apktool b -f -p . xxx -o output.apk
-f => --force-all
-p => resource path
或者单独通过其他程序解码AndroidManifest.xml,添加权限后再编码回目录中,此时可以直接apktool b打包
签名
java -jar signapk.jar testkey.x509.pem testkey.pk8 ori.apk output_sig.apk
安装
apk install -r xxx.apk
-r => replace,直接覆盖旧包
其他
除此以外还有通过其他lib.so的依赖项来加载gadget.so的方法,这样子可以省去修改smali的步骤,但要求APK必须存在至少一个native.so的使用,因此有一定使用条件
安卓应用动态 Hook:Frida gadget 使用详解
本文介绍了如何使用 Frida gadget 对安卓应用进行动态 Hook,通过重打包应用,添加 gadget.so 并修改 smali 文件,实现无需 root 权限的 hook 功能。详细步骤包括解包、添加权限、打包、签名和安装。此外,还提到了一种通过其他 lib.so 依赖加载 gadget.so 的方法,但这需要应用已有 native.so 的前提。
4681

被折叠的 条评论
为什么被折叠?



