动态 Trace 分析

大规模指令 Trace 分析支持十亿级执行记录。

Tenet 为指令级执行 Trace 建立索引,支持随机访问状态重建和离线分析。你可以查询任意已录制指令点的寄存器与内存,恢复实际执行过的控制流,并运行数据流、算法和平台分析。

随机访问状态持久化 Trace 索引可组合分析 Pass
TRACE / 8,432,109 INST
0x10083A274bl0x100815d20
0x100815D20stpx29, x30, [sp, #-0x20]!
0x100815D24movx29, sp
0x100815D28eorx8, x0, x1

REGISTER DIFF

x80x0000000102a00x9e3779b97f4a
sp0x000000016f300x000000016f10

ANALYSIS SIGNAL

ARX patterndetected · confidence 0.94
Backward slice127 instructions · x0 source
TRACE INDEXING / STATE RECONSTRUCTION

Trace 记录状态变化,但不能直接查询状态

文本搜索可以定位单条记录。寄存器状态、重叠内存写入、实际控制流和值来源都需要沿指令时间线重建。

01 / RECORD SEARCH

精确匹配记录查询

grep 可以定位 PC、指令、地址或字符串,但不会重建某条指令处的完整寄存器状态,也不能按地址范围和时间解析内存写入。

02 / SEQUENTIAL REPLAY

重复顺序扫描无法扩展

每次查询都从头回放会使随机导航成本过高;每项分析各自执行全量扫描,还会成倍增加 IO 和解码开销。

03 / INDEXED TRACE

持久索引与指定时间点查询

Tenet 为指令偏移、ANCHOR、寄存器写入、内存历史和代码建立索引。同一数据模型同时支持交互式导航和确定性分析 Pass。

QUERY MODEL / 查询模型

查询结果包括指令 ID、运行时 PC、寄存器值、指定时间点的内存内容、写入历史和调用上下文。分析结果保留到原始记录的引用。

ANALYSIS CAPABILITIES

指令、状态、控制流与数据流分析

各分析 Pass 共用 Trace 索引、重建状态和统一扫描基础设施。

STATE

指定指令点状态重建

通过 ANCHOR、寄存器差值和内存读写,重建指定指令点的寄存器文件与内存内容。

CONTROL FLOW

实际执行控制流恢复

恢复函数、XRef、CFG、调用、返回、循环及实际执行次数。

PROVENANCE

寄存器与内存来源分析

查询寄存器定义、内存写入历史、前向传播、反向依赖和关键路径。

ALGORITHMS

算法与模式分析

分析常量、指令模式、循环行为、调用图和数据流结构。

PLATFORM

平台 API 关联分析

将 ObjC 消息、C API、JNI 调用、系统调用和密码学操作关联到 Trace 指令。

RESULTS

可回溯到 Trace 的分析结果

Pass 输出按需包含 inst_id、运行时 PC、内存访问、调用点和来源标注。

PERFORMANCE / BILLION-INSTRUCTION TRACES

大规模 Trace 的存储、索引与内存管理

Tenet 支持十亿级指令 Trace,打开文件时无需将完整 Trace 载入内存。持久索引使后续会话不必重复承担索引构建成本。

1B十亿级指令 Trace 支持
MMAP内存映射访问,无需全量载入 Trace
FUSED一次遍历服务多个 Collector
CACHED持久索引与 Pass 结果缓存
IO / STORAGE

内存映射 IO 与分块压缩

TraceReader 使用 mmap 零拷贝访问;带索引的 zstd 分块压缩保存完整寄存器、内存和代码证据,同时支持随机读取数据块。

INDEX / REOPEN

RocksDB 持久索引

RocksDB 将 offset、ANCHOR、寄存器写入、内存历史与代码分列管理。首次打开的成本沉淀为持久索引,后续会话无需重新构建。

MEMORY / LATENCY

自适应寄存器 checkpoint

ANCHOR + diff 避免每条指令保存完整快照;自适应 checkpoint 以合理内存预算换取很短的随机状态回放窗口。

SCAN / CPU

Scan Fusion

兼容 Collector 共享一次顺序 Trace 遍历,避免每个 Pass 重扫数十亿条记录;TBB 并行调度相互独立的 Pass 依赖。

CACHE / REPEAT

紧凑 Pass 结果缓存

全量扫描分析将紧凑二进制结果写入 RocksDB;GUI、CLI、RPC 与 MCP 的重复查询可以复用已有工作,而不是重新计算。

SEMANTICS / ON DEMAND

按需语义分析

全局导航与结构恢复使用高速原生索引;Triton 等高成本语义引擎只在确有价值的局部范围按需启用。

处理时间、索引大小与峰值内存取决于记录密度、启用字段、压缩率、所选 Pass 和硬件。Tenet 不要求完整 Trace 常驻内存。

WORKFLOW / CAPTURE → INDEX → ANALYZE → EXPORT

一次录制,重复使用 Trace 索引

本地索引由交互界面、批处理命令和服务 API 共用,Pass 结果也可以缓存在同一数据库中。

01 / CAPTURE

录制指令执行记录

在 iOS 或 Android 上使用官方 QBDITrace,或用 Frida Stalker 等兼容采集器生成相同二进制契约。

02 / INDEX

重建执行过程

为指令偏移、ANCHOR、寄存器写入、内存历史、代码、函数与 XRef 建立持久索引。

03 / ANALYZE

运行分析 Pass

运行确定性 Pass,完成 CFG、污点、内存搜索、算法识别、平台 API、Trace Diff 与 VM 分析。

04 / EXPORT

查看或导出结果

通过 GUI 或 TUI 交互查看,通过 CLI 导出报告,或使用 RPC 和 MCP 获取结构化结果。

ANALYSIS TASKS

常见 Trace 分析任务

这些分析使用已录制的指令顺序、重建状态、内存历史和实际控制流。

01

签名与加密流程分析

识别签名或加密流程中的常量、轮循环、ARX/SPN/Feistel 语义及调用上下文。

02

Source-to-sink 追踪

沿寄存器与内存变换追踪输入,直到 API 调用、buffer、分支或返回值。

03

反向来源分析

从可疑输出出发,恢复贡献指令、最后写入者、常量、调用及来源标注。

04

平台边界关联

将 ObjC 消息、JNI/C API 拦截、系统调用和密码学操作关联回底层执行。

05

VM 保护分析

结合静态 hints 与动态 CFG、循环、污点和数据流证据,研究 dispatcher、handler 与虚拟状态。

06

Trace 对比

比较不同输入、环境或补丁版本,定位控制流、寄存器或内存的首次分歧。

07

分析接口

GUI / TUI 提供交互式导航;CLI / RPC 用于批处理和系统集成;MCP / WebSocket 向自动化工具(包括 LLM 客户端)提供 Trace 索引数据和 Pass 结果。

GET STARTED

打开一个 Trace,开始分析

按照快速开始录制 Trace、构建本地索引,并查看第一个指令区间。