C# 4.0 C#.NET-在ReadProcessMemory中获取错误
如何修正阅读 这里出错C# 4.0 C#.NET-在ReadProcessMemory中获取错误,c#-4.0,C# 4.0,如何修正阅读 这里出错 ReadProcessMemory(hProc, ptr, buffer, buffer.Length, out var read); 代码: 当我在这里看到我的代码时,我总是很惊讶。您使用的代码与我的代码相同,在多个项目中对我来说效果很好。首先,您的指针链必须正确,否则它将无法工作。其次,您必须以管理员身份运行应用程序。第三,必须为与目标进程相同的体系结构编译.exe。如果目标进程是x86,则为其编译,与x64类似 如果所有这些步骤都完成了,只要目标进程没有反热,它就
ReadProcessMemory(hProc, ptr, buffer, buffer.Length, out var read);
代码:
当我在这里看到我的代码时,我总是很惊讶。您使用的代码与我的代码相同,在多个项目中对我来说效果很好。首先,您的指针链必须正确,否则它将无法工作。其次,您必须以管理员身份运行应用程序。第三,必须为与目标进程相同的体系结构编译.exe。如果目标进程是x86,则为其编译,与x64类似 如果所有这些步骤都完成了,只要目标进程没有反热,它就可以正常工作
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, out IntPtr lpNumberOfBytesRead);
public static IntPtr FindDMAAddy(IntPtr hProc, IntPtr ptr, int[] offsets)
{
var buffer = new byte[IntPtr.Size];
foreach (int i in offsets)
{
ReadProcessMemory(hProc, ptr, buffer, buffer.Length, out var read);
ptr = (IntPtr.Size == 4)
? IntPtr.Add(new IntPtr(BitConverter.ToInt32(buffer, 0)), i)
: ptr = IntPtr.Add(new IntPtr(BitConverter.ToInt64(buffer, 0)), i);
}
return ptr;
}