libmwemu 0.24.5

x86 32/64bits and system internals emulator, for securely emulating malware and other stuff.
Documentation
use std::error::Error;
use std::io;
use std::path::Path;

use crate::emu::Emu;
use crate::serialization::emu::SerializableEmu;

mod context;
mod reader;
mod writer;

pub(crate) fn dump_to_minidump(emu: &Emu, filename: &str) -> io::Result<()> {
    writer::MinidumpWriter::write_to_file(emu, filename)
}

pub(crate) fn load_from_minidump(filename: &str) -> Result<SerializableEmu, Box<dyn Error>> {
    reader::MinidumpReader::from_minidump_file(filename)
}

pub(crate) fn is_minidump_path(filename: &str) -> bool {
    Path::new(filename)
        .extension()
        .and_then(|ext| ext.to_str())
        .map(|ext| ext.eq_ignore_ascii_case("dmp") || ext.eq_ignore_ascii_case("mdmp"))
        .unwrap_or(false)
}

pub(crate) fn has_minidump_signature(data: &[u8]) -> bool {
    data.starts_with(b"MDMP")
}