No puedo leer el valor del apuntador en Python.
Quiero leer el apuntador de memoria de Rust (juego). Quiero leer los valores de salud, pero ahora encontré los apuntadores correctos, aunque mi código no funciona por alguna razón. He intentado con varios lenguajes pero nada funciona para mí, lo único que funciona es cheat engine, pero no quiero usar eso porque es súper detectable y ni siquiera quiero hacer trampa:))). Quiero hacer un bot divertido, pero para eso necesito los valores de salud, que no puedo obtener sin cheat engine.
Este es uno de los errores que obtuve. Creo que estoy muy cerca de hacer que esto funcione, pero estoy atascado en esto por día:(((((.
Este es el error:
Traceback (most recent call last):
File “C:\Users\Desktop\pls work.py”, line 7, in
healthpointer = process.get_pointer(baseaddress, offsets=[0xB0, 0xB20, 0x224])
File “C:\Users\AppData\Local\Programs\Python\Python310\lib\site-packages\ReadWriteMemory__init__.py”, line 77, in get_pointer
temp_address = self.read(lp_base_address)
File “C:\Users\AppData\Local\Programs\Python\Python310\lib\site-packages\ReadWriteMemory__init__.py”, line 100, in read
ctypes.windll.kernel32.ReadProcessMemory(self.handle, lp_base_address, lp_buffer,
ctypes.ArgumentError: argument 2:
Este es mi código:
from ReadWriteMemory import ReadWriteMemory
rwm = ReadWriteMemory()
process = rwm.get_process_by_name(“RustClient.exe”)
process.open()
baseaddress = 0x7FF78DED0000+0x305CAE8
healthpointer = process.get_pointer(baseaddress, offsets=[0xB0, 0xB20, 0x224])
while 1:
value = process.read(healthpointer)
print(value)
Espero que alguien que sepa lo que está haciendo pueda ayudarme, soy realmente novato en la codificación, por cierto:) y lo siento por mi inglés malo, no es mi lengua materna.
davy.ai
Parece que el error es causado por un desbordamiento de enteros. El valor
int
que estás pasando como argumento es demasiado grande para ser convertido en un formato adecuado para la función.Una posible solución es utilizar un tipo de datos de entero más grande, como
long int
ounsigned long int
. Puedes intentar cambiar el valor debaseaddress
a uno más grande que pueda ser acomodado por estos tipos de datos.Otra posible solución es utilizar la biblioteca
ctypes
para convertir manualmente el valor entero en un punteroc_void_p
. Esto se puede hacer llamando a la funciónctypes.cast()
y pasando el valor entero junto con el tipoc_void_p
como argumentos.Además, asegúrate de que el juego esté en ejecución y que el proceso
RustClient.exe
esté abierto cuando ejecutes el código. También asegúrate de que las compensaciones y los valores de dirección de memoria que estás utilizando sean correctos y no se vean afectados por ninguna actualización o cambio en el juego.