利用代码属性图实现对LLVM-IR的分析
在软件开发和安全分析领域,对代码的有效分析至关重要。代码属性图(CPG)和LLVM中间表示(LLVM-IR)是两个重要的概念,将LLVM-IR表示在CPG中,能够为安全分析带来新的可能性。
主要贡献
- 将所有LLVM-IR指令首次映射到现有的CPG节点,且与现有结构完全兼容,确保现有分析与该表示完全兼容。
- 展示了如何保持CPG的大小最小化。
- 首次将LLVM-IR的异常处理例程包含在CPG中。
- 扩展了开源项目cpg4以支持相关概念。
背景知识
代码属性图(CPG)
CPG项目旨在以图的形式表示不同编程语言的源代码。目前主要关注Java和C/C++,同时也对Python、Go和TypeScript提供实验性支持。其目标是提供一种与语言无关的源代码表示,帮助安全专家识别漏洞或错误。
CPG库具有以下特点:
- 可以将图存储在neo4j中,并通过命令行界面访问。
- 某些情况下可以评估节点可能持有的值。
- 允许安全专家对图数据库或CPG的内存表示编写自定义查询。
- 设计了完整的类层次结构,以适应各种类型的语句和表达式。
- 能够处理不完整、不可编译甚至一定程度上错误的代码。
LLVM中间表示(LLVM-IR)
LLVM-IR是LLVM项目的中间表示,主要用于提供代码的抽象,以便在语言和架构无关的情况下进行程序优化和分析。
- 指令
超级会员免费看
订阅专栏 解锁全文
1458

被折叠的 条评论
为什么被折叠?



