libmwemu 0.24.5

x86 32/64bits and system internals emulator, for securely emulating malware and other stuff.
Documentation
use crate::maps::Maps;

pub struct ProcessBasicInformation64 {
    pub Reserved1: u64,
    pub PebBaseAddress: u64,
    pub Reserved2: [u64; 2],
    pub UniqueProcessId: u64,
    pub Reserved3: u64,
}

impl ProcessBasicInformation64 {
    pub fn size() -> u64 {
        0x30
    }

    pub fn load(addr: u64, maps: &Maps) -> ProcessBasicInformation64 {
        ProcessBasicInformation64 {
            Reserved1: maps.read_qword(addr).unwrap_or(0),
            PebBaseAddress: maps.read_qword(addr + 8).unwrap_or(0),
            Reserved2: [
                maps.read_qword(addr + 16).unwrap_or(0),
                maps.read_qword(addr + 24).unwrap_or(0),
            ],
            UniqueProcessId: maps.read_qword(addr + 32).unwrap_or(0),
            Reserved3: maps.read_qword(addr + 40).unwrap_or(0),
        }
    }

    pub fn save(&self, addr: u64, maps: &mut Maps) {
        maps.write_qword(addr, self.Reserved1);
        maps.write_qword(addr + 8, self.PebBaseAddress);
        maps.write_qword(addr + 16, self.Reserved2[0]);
        maps.write_qword(addr + 24, self.Reserved2[1]);
        maps.write_qword(addr + 32, self.UniqueProcessId);
        maps.write_qword(addr + 40, self.Reserved3);
    }
}