ReadProcessMemory函数可以用来读取指定进程的内存数据。如果要读取进程的数组,可以通过读取数组的首地址和数组长度来实现。
以下是一个示例代码,用来读取进程的整型数组:
#include <iostream>
#include <windows.h>
int main() {
// 获取目标进程的句柄
DWORD pid = 1234; // 目标进程的PID
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (hProcess == NULL) {
std::cout << "无法打开进程" << std::endl;
return 1;
}
// 设置要读取的数组的首地址和长度
DWORD_PTR arrayAddress = 0x12345678; // 数组的首地址
int arraySize = 10; // 数组的长度
// 读取数组数据
int* arrayData = new int[arraySize];
SIZE_T bytesRead;
BOOL success = ReadProcessMemory(hProcess, (LPCVOID)arrayAddress, arrayData, sizeof(int) * arraySize, &bytesRead);
if (!success) {
std::cout << "读取失败" << std::endl;
return 1;
}
// 输出读取到的数组数据
for (int i = 0; i < arraySize; i++) {
std::cout << arrayData[i] << std::endl;
}
// 释放资源
delete[] arrayData;
CloseHandle(hProcess);
return 0;
}
在示例代码中,首先使用OpenProcess函数打开目标进程,并获取到进程的句柄。然后设置要读取的数组的首地址和长度。接下来使用ReadProcessMemory函数读取数组数据,将读取到的数据存储在一个动态分配的整型数组中。最后输出读取到的数组数据,并释放资源。
需要注意的是,ReadProcessMemory函数读取的是目标进程的内存数据,因此需要确保目标进程有足够的权限来进行读取操作。