【Frida】【Android】工具篇:ZenTracer

🛫 系列文章导航

🛫 导读

开发环境

版本号描述
文章日期2024-03-24
操作系统Win11 - 22H222621.2715
node -vv20.10.0
npm -v10.2.3
夜神模拟器7.0.5.8
Android9
python3.9.9
frida16.2.1
frida-tools12.3.0
objection1.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: 文章中内容仅用于技术交流,请勿用于违规违法行为。

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜猫逐梦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值