10 releases (6 breaking)
0.7.0 | May 21, 2021 |
---|---|
0.6.1 | May 10, 2021 |
0.5.0 | May 7, 2021 |
0.4.0 | May 5, 2021 |
0.1.1 | Oct 11, 2020 |
#2587 in Parser implementations
22 downloads per month
120KB
2.5K
SLoC
VTIL-RustParser
An in-place parser for VTIL files written in Rust.
References
lib.rs
:
VTIL-RustParser
Read/write VTIL files in Rust.
You can learn more about VTIL here on the main GitHub page.
Examples
For a simple example of loading a VTIL routine and reading out some basic data:
use vtil_parser::{Routine, ArchitectureIdentifier};
let routine = Routine::from_path("resources/big.vtil")?;
assert_eq!(routine.header.arch_id, ArchitectureIdentifier::Amd64);
For a more complex example, iterating over IL instructions:
use vtil_parser::{Routine, Op, Operand, RegisterDesc, ImmediateDesc, RegisterFlags};
let routine = Routine::from_path("resources/big.vtil")?;
for (_, basic_block) in routine.explored_blocks.iter().take(1) {
for instr in basic_block.instructions.iter().take(1) {
match &instr.op {
Op::Ldd(_, Operand::RegisterDesc(op2), Operand::ImmediateDesc(op3)) => {
assert!(op2.flags.contains(RegisterFlags::PHYSICAL));
assert!(op3.i64() == 0);
}
_ => assert!(false)
}
assert_eq!(instr.vip.0, 0x9b833);
}
}
Dependencies
~1.4–2.3MB
~41K SLoC