39个版本 (破坏性更新)
0.28.0 | 2024年6月3日 |
---|---|
0.26.0 | 2024年2月16日 |
0.24.0 | 2023年11月29日 |
0.20.0 | 2023年5月12日 |
0.1.0 | 2018年5月30日 |
#33 in FFI
每月744次下载
用于 5 crates
4MB
102K SLoC
yara-rust
为VirusTotal的Yara库提供绑定。
更多文档可以在Yara的文档中找到。
示例
实现灵感来自yara-python。
const RULES: &str = r#"
rule contains_rust {
strings:
$rust = "rust" nocase
condition:
$rust
}
"#;
fn main() {
let compiler = Compiler::new().unwrap();
let compiler = compiler
.add_rules_str(RULES)
.expect("Should have parsed rule");
let rules = compiler
.compile_rules()
.expect("Should have compiled rules");
let results = rules
.scan_mem("I love Rust!".as_bytes(), 5)
.expect("Should have scanned");
assert!(results.iter().any(|r| r.identifier == "contains_rust"));
}
特性
- 支持Yara v4.2。
- 从字符串或文件编译规则。
- 保存和加载编译后的规则。
- 扫描字节数组(
&[u8]
)或文件。
特性标志和Yara链接。
有关特性标志和如何链接到您的Yara crate的说明,请参阅yara-sys crate文档。
待办事项
- 移除一些字符串转换中的
unwrap
(目前此crate假设规则、元数据和命名空间标识符是有效的Ruststr
)。 - 在多个函数中接受
AsRef<Path>
而不是&str
。 - 实现扫描器API。
- 添加进程扫描。
- 将警告报告给用户。
许可证
根据以下任一项许可:
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
请在提交到该仓库时遵循常规提交规则。
如果您添加了任何新功能,请添加相应的单元/文档测试。