【Frida】【Android】工具篇:ZenTracer

news2024/11/24 2:55:34

🛫 系列文章导航

  • 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950
  • 【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446
  • 【Frida】【Android】03_RPC https://blog.csdn.net/kinghzking/article/details/137050967
  • 【Frida】【Android】04_Objection安装和使用 https://blog.csdn.net/kinghzking/article/details/137071768
  • 【Frida】【Android】05_Objection实战 https://blog.csdn.net/kinghzking/article/details/137071826

▒ 目录 ▒

    • 🛫 系列文章导航
    • 🛫 导读
      • 开发环境
    • 1️⃣ 安装
      • python环境
      • 启动ZenTracer
      • ZenTracer更改说明
    • 2️⃣ 使用
      • 设置匹配模板
      • `Action`→`Start`
      • 验证hook效果
    • 🛬 文章小结
    • 📖 参考资料

🛫 导读

开发环境

版本号描述
文章日期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构造函数

📖 参考资料

  • ZenTracer原git地址: https://github.com/hluwa/ZenTracer
  • ZenTracer支持frida16的最新git地址: https://gitcode.com/android8/ZenTracer
  • 重复造轮子-用 FRIDA 打造 MethodTracer https://wiki.hluwa.cn/s/01f7fac2-81e4-4468-85d8-f710e17da12d/doc/frida-methodtracer-ZdXqg6xeoX
  • Frida进阶:Objection内存漫游、hook anywhere、抓包 https://www.cnblogs.com/lxh2cwl/p/14842544.html

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1558122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode刷题记录面试基础题day1(备战秋招)

hello,你好鸭,我是康康,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!💪💪💪 目前博客主要更新Java系列、数据库、项目案例、计算机基础等知识点。感谢你的阅读和…

P2802 回家

P2802 回家 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 虽然是普及-难度的题,但是感觉细节有很多。 细节: bfs第一次到 ( i , j ) (i, j) (i,j),但是距离不一定是最小的 鼠标是一次性物品 血量到达 ( x x , y y ) (xx, yy) (xx,yy)为…

【二分图】【二分图最大匹配】LCP 04. 覆盖

作者推荐 视频算法专题 本文涉及知识点 二分图 二分图最大匹配 LeetCode LCP 04. 覆盖 你有一块棋盘,棋盘上有一些格子已经坏掉了。你还有无穷块大小为1 * 2的多米诺骨牌,你想把这些骨牌不重叠地覆盖在完好的格子上,请找出你最多能在棋盘…

探索C语言中的联合体和枚举:让处理数据更加得心应手

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:http://t.csdnimg.cn/Oytke 小新的主页:编程版小新-CSDN博客 C语言中有内置类型, 比如&…

JavaScript:快速入门

1. 数据类型 /** * 数据类型: number(包含整数、小数) * string(字符串类型) * boolean(布尔类型) * object(对象类型) * function(函数类型) …

Roxlabs代理服务:智能化数据采集的加速器

TOC 一、引言 在这个数据驱动的时代,无论是企业还是个人,对于准确、及时的信息获取都有着前所未有的需求。网络数据采集已成为洞察市场趋势、分析竞争对手动态、优化营销策略的关键手段。然而,面对全球范围内的网站和服务,如何高…

【美团笔试题汇总】2024-03-30-美团春招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新美团近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&#x1f…

使用python将pdf插入到docx中

from pdf2image import convert_from_path from docx import Document from docx.shared import Inches,Cm# 将PDF转换为图片 pages convert_from_path(4.pdf, 200) # 200是DPI,可以根据需要调整doc Document()# 计算图片在docx中应该显示的宽度 img_width Cm(2…

【文献分享】 机器学习 + 分子动力学 + 第一性原理计算 + 热力学性质(熔化温度 热导率 热膨胀系数)

分享一篇关于机器学习 分子动力学 第一性原理 熔化温度(熔化温度 & 热导率 & 热膨胀系数)的文章。 感谢论文的原作者! 关键词: 1. Al−Li alloy 2. Neural network potential 3. Molecular dynamics 4. Thermal pr…

二维码门楼牌管理应用平台建设:三维白模数据建设的意义

文章目录 前言一、三维白模数据建设的意义二、二维码门楼牌管理系统的构建三、二维码门楼牌管理系统的优势四、面临的挑战与未来展望 前言 随着城市管理的精细化和智能化需求日益增强,二维码门楼牌管理应用平台的建设成为推动城市管理现代化的重要手段。本文将探讨…

【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin LearnDash LMS 4.10.2及之前版本存在安全漏洞&#x…

labelme的安装与使用以及如何将labelme标注的json格式关键点标签转为yolo格式的标签

有任何问题我们一起交流,让我们共同学习 标注的json格式以及转换后的yolo格式示例希望得到您的指导背景及代码可用范围一、yolo关键点检测数据集格式二、labelme的安装和使用(一)labelme的安装(二)labelme的使用 三、j…

Unity-C#进阶——3.27更新中

文章目录 数据结构类ArrayListStackQueueHashtable 泛型泛型类、泛型方法、泛型接口ListDictionaryLinkedList泛型栈,泛型队列 委托和事件委托事件匿名函数Lambad 表达式**闭包** List 排序逆变协变多线程进程线程多线程方法:线程之间共享数据&#xff1…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《强沙尘暴下新能源基地的弹性评估及其提升方法 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

mysql 条件/系统/加密/其它函数

学习了日期时间函数,接着学习条件、系统、加密和其它函数。 3,条件判断函数 条件判断函数也称为控制流程函数,根据满足的条件的不同,执行相应的流程。MySQL中进行条件判断的函数有IF、IFNULL和 CASE。 函数 说明 IF(expr,v1,v2…

单例设计模式(3)

单例模式(3) 实现集群环境下的分布式单例类 如何理解单例模式中的唯一性? 单例模式创建的对象是进程唯一的。以springboot应用程序为例,他是一个进程,可能包含多个线程,单例代表在这个进程的某个类是唯一…

跨境电商IP防关联是什么?有什么作用?

做跨境电商的朋友应该都知道IP防关联这个词,那么为何IP需要防关联呢?今天为大家来解答这个问题。 跨境电商IP防关联是指在跨境电商运营中,通过采取一系列技术手段,确保每个跨境电商账号使用独立的IP地址,以避免账号之间因为IP地址…

【Linux实践室】Linux用户管理实战指南:用户权限切换操作详解

🌈个人主页:聆风吟_ 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔图形化界面登录2.2 🔔使用login…

【java苍穹外卖项目实战四】新增员工功能

文章目录 1、需求设计分析2、接口设计3、表设计4、设计DTO类5、Controller层功能实现6、Service层功能实现7、Mapper层功能实现 1、需求设计分析 一般在做需求分析时,往往都是对照着产品原型进行分析,因为产品原型比较直观,便于我们理解业务…

Unreal的Quixel Bridge下载速度过慢、下载失败

从Quixel Bridge下载MetaHuman模型,速度非常慢,而且经常下载失败,从头下载。 可以从Quixel Bridge的右上角我的图标->Support->Show Logs打开日志目录 downloaded-assets目录下为下载的资源 bridge-plugin.log文件记录了下载URL和下载…