【发布时间】:2016-02-20 20:57:31
【问题描述】:
我想使用 C 语言从汇编文件创建控制流图(CFG)。我一直在考虑它,这些是我的想法: 1.创建块 - 逐行处理汇编文件 - 找到重要的指令,如函数名称、块名称、跳转指令、调用指令或离开/返回,也许还有其他一些指令 - 也许用正则表达式找到它们?但我还没有在 Windows 上找到 C 的正则表达式实现。 - 在上述指令匹配后,将匹配前的指令保存到某个结构,这是我的块 2.创建CFG - somhow 从块创建 CFG 但我不知道
谁能给我一些建议怎么做?另外,如果有更好的语言可以做到这一点,如果您告诉我,我会很高兴。
感谢您的时间和帮助。
【问题讨论】:
-
这取决于你需要做的工作有多好。使用您最熟悉的任何语言的临时正则表达式都是合理的第一近似值。你会在宏、外部链接、计算分支等方面遇到麻烦,但是不可能从一个完美的解决方案开始,所以这完全取决于你需要的启发式方法有多好。
-
如果您进行 ad hoc 解析,您将获得最好的 ad hoc 控制流图。为什么你会想要一个糟糕的 CFG,这超出了我的理解;你会用它做什么有用的?
-
你需要这个做什么?也许有一个不同的方向来解决这背后的真正问题。
-
我想实现一个名为“使用断言的增强版控制流检查”的方法来汇编源代码。
-
C 对此任务没有任何特殊优势。有一些高级语言通常使文本解析更容易。我会使用 perl,因为这是我所知道的,但是有很多不错的选择。 Python 很流行。
标签: parsing assembly control-flow-graph