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
特性引入该方法。