INNER CODE UNIT · Rust

get_function_base

Idov31/FunctionStomping · functionstomping/src/functionstomping.rs:132

fn get_function_base(remote_handle: HANDLE, module_name: &str, function_name: CString) -> Result<FARPROC, anyhow::Error> {   
    let mut res: BOOL;
    let mut cb_needed: DWORD =  0;
    let mut current_module_name: String;
    let mut module_list: [HMODULE; constants::MAX_AMOUNT_OF_MODULES] = [ptr::null_mut(); constants::MAX_AMOUNT_OF_MODULES];

    unsafe {
        let module_list_size = (size_of::<HMODULE>() * constants::MAX_AMOUNT_OF_MODULES).try_into().unwrap();
        res = EnumProcessModules(remote_handle, &mut module_list[0], module_list_size, &mut cb_needed);

        if res == FALSE {
            // Retry one more time.
            res = EnumProcessModules(remote_handle, &mut module_list[0], module_list_size, &mut cb_needed);

            if res == FALSE {
                let err = Win32Error::new();
                return Err(err.into());
            }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…