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