控制流平坦化
控制流平坦化(control flow flattening)是作用于控制流图的代码混淆技术,其基本思想是重新组织函数的控制流图中的基本块关系,通过插入一个 “主分发器” 来控制基本块的执行流程,例如下图是正常的执行流程:
经过控制流平坦化处理之后便变成了这个样子,由一个 “主分发器” 负责控制程序执行流:
去平坦化学习
OLLVM
动态:通过unicorn模拟执行的方式获取各真实块的关系
静态:通过符号执行、中间语言分析等方式获取真实块之间的关系
环境搭建
https://github.com/cq67430529/deflat
获取am_graph.py,deflat.py,util.py
还需要pip install angr
自动化处理:python deflat.py -f 文件名 --addr 处理函数(main函数居多)
可以大致还原程序逻辑
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.