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());
}