私はPythonが0x101BFFDCのようなアドレスから値/データを取得しようとしていますが、これはゲーム用のチートエンジンを使って見つかりました。私は多くの研究を行い、ReadProcessMemory
を使用する必要があると信じています。しかし、私は成功しなかったいくつかの例を試しました。Python - メモリアドレスの値を取得する方法は?
例えば、私は、次のコードを見つけました:
from ctypes import *
from ctypes.wintypes import *
import struct
OpenProcess = windll.kernel32.OpenProcess
ReadProcessMemory = windll.kernel32.ReadProcessMemory
CloseHandle = windll.kernel32.CloseHandle
PROCESS_ALL_ACCESS = 0x1F0FFF
pid = 10684 # pid of the game
address = 0x101BFFDC# I put the address here
buffer = c_char_p(b"The data goes here")
val = c_int()
bufferSize = len(buffer.value)
bytesRead = c_ulong(0)
processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
if ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead)):
memmove(ctypes.byref(val), buffer, ctypes.sizeof(val))
print("Success:" + str(val.value))
else:
print("Failed.")
CloseHandle(processHandle)
私はそれが私がチートエンジンから得るものである値56を、与えることを期待しています。ただし、「失敗」と表示されます。毎回。
値を正しく取得するにはどうすればよいですか?
これを試みた:https://stackoverflow.com/questi ons/8250625/access-memory-address-in-python? – sharath
@sharathこれは、別のプロセスからメモリを読み取るためには機能しませんが、Pythonプロセスのみです。 –