2个版本
0.1.1 | 2022年4月5日 |
---|---|
0.1.0 | 2022年4月5日 |
#949 在 编程语言
140KB
2K SLoC
llvm-ir-taint
: LLVM IR的污点跟踪
本库为LLVM IR提供静态污点跟踪。
入门
llvm-ir-taint
在 crates.io 上,因此您可以将其作为依赖项添加到您的 Cargo.toml
中,选择与您想要的LLVM版本对应的特性
[dependencies]
llvm-ir-taint = { version = "0.1.1", features = ["llvm-13"] }
目前支持的LLVM版本有 llvm-8
,llvm-9
,llvm-10
,llvm-11
,llvm-12
和 llvm-13
。相应的LLVM库必须在您的系统上可用;有关更多详细信息和方法,请参阅 llvm-sys
的 README。
您还需要一些LLVM IR进行分析,形式为一个或多个 llvm-ir
Module
。这可以从LLVM位码文件中轻松生成;有关更多详细说明,请参阅 llvm-ir
的 README。
一旦您有一个或多个 Module
,您可以通过调用 do_taint_analysis_on_function()
分析单个函数(以及它调用的所有函数,包括间接调用的),或者通过调用 do_taint_analysis_on_module()
分析LLVM模块中的所有函数。
let module = Module::from_bc_path(...)?;
let taint_result = do_taint_analysis_on_function(&[module], ...);
这两个函数中的任何一个都返回一个 TaintResult
,您可以从其中获取有关分析结果的信息,例如哪些变量被污染。
有关更多详细信息,请参阅 文档。
依赖关系
~3.5MB
~52K SLoC