阅读量:7
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函数读取的是目标进程的内存数据,因此需要确保目标进程有足够的权限来进行读取操作。