首页
社区
课程
招聘
[原创] 专属于 iOS 的 trace 工具
发表于: 1天前 876

[原创] 专属于 iOS 的 trace 工具

1天前
876

目录

众所周知,trace 在算法分析中的地位举足轻重。但在 iOS 上,用 Frida Stalker 不够稳定、也容易被检测到;用 unidbg 或 chomper 又得补一大堆环境。所以今天,Ta来了!Ta 来了!Ta带着 QBDI 和 Dobby 走来了,不仅有着简单的界面,还有着实实在在的功能。

这是本人在二进制分析过程中结合大模型开发的一个工具,欢迎大家交流学习,后续会考虑公布源码。

想快速常常工具的咸淡,请根据自己的越狱方式下载 com.snk.qbditracer_iphoneos-arm.deb 或者 com.snk.qbditracer_iphoneos-arm64.deb

QBDI(QuarkslaB Dynamic binaryInstrumentation)是一款动态二进制插桩框架。简单说,它能把一段代码"托管"到自己的虚拟环境里执行,每执行一条指令都回调一次——于是你就能逐条指令地观察目标代码怎么跑、寄存器和内存怎么变,而不用改动原始二进制。

早期 QBDI 在 iOS 中支持有限,但官网最新版已经正式支持 iOS ARM64。这也是本项目选择它的直接原因:能在越狱 iPhone 上稳定地做指令级 trace。

QBDI 只解决"逐条指令记录"这件事,但它本身不负责把自己挂到目标代码上——你得先有办法在某个地址"插一脚",把控制权交给 QBDI。

这一步就交给 Dobby。Dobby 是一个 inline hook 库,负责在指定地址下钩子。二者分工很清晰:

一个管"从哪进",一个管"怎么记",配合起来才能实现"在函数中间任意一段,逐指令 trace"的效果。

每 trace 到一条指令,日志里会输出一行,格式如下:

为了让日志不至于爆炸,寄存器采用增量输出

寄存器值统一以 16 位十六进制显示(如 0x000000016fdff8a0)。

在规则的「记录内容(logMask)」里勾选 向量寄存器(VREG),就会额外记录向量寄存器 v0v31。它们和通用寄存器一样采用增量输出,但单独占一行、以 V{...} 开头:

每个向量寄存器是 128 位,以 32 位十六进制显示(高 64 位在前、低 64 位在后)。

向量寄存器数据量大,默认不开。调试 NEON、加解密等涉及向量运算的代码时再勾选。

插件顶部有一个总开关,它是所有规则的总闸。关闭时,即使 trace 条目已经配好,规则也不会生效。所以开始 trace 前,先确认总开关是打开的。

image-20260825115637579

在某条 trace 条目上右滑,可以停用这条规则——规则还在,只是暂时不跑,方便随时切换。

image-20260825150759196

在某条 trace 条目上左滑,则可以导出、复制或删除这条规则。

image-20260825150823832

如果之前创建并导出过规则,直接选 【导入 Tracer】 就能复用,省去重新配置。下面介绍从零创建一条新规则。

image-20260825150605609

进入后,先选定要 trace 的目标 App,再填入目标模块名,以及 trace 的起始地址和结束地址。

其中「延迟」是指等程序启动、加载完相关库之后再开始 trace,留几秒缓冲能避免模块还没就位就 hook 失败。「trace 次数」通常设为 1 就够了。

image-20260825151102404

监视的作用,是当 trace 到某个地址时,把指定寄存器的值输出出来。输出形式可以按需选择,比如按字符串读取,或者以 dump 形式呈现。

image-20260825151314144

image-20260825151430351

添加完成后,效果如下:

image-20260825151510723

举个例子,配好下面这几条监视后,trace 日志里就会输出对应的数据:

image-20260825151608044


冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 23小时前 被αβγδεξπ编辑 ,原因:
上传的附件:
收藏
免费 37
打赏
分享
最新回复 (23)
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
1天前
0
雪    币: 4642
活跃值: (7897)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
感谢分享
1天前
0
雪    币: 4642
活跃值: (7897)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
墨穹呢  0秒前
  引用  编辑  举报 3 楼  0
感谢分享
1天前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
666
1天前
0
雪    币: 3092
活跃值: (6103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
666
1天前
0
雪    币: 9309
活跃值: (7842)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享
1天前
0
雪    币: 112
活跃值: (9215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
tql
1天前
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
有arm64版本的吗,安装显示 dpkg: error processing archive com.snk.qbditracer_iphoneos-arm.deb (--install): package architecture (iphoneos-arm) does not match system (iphoneos-arm64)
1天前
0
雪    币: 5078
活跃值: (6400)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
6
1天前
0
雪    币: 1082
活跃值: (2344)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
mb_asiwnxyv 有arm64版本的吗,安装显示 dpkg: error processing archive com.snk.qbditracer_iphoneos-arm.deb (--install): pack ...
我的设备就是 arm64 的,你是通过 sileo 安装的吗
1天前
0
雪    币: 148
活跃值: (336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
666
1天前
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
我在Filza中用dkpg 命令进行安装的
1天前
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
学习一下
1天前
0
雪    币: 1082
活跃值: (2344)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
mb_asiwnxyv 我在Filza中用dkpg 命令进行安装的
试一试 com.snk.qbditracer_iphoneos-arm64.deb
1天前
0
雪    币: 29
活跃值: (990)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
6666666666666666666
1天前
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
αβγδεξπ 试一试 com.snk.qbditracer_iphoneos-arm64.deb
感谢大佬,正常了
1天前
0
雪    币: 1082
活跃值: (2344)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
18
mb_asiwnxyv 感谢大佬,正常了
好,还有什么问题,及时交流
1天前
0
雪    币: 344
活跃值: (2681)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
roothide可以用吗
23小时前
0
雪    币: 2
活跃值: (2186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
666
23小时前
0
雪    币: 411
活跃值: (726)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
666
23小时前
0
雪    币: 1082
活跃值: (2344)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
22
tubecityman roothide可以用吗

不行的,我记得 roothide 是 arm64e 的,但是目前 qbdi 不支持 arm64e ,下面这个是 qbdi 支持的架构


23小时前
0
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
`12`12`
23小时前
0
雪    币: 43
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
111
20小时前
0
游客
登录 | 注册 方可回帖
返回