如何监控游戏地址值?
How to monitor game address values?
在尝试分解 GitHub 中的代码并找到任何谈论此内容的 YouTube 视频后,我开始放弃了,所以我希望你们中的一个能帮助我。我想要做的就是监控游戏内存地址值。例如,在Minecraft游戏中,健康值和内存地址是:
地址:001F6498
值:20
如何将此值转换为 Python 中的变量?
代码思考过程:
import pywin32
pid = 5601
address = 001F6498
ReadProcessMemory(pid, address):
print(Value)
#In this example i would like it to print 20
您需要先获取进程的句柄。下面是一些使用 OpenProcess() FindWindow() 和 GetWindowThreadProcessId() 获取进程句柄的代码。还包括一个小函数来正确读取正确的大小变量并正确存储它。此方法可用于读取指针,利用"i"表示整数类型。
import win32api
import win32gui
import win32process
from ctypes import *
from pymem import *
PROCESS_ALL_ACCESS = 0x1F0FFF
ReadProcessMemory = windll.kernel32.ReadProcessMemory
def read_memory(procId, address, type):
buffer = (ctypes.c_byte * getlenght(type))()
bytesRead = ctypes.c_ulonglong(0)
readlenght = getlenght(type)
ReadProcessMemory(procId, address, buffer, readlenght, byref(bytesRead))
return struct.unpack(type, buffer)[0]
hWnd = win32gui.FindWindow(0, ("WINDOW NAME HERE"))
pid=win32process.GetWindowThreadProcessId(hWnd)
handle = pymem.Pymem()
handle.open_process_from_id(pid[1])
procBaseAddress = handle.process_base
hProc = windll.kernel32.OpenProcess(PROCESS_ALL_ACCESS, 0, pid[1])
value = ReadProcessMemory(hProc, ADDRESS_OF_VARIABLE_TO_READ, "i")
print(value)
致谢朋友 puppetmaster,他教了我如何做到这一点
在尝试分解 GitHub 中的代码并找到任何谈论此内容的 YouTube 视频后,我开始放弃了,所以我希望你们中的一个能帮助我。我想要做的就是监控游戏内存地址值。例如,在Minecraft游戏中,健康值和内存地址是:
地址:001F6498
值:20
如何将此值转换为 Python 中的变量?
代码思考过程:
import pywin32
pid = 5601
address = 001F6498
ReadProcessMemory(pid, address):
print(Value)
#In this example i would like it to print 20
您需要先获取进程的句柄。下面是一些使用 OpenProcess() FindWindow() 和 GetWindowThreadProcessId() 获取进程句柄的代码。还包括一个小函数来正确读取正确的大小变量并正确存储它。此方法可用于读取指针,利用"i"表示整数类型。
import win32api
import win32gui
import win32process
from ctypes import *
from pymem import *
PROCESS_ALL_ACCESS = 0x1F0FFF
ReadProcessMemory = windll.kernel32.ReadProcessMemory
def read_memory(procId, address, type):
buffer = (ctypes.c_byte * getlenght(type))()
bytesRead = ctypes.c_ulonglong(0)
readlenght = getlenght(type)
ReadProcessMemory(procId, address, buffer, readlenght, byref(bytesRead))
return struct.unpack(type, buffer)[0]
hWnd = win32gui.FindWindow(0, ("WINDOW NAME HERE"))
pid=win32process.GetWindowThreadProcessId(hWnd)
handle = pymem.Pymem()
handle.open_process_from_id(pid[1])
procBaseAddress = handle.process_base
hProc = windll.kernel32.OpenProcess(PROCESS_ALL_ACCESS, 0, pid[1])
value = ReadProcessMemory(hProc, ADDRESS_OF_VARIABLE_TO_READ, "i")
print(value)
致谢朋友 puppetmaster,他教了我如何做到这一点