es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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: : int too long to convert

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.

Tags:  , , ,

Answer

  1. Avatar for 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 o unsigned long int. Puedes intentar cambiar el valor de baseaddress 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 puntero c_void_p. Esto se puede hacer llamando a la función ctypes.cast() y pasando el valor entero junto con el tipo c_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.

Comments are closed.