符号执行去除控制流平坦化
参考文章:
符号执行去除控制流平坦化详细讲解,请参考第一篇文章
python3脚本:
大概跑十几分钟
以下是过期内容
这里采用了第二篇文章里用到的 deflat.py 脚本:
https://github.com/SnowGirls/deflat
如果环境中没有安装 python2 的pip,下载此脚本并使用 python2.7 运行安装:
安装 angr 安装时请使用 python2,建议在虚拟环境或虚拟机下安装,因为 angr 自带 z3 是从 原始库中 fork 而来,会替换原来环境中的 z3
1 | python2 -m pip install angr |
这里遇到安装 gitpython 产生的坑,参考:
完成后,原 deflat.py 会报错,参考第二个链接文章进行修复。我这里按照文章修改 32 行代码修改为:
1 | if len(list(expressions)) != 0 andisinstance(expressions,pyvex.expr.ITE): |
修复好的脚本放出:
deflat.py_下载
运行此脚本需要安装 braf 等库
使用 python2 运行:
1 | python2 deflat.py 可执行文件 0x平坦化十六进制函数地址 # 如果是四位需要加上0x400000基地址 |