跳转至

控制流平坦化

简介

控制流平坦化(control flow flattening)是作用于控制流图的代码混淆技术,其基本思想是重新组织函数的控制流图中的基本块关系,通过插入一个“主分发器”来控制基本块的执行流程,例如下图是正常的执行流程:

经过控制流平坦化处理之后便变成了这个样子,由一个“主分发器”负责控制程序执行流:

通过控制流平坦化,基本块间的前后关系将被混淆,从而加大了程序逆向分析的难度。更多关于控制流平坦化的实现细节可以参考这篇论文.

利用符号执行去除控制流平坦化

待施工。

Reference

腾讯安全应急响应中心 - 利用符号执行去除控制流平坦化

OBFUSCATING C++ PROGRAMS VIA CONTROL FLOW FLATTENING