smda 0.5.2

Recursive x86/x64 disassembler library for control-flow recovery from memory dumps. Iced-x86-backed; zero-copy.
Documentation
use crate::{Result, label_provider::LabelProvider};

pub mod elf_api_resolver;
pub mod elf_symbol_provider;
pub mod pdb_symbol_provider;
pub mod win_api_resolver;

pub fn init() -> Result<Vec<LabelProvider>> {
    Ok(vec![
        LabelProvider::WinApi(win_api_resolver::WinApiResolver::new()?),
        LabelProvider::ElfApi(elf_api_resolver::ElfApiResolver::new()?),
        LabelProvider::ElfSymbol(elf_symbol_provider::ElfSymbolProvider::new()?),
        LabelProvider::PdbSymbol(pdb_symbol_provider::PdbSymbolProvider::new()?),
    ])
}

#[derive(Debug, Clone)]
pub struct ApiEntry {
    pub referencing_addr: std::collections::HashSet<u64>,
    pub dll_name: Option<String>,
    pub api_name: Option<String>,
}