带有作弊引擎的 C# 读取进程内存
本文关键字:读取 取进程 内存 引擎 | 更新日期: 2023-09-27 18:30:33
我正在尝试从使用作弊引擎找到的地址中获取字符串值。例如,我发现了0x01742A38,这是我程序的主要部分(常规Windows表单应用程序):
Process[] processes = Process.GetProcessesByName("Tibia");
foreach (Process p in processes)
{
IntPtr windowHandle = p.MainWindowHandle;
byte[] bufor = new byte[50];
uint baseAddress = (uint)p.MainModule.BaseAddress.ToInt32();
IntPtr addr = ((IntPtr)(baseAddress + 0x01742A38));
uint o = 0;
UInt32 k = 30;
if (ReadProcessMemory(windowHandle, addr, bufor, k, ref o))
{
label3.Text = "Success!";
}
else
{
label3.Text = "Fail : (";
}
}
假设您的静态地址是正确的,您必须使用 OpenProcess 函数打开目标进程,至少具有正确的PROCESS_VM_READ (0x0010)。
我还建议您为函数 ReadProcessMemory 使用更合适的 pinvoke 签名:
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, out IntPtr lpNumberOfBytesRead);