2个版本

0.1.1 2022年4月5日
0.1.0 2022年4月5日

#949编程语言

MIT 许可证

140KB
2K SLoC

llvm-ir-taint: LLVM IR的污点跟踪

crates.io License

本库为LLVM IR提供静态污点跟踪。

入门

llvm-ir-taintcrates.io 上,因此您可以将其作为依赖项添加到您的 Cargo.toml 中,选择与您想要的LLVM版本对应的特性

[dependencies]
llvm-ir-taint = { version = "0.1.1", features = ["llvm-13"] }

目前支持的LLVM版本有 llvm-8llvm-9llvm-10llvm-11llvm-12llvm-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