当我使用来自ReadProcessMemory的windows-rs软件包函数时,它返回0。这是错误的,所以我使用了GetLastError()函数,它返回“只完成了ReadProcessMemory或WriteProcessMemory请求的一部分”。
下面是ReadProcessMemory的代码:
unsafe{
let mut healthValue: i32 = 0;
ReadProcessMemory(
hProcess,
0xE6A848 as *mut c_void,
healthValue as *mut c_void,
std::mem::size_of::<i32> as usize,
&mut 0
);
println!("{}", healthValue);
match GetLastError().ok() {
Ok(_) => println!("no eror"),
Err(t) => println!("error: {}", t),
}
};要处理该流程的代码:
let hProcess: HANDLE;
unsafe{
match OpenProcess(PROCESS_ALL_ACCESS, false, procId as u32) {
Ok(T) => hProcess = T,
Err(A) => {
hProcess = INVALID_HANDLE_VALUE;
println!("hproc is INVALID");
}
}
}我已经检查和ProcId是正确的,我使用欺骗引擎获得内存地址,这两个应用程序运行在32位,我的教练正在运行作为管理员。这些都没有帮助。
发布于 2022-11-09 19:56:05
通过将healthValue as *mut c_void更改为ptr::addr_of_mut!(healthValue) as *mut c_void来修正它。
https://stackoverflow.com/questions/74369214
复制相似问题