星巡研究院

渗透视角下的二进制安全

### 对抗 - 1 控制流平坦化 / 虚假控制流 #### 1. 链路定位 * 在整册链路中的位置:防守方抬高静态分析成本的手段,对应第四部分 CFG 还原的反方向。 * 作用:看懂 OLLVM 类混淆如何把自然嵌套的 CFG 拍成一个大分发器。 #### 2. 前置知识 * 基本块与控制流图(静态 - 3)、条件跳转(对照 - 3)。 * switch 分发与状态变量概念。 #### 3. 技术原理 * 控制流平坦化(Flattening):编译器把函数内每个基本块改造成中央 `switch` 的一个 case,引入一个状态变量记录当前该走哪个块。运行时先读状态变量,由分发器(Dispatcher)跳转到对应 case,执行完再写新状态回到分发器。原本的 if/for 自然嵌套被拍平成 "分发器↔各 case" 的大环,静态 CFG 只剩一个入口扇出到全部块。虚假控制流(Bogus Control Flow):插入恒真 / 恒假的不透明谓词(opaque predicate),派生一个永不到达的死分支,静态分析无法在不求值的情况下判其真假,白增节点与边。
这是进阶内容

升级理论包获取本册全部章节,从机器本质系统入门