WriteProcessMemory方法用于將數據寫入另一個進程的內存中。它是C#中的一個函數,用于與Windows API交互。
下面是WriteProcessMemory方法的基本用法:
[DllImport("kernel32.dll")]
public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out int lpNumberOfBytesWritten);
static void Main(string[] args)
{
// 打開目標進程
IntPtr processHandle = OpenProcess(ProcessAccessFlags.All, false, processId);
// 寫入數據到目標進程的內存
byte[] buffer = Encoding.Unicode.GetBytes("Hello, World!");
IntPtr baseAddress = new IntPtr(address); // 內存地址
int bytesWritten;
WriteProcessMemory(processHandle, baseAddress, buffer, (uint)buffer.Length, out bytesWritten);
// 關閉目標進程
CloseHandle(processHandle);
}
其中,OpenProcess
函數用于打開目標進程,CloseHandle
函數用于關閉目標進程。ProcessAccessFlags.All
表示對目標進程的所有訪問權限。
WriteProcessMemory
函數接收以下參數:
hProcess
:目標進程的句柄,由OpenProcess
函數返回。lpBaseAddress
:要寫入數據的內存地址。lpBuffer
:要寫入的數據。nSize
:要寫入的數據大小。lpNumberOfBytesWritten
:實際寫入的字節數。在使用WriteProcessMemory方法時,需要注意以下幾點:
kernel32.dll
中的DllImport
特性引入該方法。