libmwemu 0.24.1

x86 32/64bits and system internals emulator, for securely emulating malware and other stuff.
Documentation
use crate::{emu, structures};

pub fn FindActCtxSectionStringW(emu: &mut emu::Emu) {
    let actctx = emu.regs().rcx;
    let section_name_ptr = emu.regs().rdx;
    let string_name_ptr = emu.regs().r8;
    let string_value_ptr = emu.regs().r9;
    let out_ptr = emu
        .maps
        .read_qword(emu.regs().rsp + 0x20)
        .expect("error reading out_ptr");

    let mut section_name = String::new();
    let mut string_name = String::new();
    let mut string_value = String::new();

    if section_name_ptr > 0 {
        section_name = emu.maps.read_wide_string(section_name_ptr);
    }
    if string_name_ptr > 0 {
        string_name = emu.maps.read_wide_string(string_name_ptr);
    }
    if string_value_ptr > 0 {
        string_value = emu.maps.read_wide_string(string_value_ptr);
    }

    let actctx_section_keyed_data = structures::ActCtxSectionKeyedData64::new();
    actctx_section_keyed_data.save(out_ptr, &mut emu.maps);

    log_red!(
        emu,
        "kernel32!FindActCtxSectionStringW section_name: {} string_name: {} string_value: {}",
        section_name,
        string_name,
        string_value
    );

    emu.regs_mut().rax = 1;
}