C++のWriteProcessMemory関数の使用方法

WriteProcessMemory関数は、指定したプロセスのメモリにデータを書き込むためにC++で使用されます。

この関数の使い方は以下の通りです。

BOOL WriteProcessMemory(
  HANDLE  hProcess,      // 目标进程的句柄
  LPVOID  lpBaseAddress, // 写入数据的起始地址
  LPCVOID lpBuffer,      // 数据缓冲区的指针
  SIZE_T  nSize,         // 要写入的字节数
  SIZE_T  *lpNumberOfBytesWritten // 实际写入的字节数
);

リファレンスパラメーターの定義

  1. プロセス: OpenProcess 関数で取得可能な、ターゲット プロセスのハンドル。
  2. lpBaseAddress:データの書き込み先の先頭アドレスです。
  3. lpBuffer:書き込むデータを含むバッファを指すポインタ
  4. サイズ:書き込むバイト数
  5. lpNumberOfBytesWritten:実際に書き込まれたバイト数を格納する可変ポインタを指す

関数が返却する値:

  1. 関数の呼び出しに成功すると、ゼロ以外の値が返ります。
  2. 呼び出しが失敗した場合は、戻り値は 0 です。GetLastError 関数を呼び出すことで、エラーに関する詳細情報を取得できます。

サンプルコード:

#include <iostream>
#include <windows.h>

int main()
{
    // 打开目标进程
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, targetProcessId);

    // 写入数据
    int value = 123;
    LPVOID lpBaseAddress = (LPVOID)0x12345678;
    SIZE_T nSize = sizeof(value);
    SIZE_T lpNumberOfBytesWritten;

    BOOL result = WriteProcessMemory(hProcess, lpBaseAddress, &value, nSize, &lpNumberOfBytesWritten);
    if (result)
    {
        std::cout << "WriteProcessMemory succeeded. Bytes written: " << lpNumberOfBytesWritten << std::endl;
    }
    else
    {
        std::cout << "WriteProcessMemory failed. Error code: " << GetLastError() << std::endl;
    }

    // 关闭目标进程句柄
    CloseHandle(hProcess);

    return 0;
}

上記のサンプルコードでは,まずOpenProcess関数を使用して,ターゲットプロセスのハンドルを開きます.次に,WriteProcessMemory関数を使用して,ターゲットプロセスに整数値を書き込みます.最後に,CloseHandle関数を使用して,ターゲットプロセスのハンドルを閉じます.

bannerAds