To Build a Rust-based antivirus scanner that:
| Component | Responsibility |
|---|---|
RuleLoader |
Load and parse rule files (YARA-like syntax) |
Rule |
Represents a single detection rule (name, condition, pattern) |
Scanner |
Apply rules to files or memory buffers |
ScanResult |
Stores result (detected rule, file path, offsets) |
ScanEngine |
Manages rules + parallel scanning |
Benchmark |
Measure performance across these components |
rustav/
├── Cargo.toml
├── src/
│ ├── main.rs
│ ├── rule_loader.rs
│ ├── rule.rs
│ ├── scanner.rs
│ ├── scan_engine.rs
│ └── results.rs
└── benches/
├── load_rules.rs
├── scan_single.rs
├── scan_parallel.rs
Goal: Efficiently parse YARA-like rules into memory.
Example features:
Read .yara or .yar file
Extract:
rule Trojan_Generic {
strings:
$a = "malicious_code"
condition:
$a
}