[Frida集成篇]FD_01.三种方案实现Frida脚本持久化研究

FD_01.三种方案实现Frida脚本持久化研究

主要内容:

  • frida-gadget持久化研究

  • frida-gumjs脚本持久化研究

  • frida-inject脚本持久化研究

1.frida-gadget持久化研究

frida-gadget是一个动态共享库,可以在App中加载该动态库然后执行js代码功能。
frida-gadget动态库下载地址:

https://github.com/frida/frida/releases/tag/14.2.15

根据官方介绍,在AndroidApp中可以重打包方式将frida-gadget动态库放到lib下面对应的平台目录,然后编写对应的配置文件。例如我的一个Demo Apk,使用apktool反编译之后。可以像如下操作将frida-gadget动态库添加进去,并配置执行指定的脚本。参考如下:

# arm64-v8a加入对应的arm64-v8a版本的libfrida-gadget.so
DemoApp/lib/arm64-v8a/libfrida-gadget.so
DemoAp
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 Frida 追踪 Unity Ads SDK 中 `UnityAdsImplementation` 类的示例脚本: ```python import frida def on_message(message, data): print("[on_message] message:", message) def main(): session = frida.attach("your.package.name") script = session.create_script(""" Java.perform(function() { var className = "com.unity3d.services.ads.UnityAdsImplementation"; var classHandle = Java.use(className); // Hook UnityAdsImplementation.init() classHandle.init.overload("android.app.Activity", "java.lang.String", "boolean", "boolean").implementation = function(activity, gameId, testMode, debugMode) { console.log("[info] UnityAdsImplementation.init() called with gameId: " + gameId); return this.init(activity, gameId, testMode, debugMode); }; // Hook UnityAdsImplementation.load() classHandle.load.overload("java.lang.String").implementation = function(placementId) { console.log("[info] UnityAdsImplementation.load() called with placementId: " + placementId); return this.load(placementId); }; // Hook UnityAdsImplementation.show() classHandle.show.overload("java.lang.String").implementation = function(placementId) { console.log("[info] UnityAdsImplementation.show() called with placementId: " + placementId); return this.show(placementId); }; }); """) script.on('message', on_message) script.load() sys.stdin.read() if __name__ == '__main__': main() ``` 该脚本使用了 FridaJava API,通过 `Java.use()` 方法获取了 `com.unity3d.services.ads.UnityAdsImplementation` 类的句柄,并分别 hook 了它的 `init()`、`load()` 和 `show()` 方法,以追踪这些方法的调用及其参数。你可以根据自己的需求修改脚本,以实现更高级的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomaNo01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值