0%

Clang Static Analyer是一个开源的源代码分析工具,它以一些程序分析研究论文为基础,设计了名字-内存区域-值的三元内存模型、基于函数内联的过程间分析方法,综合了抽象语法树分析、控制流图分析、符号执行等漏洞扫描技术,可以高效地发现C、C++和Objective-C程序中的复杂漏洞,并提供可视化的触发漏洞的具体程序执行路径。

目前Clang Static Analyer可以作为命令行工具使用,也可以被集成在Xcode等集成开发环境中使用;在编译构建代码库时,可以调用Clang Static Analyer命令行工具对源代码进行漏洞检测;像Clang项目的其他部分一样,Clang Static Analyer被实现成一个C++的库的形式,使得它能被其他的工具和应用使用。

Read more »

符号执行 (Symbolic Execution) 是一种程序分析技术,其可以通过分析程序来得到让特定代码区域执行的输入。使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束,然后通过约束求解器来得到可以触发目标代码的具体值。
(摘录自中文维基百科,有改动)

Read more »

LLVM 是一套编译器基础设施项目,为自由软件,以 C++ 写成,包含一系列模块化的编译器组件和工具链,用来开发编译器前端和后端。它是为了任意一种编程语言而写成的程序,利用虚拟技术创造出编译时期、链接时期、运行时期以及「闲置时期」的最优化。它最早以 C/C++ 为实现对象,而目前它已支持包括 ActionScript、Ada、D 语言、Fortran、GLSL、Haskell、Java 字节码、Objective-C、Swift、Python、Ruby、Crystal、Rust、Scala 以及 C# 等语言。
(摘录自中文维基百科,有改动)

这篇博文是我学习 LLVM 编译器架构的编译器前端 Clang 的笔记。

该笔记的侧重点在如何使用 Clang AST 相关的 API 进行静态源码分析工具的开发,而非如何使用 Clang 系列二进制工具。

Read more »

本博文之内容仅供技术交流、学习,请勿用于违法、盈利行为。博主对博文中内容的时效性不负责,也不保证能解答读者的一切问题。如需转载,请注明原作者信息,并附带本博文链接。继续阅读则默认您同意上述条款。若不同意,请立即关闭本页面。

Read more »