我想对 Linux 内核进行源代码分析,但要做到这一点,我首先需要对其进行解析。我有哪些选择?我更喜欢可从 python 中使用的 AST,但任何其他语言也可以。
显然 CIL能够解析整个内核,但网站上并不清楚如何解析。
最佳答案
我建议从 sparse
开始静态分析工具。因为 sparse
是专门为帮助内核开发人员对内核执行静态分析而设计的,所以您可以在某种程度上保证它确实应该解析在内核中使用的 C99 和 GNU 扩展的组合内核源代码。我检查过的代码看起来干净直接,但我从未尝试以任何方式扩展它。 Documentation/sparse.txt
文件有一个关于在内核源代码上使用 sparse
的非常简短的概要,如果您想要一个非常高级的概述。
另一个选项是 GCC MELT ,一个旨在使为 gcc
编译器构建插件变得更容易的工具。使用它需要了解足够的 gcc
内部知识才能找到解决方法,但 MELT 看起来确实比直接在 C 中编写类似的插件容易得多。
关于linux - 将 Linux 源代码解析为抽象语法树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428408/