我希望通过代码进行一些数据流分析。我已经有了解析二进制文件并将其反汇编 (x86/x64) 并创建基本块的代码。
现在我想做的是,对于任何基本块,分析每条指令的效果并将所有这些效果组合起来,以导出基本块边界处的信息。
我还想执行变量跟踪和实时变量分析。最后,CFG(控制流图)可以查看基本块的所有这些效果。
是否有任何可用的 C/C+ Lib 或任何开源项目的子集可以帮助我实现这一目标?
谢谢!
我希望通过代码进行一些数据流分析。我已经有了解析二进制文件并将其反汇编 (x86/x64) 并创建基本块的代码。
现在我想做的是,对于任何基本块,分析每条指令的效果并将所有这些效果组合起来,以导出基本块边界处的信息。
我还想执行变量跟踪和实时变量分析。最后,CFG(控制流图)可以查看基本块的所有这些效果。
是否有任何可用的 C/C+ Lib 或任何开源项目的子集可以帮助我实现这一目标?
谢谢!
你可以看看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,它在动态符号执行方面做得很好。我最终查看了代码并使用相同的方法实现了我自己的解决方案。