基本块和数据流分析

逆向工程 二元分析 控制流图
2021-07-11 11:31:27

我希望通过代码进行一些数据流分析。我已经有了解析二进制文件并将其反汇编 (x86/x64) 并创建基本块的代码。

现在我想做的是,对于任何基本块,分析每条指令的效果并将所有这些效果组合起来,以导出基本块边界处的信息。

我还想执行变量跟踪和实时变量分析。最后,CFG(控制流图)可以查看基本块的所有这些效果。

是否有任何可用的 C/C+ Lib 或任何开源项目的子集可以帮助我实现这一目标?

谢谢!

2个回答

你可以看看radare项目:

https://github.com/radare/radare2

他们对助记符的 ESIL 表示可以帮助您跟踪对变量、寄存器甚至标志的访问。

https://radare.gitbooks.io/radare2book/content/disassemble/esil.html

例如,inc edi会导致edi,++=,$o,of,=,$s,sf,=,$z,zf,=,$p,pf,=

一个不错的框架是Triton,它在动态符号执行方面做得很好。我最终查看了代码并使用相同的方法实现了我自己的解决方案。