Mfc读写进程内存代码
时间: 2023-05-29 10:07:12 浏览: 147
以下是一个简单的MFC程序,可以读取和写入进程的内存。
首先,需要添加以下头文件:
```cpp
#include <Windows.h>
#include <TlHelp32.h>
```
然后,在MFC应用程序的主窗口类中添加以下方法:
```cpp
void ReadMemory(DWORD processID, LPCVOID address, LPVOID buffer, SIZE_T size) {
HANDLE hProcess = OpenProcess(PROCESS_VM_READ, FALSE, processID);
if (hProcess != NULL) {
ReadProcessMemory(hProcess, address, buffer, size, NULL);
CloseHandle(hProcess);
}
}
void WriteMemory(DWORD processID, LPVOID address, LPCVOID buffer, SIZE_T size) {
HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, processID);
if (hProcess != NULL) {
WriteProcessMemory(hProcess, address, buffer, size, NULL);
CloseHandle(hProcess);
}
}
```
这两个方法分别用于读取和写入进程的内存。参数`processID`是目标进程的ID,`address`是要读取或写入的内存地址,`buffer`是缓冲区,`size`是要读取或写入的字节数。
例如,如果要读取进程ID为1234的进程中地址为0x1000的内存,可以这样调用:
```cpp
DWORD processID = 1234;
LPVOID buffer = malloc(1024);
ReadMemory(processID, (LPCVOID)0x1000, buffer, 1024);
```
同样地,如果要写入进程ID为1234的进程中地址为0x1000的内存,可以这样调用:
```cpp
DWORD processID = 1234;
LPCVOID buffer = "Hello, World!";
WriteMemory(processID, (LPVOID)0x1000, buffer, strlen(buffer)+1);
```
这里写入的是一个字符串,需要注意字符串末尾的'\0'也要写入。