Python 如何监控游戏地址值?

Python 如何监控游戏地址值?,python,memory-address,pywin32,cheat-engine,Python,Memory Address,Pywin32,Cheat Engine,在尝试破解GitHub的代码并找到任何youtube视频谈论这一点后,我开始放弃,所以我希望你们中的一位能够帮助我。我想要做的就是监视游戏内存地址值。例如,假设在游戏Minecraft中,健康值和内存地址为: 地址:001F6498 价值:20 如何在Python中将该值转换为变量 代码思维过程: import pywin32 pid = 5601 address = 001F6498 ReadProcessMemory(pid, address): print(Value) #

在尝试破解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)

感谢一位朋友,木偶大师,他教我如何做这件事

@martineau你给我的链接根本没有回答我的问题,你能解释一下它们是如何相同的吗?你的问题听起来好像你基本上想要尊重指针,哪种Python不支持,尽管可以使用Python对象id(发生在cPython中的内存地址)执行类似的操作。也就是说,您也可以编写自己的自定义Python C扩展来实现它,您可以通过ctypes来实现(因为pywin32不公开该函数,也可能不公开您可能需要的其他函数)。但是,直接在C语言中进行比较容易。