简单的活着

CF & CFG

Posted on By Mista Cai

控制流和控制流图

控制流

基于IPT的硬件追踪

winIPT获取16进制数据包,fastcode解析成对应PT包。

  • PSB(Packet Stream Boundary): 心跳,定期生成(每4K),流中第一个数据包
  • PIP(Paging Information Packet): 修改CR3寄存器
  • TSC(Time-Stamp Counter): 追踪挂钟数据(包含软件可见时间戳计数器的某些部分)
  • OVF(Overflow): 内部缓冲区溢出(丢弃的数据包)
  • CBR(Core Bus Ratio):内核到总线时钟比率
  • Control Flow
    • TNT(Taken Not-Taken): 直接条件分支
    • TIP(Target IP): 间接分支、异常和中断的目标地址
  • Cycle Accurate Mode
    • CYC: 提供处理器内核时钟周期相对于上一个测量的CYC数据包的经过时间(BroadWell上不可用)
  • Timing
    • MTC(Mini Timestamp Counter): 更频繁,基于CTC(Crystal ckock counter)值(8bit)。可进行频率调整。与TSC一起使用可以更低成本获取准确的时间戳。[TSC → TMA → MTC, MTC, MTC → TSC]

控制流图分析

反汇编

划分基本块

构建控制流图

数据流图可以存为二叉树(一个基本块最多跟两个基本块,顺序执行和跳转得到的块)。

1.获取未执行代码区域

2.过滤错误处理代码

3.路径信息