【Frida】【Android】工具篇:ZenTracer

🛫 系列文章导航

🛫 导读

开发环境

版本号 描述
文章日期 2024-03-24
操作系统 Win11 - 22H2 22621.2715
node -v v20.10.0
npm -v 10.2.3
夜神模拟器 7.0.5.8
Android 9
python 3.9.9
frida 16.2.1
frida-tools 12.3.0
objection 1.11.0

1️⃣ 安装

通过《【Frida】【Android】01_手把手教你环境搭建》系列文章,我们已经了解了objection的强大,优点是hook准确、粒度细。
今天再推荐个好友自己写的批量hook查看调用轨迹的工具ZenTracer,可以更大范围地hook,帮助读者辅助分析。该工具是Android逆向大佬葫芦娃随手写的工具,19年10月停止了更新。

python环境

环境安装如下命令(含注释)

REM # 安装python(3.9.9为例)


REM # 安装frida-tools(objection自带最新frida-tools 16.2.1)
pip install objection 


REM # 安装界面库
pip install PyQt5

这里需要注意一点:android环境中的frida-server版本一定得是16.2.1版本,否则会报错。

启动ZenTracer

这里小编使用的frida16,接口变更导致部分代码失效,修复了该代码,并上传了gitcode上。
最终启动如下界面:
在这里插入图片描述

REM # 下载源码(改)
REM # git clone https://github.com/hluwa/ZenTracer
git clone https://gitcode.com/android8/ZenTracer

REM # python运行!!!
cd /d J:\_ALL\CODE\gitcode.com\android8\ZenTracer
python ZenTracer.py

ZenTracer更改说明

  • frida.get_usb_device
    该接口需要传递等待时长,默认为0,一运行就会报下面错误:
    在这里插入图片描述
    保证足够时间获取到设备列表,这里小编等待了5秒
    在这里插入图片描述
  • device.enumerate_processes
    该接口返回对象中的name不再是identifier,所以target改为name即可(否则程序一直没有反应,这个其实就是调试的时候一步步跟出来的):
    在这里插入图片描述

2️⃣ 使用

ZenTracer操作很简单,只需要下面几步即可:

  1. 选择ActionMatch RegEx
  2. 输入E:java.io.File,点击add,然后关闭窗口
  3. 点击ActionStart
  4. 点击APP,观察运行结果

设置匹配模板

点击Action之后,会出现匹配模板(Match RegEx)和过滤模板(Black RegEx)。匹配就是包含的关键词,过滤就是不包含的关键词,见下图:
在这里插入图片描述

我们以java.io.File为例,选择Match RegEx菜单,再弹出对话框中,新增java.io.File
在这里插入图片描述

这里,增加的规则支持完全匹配和模糊匹配:

  • E:java.io.File(完全匹配)
  • M:java.io.File(模糊匹配)
    如果不指定类型(M、E),则为模糊匹配。逻辑代码如下:
    在这里插入图片描述

ActionStart

执行菜单ActionStart,ZenTracer开始Hook满足条件的类,如下图,hook了包含java.io.File的所有类。
在这里插入图片描述

验证hook效果

我们以https://download.csdn.net/download/kinghzking/89036983中的app为例,点击《测试》按钮,发现显示了两个拦截内容,可见hook成功了。
在这里插入图片描述

🛬 文章小结

ZenTracer作为一个工具,大大的提高了逆向效率。但也存在一些问题:

  • 不支持选择进程,只能针对顶部进程进行逆向。(对应没有界面的进程,请直接改源码)
  • 崩溃率还是有,这种方式 trace 多了 APP 容易崩
  • 无法打印调用栈
  • 无法hook构造函数

📖 参考资料

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

相关推荐

  1. 【toos】工具

    2024-03-31 15:16:05       13 阅读
  2. 【DevOps工具】LDAP GUI管理工具

    2024-03-31 15:16:05       13 阅读
  3. 图神经网络工具

    2024-03-31 15:16:05       8 阅读

最近更新

  1. 2024前端面试真题【CSS篇】

    2024-03-31 15:16:05       0 阅读
  2. 如何使用echart画k线图

    2024-03-31 15:16:05       0 阅读
  3. 【国产开源可视化引擎】Meta2d.js简介

    2024-03-31 15:16:05       0 阅读
  4. 【C语言】常见的数据排序算法

    2024-03-31 15:16:05       0 阅读
  5. MySQL 聚合函数

    2024-03-31 15:16:05       0 阅读
  6. 在Spring Boot中实现RESTful API设计

    2024-03-31 15:16:05       0 阅读

热门阅读

  1. Redisson兼容redis多模式部署的配置方式

    2024-03-31 15:16:05       17 阅读
  2. 【微服务篇】深入理解分布式消息队列系统

    2024-03-31 15:16:05       17 阅读
  3. mybatis EXISTS

    2024-03-31 15:16:05       14 阅读
  4. 深入理解zookeeper

    2024-03-31 15:16:05       17 阅读
  5. git 基于当前分支创建新分支

    2024-03-31 15:16:05       16 阅读
  6. sql-学习-day1

    2024-03-31 15:16:05       18 阅读
  7. Flutter开发的Web应用 构建及部署 标准流程指南

    2024-03-31 15:16:05       15 阅读
  8. Github 2024-03-27C开源项目日报Top10

    2024-03-31 15:16:05       21 阅读
  9. go 安装

    2024-03-31 15:16:05       18 阅读
  10. LeetCode热题Hot100 - 寻找两个正序数组的中位数

    2024-03-31 15:16:05       20 阅读
  11. Go-JWT完整示例

    2024-03-31 15:16:05       18 阅读
  12. c语音函数大全(V开头)

    2024-03-31 15:16:05       16 阅读
  13. Qt QOSG学习网站推荐

    2024-03-31 15:16:05       16 阅读