参考文章:

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

修复去除控制流平坦化工具deflat.py

符号执行去除控制流平坦化详细讲解,请参考第一篇文章

python3脚本:

deflat.zip

大概跑十几分钟

e176ffa2-9681-4018-ba7b-04934aa62552

以下是过期内容

这里采用了第二篇文章里用到的 deflat.py 脚本:

https://github.com/SnowGirls/deflat

如果环境中没有安装 python2 的pip,下载此脚本并使用 python2.7 运行安装:

get-pip.py_

安装 angr 安装时请使用 python2,建议在虚拟环境或虚拟机下安装,因为 angr 自带 z3 是从 原始库中 fork 而来,会替换原来环境中的 z3

1
python2 -m pip install angr

这里遇到安装 gitpython 产生的坑,参考:

python2.7安装angr时遇到的坑

完成后,原 deflat.py 会报错,参考第二个链接文章进行修复。我这里按照文章修改 32 行代码修改为:

1
if len(list(expressions)) != 0 andisinstance(expressions,pyvex.expr.ITE):

修复好的脚本放出:
deflat.py_下载

运行此脚本需要安装 braf 等库

使用 python2 运行:

1
python2 deflat.py 可执行文件 0x平坦化十六进制函数地址	# 如果是四位需要加上0x400000基地址
⬆︎TOP