Frida笔记 - Android 篇 (一)

本文介绍了Frida在Android环境的配置和基本使用,包括Hook类构造函数、普通函数、参数修改、数组构造、函数调用等,并探讨了其在SDK开发调试、证书校验绕过等场景的应用。
AI助手已提取文章相关产品:

前言

相信不少小伙伴对Xposed、Cydia Substrate、Frida等hook工具都有所了解, 并且用在了自己的工作中, 本文主要分享Frida的环境配置以及基本使用, 以及相关功能在日常开发调试带来的帮助

配置Frida的环境

Frida的环境安装可以参考官方文档, 或者参考网上分享的实践, 使用较为稳定的特定版本

# 通过pip3安装Frida的CLI工具
pip3 install frida-tools
# 安装的frida版本
frida --version
# 本机目前使用的15.0.8的frida版本
# 在https://github.com/frida/frida/releases下载对应的server版本frida-server-15.0.8-android-arm64.xz
# unxz 解压缩
unxz frida-server-15.0.8-android-arm64.xz
adb root
adb push frida-server-15.0.8-android-arm64 /data/locl/tmp/
adb shell
chmod 755 /data/local/tmp/frida-server-15.0.8-android-arm64
/data/local/tmp/frida-server-15.0.8-android-arm64 &
# 打印已安装程序及包名
frida-ps -Uai

基本使用

  • Frida的开发环境, 可以参考作者在github上的exmaple

# 下载完成后通过vscode打开
git clone git://github.com/oleavr/frida-agent-example.git
npm install
  • 配置完成后, 使用对应函数就会有相应代码提示及函数说明

  • JavaScript API可以参考官方文档说明, 了解基本使用

Hook类的构造函数

// frida -U --no-pause -f com.gio.test.three -l agent/constructor.js

function main() {
  Java.perform(function () {
    Java.use(
      "com.growingio.android.sdk.autotrack.AutotrackConfiguration"
    ).$init.overload("java.lang.String", "java.lang.String").implementation =
      function (projectId, urlScheme) {
        // 调用原函数
        var result = this.$init(projectId, urlScheme);
        // 打印参数
        console.log("projectId, urlScheme: ", projectId, urlScheme);
        return result;
      };
  });
}

setImmediate(main);

Hook类的普通函数

// frida -U --no-pause -f com.gio.test.three -l agent/function.js

function main() {
  Java.perform(function () {
    Java.use(
      "com.growingio.android.sdk.CoreConfiguration"
    ).setDebugEnabled.implementation = function (enabled) {
      console.log("enabled: ", enabled);
      // 直接返回原函数执行结果
      return this.setDebugEnabled(enabled);
    };
  });
}

setImmediate(main);

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值