我试图读取进程的内存,但我想要读取的地址超出了IntPtr和UIntPtr限制。
[DllImport("kernel32.dll", EntryPoint = "ReadProcessMemory")]
private static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, [Out] int lpNumberOfBytesRead);
ReadProcessMemory(ProcessHandle, (IntPtr)0x14EC7B38A, buffer, buffer.Length, bytesused);
即使我使用UIntPtr
,执行此操作也会产生OverflowException异常。我尝试使用ulong
,但这会产生AccessViolationException异常。我应该使用哪种其他数据类型?
答案 0 :(得分:1)
Windows是64位操作系统。 UInt是64位宽。我认为问题在于你的应用程序是为32位构建的,或是为了#34;首选32位" (Visual Studio默认值)。
This answer包含您要更改的设置的详细信息。