我正在構建一個用于讀取記憶體的庫,我想將其擴展到 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也是幾個 Rust 庫使用的。
什么庫/包是vm_read_overwrite其中的一部分?簽名正確嗎?也許另外,我可以使用條件編譯來使用不同的功能,還是必須使用RuntimeInformation.IsOSPlatform?
uj5u.com熱心網友回復:
[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
);
這適用于我的機器。希望能幫助到你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/461572.html
上一篇:Node/NPM正在更新我的主目錄而不是專案目錄中的package.json和package-lock.json檔案
