在 Mac 从另一个进程读取内存
Reading memory from another process on Mac
我正在构建一个用于读取内存的库,我想将其扩展到 Mac OS。
在许多其他函数中,许多方法使用的一个主要函数是ReadProcessMemory
;
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ReadProcessMemory(
[In] IntPtr hProcess,
[In] IntPtr lpBaseAddress,
[Out] byte[] lpBuffer,
[In] SIZE_T nSize,
[Out] out SIZE_T lpNumberOfBytesRead
);
我现在想知道 Mac 上的等效项是什么。网上查了一下(当然几乎没有文档),我觉得方法签名应该是这样的;
[DllImport("...")]
[return: MarshalAs(UnmanagedType.I4)]
static extern int vm_read_overwrite(
[In] IntPtr target_task,
[In] IntPtr address,
[In] SIZE_T size,
[Out] byte[] data,
[Out] out SIZE_T outsize
);
vm_read_overwrite
is also what's used by several Rust libraries.
library/package 是 vm_read_overwrite
的一部分?签名是否正确?也许另外,我可以使用条件编译来使用不同的功能,还是必须使用 RuntimeInformation.IsOSPlatform
?
[DllImport("libc")]
static extern int vm_read_overwrite(
[In] IntPtr target_task,
[In] IntPtr address,
[In] uint size,
[Out] byte[] data,
[Out] out uint outsize
);
这适用于我的机器。希望对你有帮助。
我正在构建一个用于读取内存的库,我想将其扩展到 Mac OS。
在许多其他函数中,许多方法使用的一个主要函数是ReadProcessMemory
;
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ReadProcessMemory(
[In] IntPtr hProcess,
[In] IntPtr lpBaseAddress,
[Out] byte[] lpBuffer,
[In] SIZE_T nSize,
[Out] out SIZE_T lpNumberOfBytesRead
);
我现在想知道 Mac 上的等效项是什么。网上查了一下(当然几乎没有文档),我觉得方法签名应该是这样的;
[DllImport("...")]
[return: MarshalAs(UnmanagedType.I4)]
static extern int vm_read_overwrite(
[In] IntPtr target_task,
[In] IntPtr address,
[In] SIZE_T size,
[Out] byte[] data,
[Out] out SIZE_T outsize
);
vm_read_overwrite
is also what's used by several Rust libraries.
library/package 是 vm_read_overwrite
的一部分?签名是否正确?也许另外,我可以使用条件编译来使用不同的功能,还是必须使用 RuntimeInformation.IsOSPlatform
?
[DllImport("libc")]
static extern int vm_read_overwrite(
[In] IntPtr target_task,
[In] IntPtr address,
[In] uint size,
[Out] byte[] data,
[Out] out uint outsize
);
这适用于我的机器。希望对你有帮助。