当前位置: 首页 > news >正文

【Frida Android】基础篇13:Frida-Trace 基础简介——从命令到脚本的动态追踪入门

文章目录

  • Frida-Trace 简介
    • 1. 环境确认
    • 2. 核心使用场景
    • 3. 基础命令行选项
      • 3.1 设备连接(核心必选)
      • 3.2 函数过滤(核心逻辑)
      • 3.3 输出控制(辅助优化)
    • 4. 自动生成脚本
    • 5. 核心总结
    • 6. 后续预告

⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。

Frida-Trace 简介

在逆向分析与动态调试中,快速定位关键函数的调用逻辑往往是破解问题的第一步。无论是 Android 应用的 Java 方法、原生库的 JNI 函数,还是本地进程的系统调用,手动编写钩子脚本不仅耗时,还需要熟悉 Frida 底层 API。而 Frida-Trace 作为 Frida 官方推出的动态追踪工具,恰好解决了这一痛点——它能通过简单的命令行操作,自动生成可定制的追踪脚本,让跨平台函数追踪变得高效且低门槛。

本文将从环境准备到核心用法,带你快速掌握 Frida-Trace 的基础逻辑,为下一篇的实战案例打好基础。

1. 环境确认

Frida-Trace 是 frida-tools 工具集的核心组件,使用前需确认本地环境已正确安装 Frida 及配套工具,且版本兼容(建议保持 fridafrida-trace 版本一致)。

检查命令:

frida --version  # 查看 Frida 版本
frida-trace --version  # 查看 Frida-Trace 版本

在这里插入图片描述

若未安装,可通过 pip 快速部署:

pip install frida-tools

2. 核心使用场景

Frida-Trace 的核心能力是「动态追踪进程中已加载/动态加载的函数」,覆盖多平台、多语言场景。以下为 4 类典型场景及简化命令示例:

目标场景命令示例说明
Android(APK Java 方法)frida-trace -U -f com.google.android.youtube -j '*!*certificate*'连接 USB 设备,启动 YouTube 应用,追踪所有类中方法名含 certificate 的 Java 方法
Android(JNI 函数)frida-trace -U -i "Java_*" com.samsung.faceservice追踪三星 FaceService 应用中所有符合 JNI 命名规范(Java_包名_类名_方法名)的函数
未导出函数(静态/偏移函数)frida-trace -p 1372 -a "libjpeg.so!0x4793c"附加到 PID 1372 的进程,追踪 libjpeg.so 中偏移为 0x4793c 的未导出函数(如静态 C 函数)
本地进程函数(系统/库函数)frida-trace -p 1234 -i "memcpy"附加到 PID 1234 的本地进程,追踪所有模块中名为 memcpy 的函数

3. 基础命令行选项

Frida-Trace 的命令行选项可分为「设备连接」「函数过滤」「输出控制」三大类,掌握这些选项能精准定位追踪目标。

3.1 设备连接(核心必选)

