【问题标题】:Are there any tools to extract basic blocks and CFG (Control Flow Graph) from executable files [closed]是否有任何工具可以从可执行文件中提取基本块和 CFG(控制流图)[关闭]
【发布时间】:2014-02-02 10:00:10
【问题描述】:

我正在处理本机代码(例如 C/C++)中的源代码控制流混淆。我正在研究一些可以做到这一点的技术以及由此产生的意大利面条代码。

但我们想要评估编译后的文件并将原始文件与等效的混淆文件进行比较。有什么工具可以帮助我们吗?

有一些工具,例如Underestand,可以从源代码中提取CFG,但我们想从.exe 文件中提取CFG

谢谢。

【问题讨论】:

  • 你自己编译吗?在这种情况下,gcov 相关信息可能会有用。
  • 是的,我编译它们(原始代码和混淆代码)。我想提取 CFG 并比较它们。
  • 请注意,编译程序的 CFG 通常与源代码的 CFG 不同。例如,链接器将用它们的实际实现替换表示库调用的单个节点,这通常形成多个节点。
  • @MSalters 我知道编译程序中的基本块与源代码不同。没关系。我只是在寻找一种工具,它可以收集整个机器代码的分支,从而从中指定基本块。
  • @AliAdl:您将如何为虚拟通话提取 CFG?这是在运行时解决的,并且通常无法确定。控制流混淆的理想选择,在这里非常相关。同样,表驱动异常机制中的异常添加了不可见的代码路径。

标签: c++ reverse-engineering decompiling


【解决方案1】:

您可以为IDA ProPin 编写一个插件来分别静态或动态地分析您的程序,从而创建一个CFG。

【讨论】:

  • 你有实践经验吗?
  • 是的,我有实践经验。
  • IDA Pro 和bindiff 的组合听起来像你想要的
  • @pank4j,你能告诉我如何在 Ida Pro 中批量输出子程序图吗?我的问题在这里:http://stackoverflow.com/questions/28619663/ida-pro-gragh-output-batch-mode
猜你喜欢
  • 2010-12-06
  • 2023-04-07
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多