Pythonでプロセスのメモリを読み取る方法


Pythonを使用して、実行中のプロセスのメモリを読み取る方法について説明します。以下にいくつかのコード例を示します。

  1. psutilモジュールを使用する方法:

    import psutil
    # プロセスIDを指定する
    pid = 1234
    # プロセスのメモリ情報を取得する
    process = psutil.Process(pid)
    memory_info = process.memory_info()
    # メモリ使用量を表示する
    print("メモリ使用量:", memory_info.rss)
  2. ctypesモジュールを使用する方法:

    import ctypes
    # プロセスIDを指定する
    pid = 1234
    # プロセスのハンドルを開く
    process_handle = ctypes.windll.kernel32.OpenProcess(0x1F0FFF, False, pid)
    # メモリを読み取る
    buffer = ctypes.create_string_buffer(4096)
    bytes_read = ctypes.c_ulong(0)
    ctypes.windll.kernel32.ReadProcessMemory(process_handle, address, buffer, len(buffer), ctypes.byref(bytes_read))
    # 読み取ったメモリを表示する
    print(buffer.value)
  3. pywin32モジュールを使用する方法(Windowsのみ):

    import win32api
    import win32process
    import win32con
    # プロセスIDを指定する
    pid = 1234
    # プロセスのハンドルを開く
    process_handle = win32api.OpenProcess(win32con.PROCESS_ALL_ACCESS, False, pid)
    # メモリを読み取る
    buffer = win32process.ReadProcessMemory(process_handle, address, size)
    # 読み取ったメモリを表示する
    print(buffer)

これらのコード例を使って、実行中のプロセスのメモリを読み取る方法を試してみてください。それぞれの例は異なるモジュールを使用していますが、目的に応じて最適な方法を選択できます。注意してください、これらのコードは特定のOSや環境に依存する場合がありますので、適切に調整する必要があります。