选项说明
-U, --usb连接 USB 设备(Android/iOS 常用,需提前在设备端运行 frida-server
-p PID, --attach-pid PID附加到已运行进程的 PID(如 -p 1372,需知道目标进程 ID)
-f TARGET, --file TARGET启动指定程序(如 Android 应用包名 -f com.example.app,或本地程序路径)

3.2 函数过滤(核心逻辑)

选项说明
-i FUNC, --include FUNC包含匹配 FUNC 的函数(支持通配符,如 -i "mem*" 匹配所有 mem 开头的函数)
-x FUNC, --exclude FUNC排除匹配 FUNC 的函数(格式同 -i,如 -x "free" 可过滤掉 free 函数的追踪)
-a MODULE!OFFSET, --add追踪指定模块中某偏移的函数(用于未导出函数,格式如 -a "libxxx.so!0x12345"
-j JAVA, --include-java-method JAVA追踪 Java 方法(格式为 类名!方法名,支持通配符,如 -j '*!encrypt*' 匹配所有含 encrypt 的方法)

3.3 输出控制(辅助优化)

选项说明
-o OUTPUT, --output OUTPUT将追踪日志输出到指定文件(如 -o trace.log,避免控制台信息溢出)
-d, --decorate日志中添加模块名(区分多模块同名函数,如 memcpy() [msvcrt.dll]

4. 自动生成脚本

执行追踪命令后,当前目录会自动生成 __handlers__ 文件夹,其中按「模块/函数」分类存储 JavaScript 脚本(如 __handlers__/msvcrt.dll/memcpy.js)。这些脚本是定制追踪逻辑的核心,默认包含两个钩子函数:

{/*** 函数被调用时触发(进入函数)* @param log: 日志打印函数(直接调用即可输出信息)* @param args: 函数参数数组(需按类型解析,如 args[0].readUtf8String() 读取字符串参数)* @param state: 状态对象,可在 onEnter/onLeave 间传递数据(如记录开始时间)*/onEnter(log, args, state) {log('memcpy() 被调用');state.startTime = Date.now(); // 记录函数执行开始时间},/*** 函数返回时触发(离开函数)* @param retval: 函数返回值(需按类型解析,如 retval.toInt32() 读取整数返回值)*/onLeave(log, retval, state) {const cost = Date.now() - state.startTime; // 计算执行耗时log(`memcpy() 执行耗时: ${cost}ms,返回值: ${retval}`);}
}

通过修改脚本,可实现参数解析(如读取字符串、内存地址)、耗时统计、返回值校验等定制化需求,无需从零编写 Frida 钩子代码。

5. 核心总结

Frida-Trace 之所以成为动态分析的利器,核心在于三点:

  • 低门槛:命令行一键启动追踪,自动生成脚本框架,无需手动编写钩子逻辑;
  • 灵活性:通过设备选择、函数过滤、参数定制,精准定位目标函数;
  • 跨平台:覆盖 Android/iOS/桌面系统,支持 Java 方法、原生函数、系统调用等多类型追踪。

基础使用流程可概括为:「连接设备/选择进程 → 过滤目标函数 → 修改 handler 脚本定制逻辑 → 分析输出结果」。

6. 后续预告

下一篇文章将针对本文提到的 4 个核心场景,逐个提供完整的实操流程案例解析,带你从“知道命令”到“实操应用”。

http://www.dtcms.com/a/537143.html

相关文章:

  • 使用electron-vite生成一个桌面应用以及引入必要插件
  • 龙岗网站设计机构网络培训平台建设方案
  • 运动想象 (MI) 分类学习系列 (19) : EEG-TransNet
  • io游戏网站重庆市建设项目环境影响评价网站
  • 怎样做静态网站做网站开发用哪门语言
  • springAI实现ai大模型+传统应用双剑合璧- Function Calling
  • 电子商务网站开发设计适合前端新手做的网页
  • 济宁市建设局网站wordpress hover
  • 熵平衡机制在子种群迁移中的具体实现
  • 记录一下Linux 6.12 中 cpu_util函数的作用
  • 做淘宝内部优惠券网站要钱么网站制作费用价格表
  • ECSCluster容器洞察功能完整实现与深度解析
  • 力扣(LeetCode) ——15.三数之和(C++)
  • Kubernetes GPU 运维组件介绍
  • 龙中龙网站开发wordpress 判断函数
  • 网站开发流程框架手机软件开发和网站开发
  • 定时发布文章测试
  • 联邦快递网站建设的目标重庆平台网站推广
  • 医院 网站建设成品网站价格表
  • 第14天:系统监控与日志管理
  • 区块链分层架构或侧链/子链
  • Ethernaut Level 14: Gatekeeper Two - 合约创建时的 extcodesize
  • 网页网站建设难吗深圳网络营销推广公司
  • 东莞网站开发深圳做网站做app
  • 18.矩阵置零(原地算法)
  • Lambda表达式的使用
  • Pinterest Data Scientist 面试经验分享|数据分析 + 实验设计 + 产品洞察并重
  • 重庆璧山网站建设营销型网站的建设流程
  • 做网站用什么软件ps字体文化公司网页设计
  • 【Linux网络】实现简单的英译汉网络字典