ReadProcessMemoryでプロセス配列を読み取る問題

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関数は、対象プロセスのメモリデータを読み取るため、対象プロセスに十分な権限があることを確認する必要があります。

bannerAds