跳转到内容

导航与断点

Tenet 导航的是已完成的执行历史。Continue、Step 和 Break 都是在已有时间轴中搜索,不会恢复目标进程执行。

  • 指令 ID: 跳到一次精确执行。
  • 运行时 PC: 跳到执行过的代码位置。
  • 函数: 跳到已观察到的调用或入口。
  • 搜索: 定位指令文本、符号或已知字符串。
  • 历史: 在之前的导航决策间前进/后退。
  • 书签: 跨会话保存调查地标。

xref Pass 将每个 PC 映射到全部对应的指令 ID。上一个/下一个 XRef 可在循环迭代、重复调用或共享 handler 之间移动,并保留每次出现时的精确状态。执行次数是观察频率,不是静态可达性估计。

Function Pass 配对观察到的 call 和 return。Follow Call 跳到动态被调函数,Follow Return 跳到对应返回。调用栈视图可导航调用点和入口,并可能标记从 Trace 恢复的尾调用上下文。

类型 匹配来源 适用场景
PC 断点 XRef PC→指令 ID 查找代码下一次/上一次执行
写观察点 内存写索引 定位 buffer 或字段何时变化
条件断点 扫描时计算 predicate 在状态相关事件处停止

正向/反向 continue 选择下一次/上一次命中。由于程序没有重新执行,反向继续不需要恢复 checkpoint 或 replay 目标。

  • Register Timeline: 某寄存器的全部写入及新旧值。
  • Memory Write History: 与地址区间重叠的全部写入。
  • Last Writer: 对当前字节/区域有贡献的最近写入。
  • Backward Taint: 从寄存器 sink 回溯传递性的 producer 链。
  • 污点导航: 分析后在传播事件之间移动。

界面导航使用运行时地址。带到 IDA/Ghidra 时减去 module_slide,把静态地址带回 Tenet 时再加上。MCP 客户端也可使用配置好的 rebase 支持,无需手工换算。