190702 安卓-Frida-gadget

安卓应用动态 Hook:Frida gadget 使用详解
本文介绍了如何使用 Frida gadget 对安卓应用进行动态 Hook,通过重打包应用,添加 gadget.so 并修改 smali 文件,实现无需 root 权限的 hook 功能。详细步骤包括解包、添加权限、打包、签名和安装。此外,还提到了一种通过其他 lib.so 依赖加载 gadget.so 的方法,但这需要应用已有 native.so 的前提。

开始鹅厂实习的社畜搬砖生活(°∀°)ノ

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打包经常会报资源错误,此时有四个解决办法

  1. 暴力删除出错的layout文件
  2. 修改出错的layout文件
  3. 不解包资源文件,也就是在解包的时候加入-r选项
  4. 通过-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的使用,因此有一定使用条件

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值