moon-driver-utils 0.1.0

Windows Kernel Utils
use core::ffi::c_void;

use wdk_sys::ntddk::memcpy;

pub type SehFn = unsafe extern "system" fn(
    option1: *mut c_void,
    option2: *mut c_void,
    option3: *mut c_void,
    option4: *mut c_void,
) -> *mut c_void;

extern "C" {
    pub fn SehFucntionExec(
        func: SehFn,
        option1: *mut c_void,
        option2: *mut c_void,
        option3: *mut c_void,
        option4: *mut c_void,
    ) -> *mut c_void;
}

pub unsafe extern "system" fn write_user_memory_64(
    option1: *mut c_void,
    option2: *mut c_void,
    _option3: *mut c_void,
    _option4: *mut c_void,
) -> *mut c_void {
    *(option1 as *mut u64) = option2 as u64;
    1 as _
}

pub unsafe extern "system" fn read_user_memory_64(
    option1: *mut c_void,
    option2: *mut c_void,
    _option3: *mut c_void,
    _option4: *mut c_void,
) -> *mut c_void {
    *(option1 as *mut u64) = *(option2 as *mut u64);
    1 as _
}

pub unsafe extern "system" fn seh_memcpy(
    option1: *mut c_void,
    option2: *mut c_void,
    option3: *mut c_void,
    _option4: *mut c_void,
) -> *mut c_void {
    unsafe {
        memcpy(option1, option2, option3 as _);
    }
    1 as _
}