Expand description
Falcon: A Binary Analysis Framework in Rust.
Falcon is a framework in rust for implementing formal analyses over binary programs. A quick synopsis of Falcon’s modules:
- analysis - A fixed-point engine and methods for abstract interpretation over Falcon IL. Example, usable analyses are given.
- architecture - Information on Falcon’s supported architectures.
- executor - A concrete execution engine over Falcon IL.
- graph - A simple directed graph library.
- il - Falcon’s Intermediate Language.
- loader - Loaders for binary formats, currently supporting Elf.
- memory - A layered memory model over generic types.
- translator - Translators from native architectures to Falcon IL.
Falcon also has bindings for the scripting language gluon, which makes exploratory analysis over Falcon quick and pleasant.
use falcon::loader::Elf;
use falcon::loader::Loader;
use std::path::Path;
let elf = Elf::from_file(Path::new("test_binaries/simple-0/simple-0"))?;
for function in elf.program()?.functions() {
for block in function.blocks() {
println!("Block {} in Function {:x}", block.index(), function.address());
println!("{}", block);
}
}
Modules
Implementations and traits for static analysis over Falcon IL.
Information and types for Falcon’s supported architectures.
Concrete execution over Falcon IL.
Implements a directed graph.
Falcon Intermediate Language.
Loading executable binaries into Falcon.
Efficient memory representations.
Implementations and traits for code transformation over Falcon IL.
Translators for various architectures to Falcon IL.