threatflux-binary-analysis 0.2.0

Comprehensive binary analysis library with multi-format support, disassembly, and security analysis
Documentation
#![allow(clippy::uninlined_format_args)]
#![cfg(all(
    feature = "control-flow",
    any(feature = "disasm-capstone", feature = "disasm-iced")
))]

use threatflux_binary_analysis::analysis::control_flow;
use threatflux_binary_analysis::types::ControlFlow as FlowType;
use threatflux_binary_analysis::BinaryFile;

mod util;
use util::create_test_elf;

#[test]
fn test_control_flow_analysis_from_binary() {
    let data = create_test_elf();
    let binary = BinaryFile::parse(&data).expect("parse ELF");
    let cfgs = control_flow::analyze_binary(&binary).expect("analyze");
    assert!(!cfgs.is_empty());
    let cfg = &cfgs[0];
    assert!(!cfg.basic_blocks.is_empty());
    let has_return = cfg.basic_blocks.iter().any(|b| {
        b.instructions
            .iter()
            .any(|i| matches!(i.flow, FlowType::Return))
    });
    assert!(has_return);
}