No me sale, el plugin memory me odia! AYUDA POR FAVOR!

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Bueno gente, me rindo, no puedo solo :( , necesito ayuda, ya que: aunque leo y releo la ayuda del plugin no sé por qué pero no la entiendo, les explico: Quisiera simplemente modificar el valor de un ADDRESS de la memoria del juego "Halo Custom Edition" ya que cambiando ese valor a "1" se reproduce un sonido, he estado haciendo pruebas con el "Cheat Engine", y funciona a la perfección, pero quisiera que en AMS a traves de un boton, cambie ese valor, una captura del cheat engine:

Imagen

Para hacer una prueba, antes de cambiar el valor del address, primero probé cogiendo el valor que tenia ,con este codigo:

veamos = Memory.GetDouble(1077914844); -- el address 403FACDC convertido a decimal es 1077914844
result = Dialog.Message("Notice", veamos, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);


Pero cuando presiono el boton, se me crashea el programa:

Código: Seleccionar todo

Firma con problemas:
  Nombre del evento de problema:	APPCRASH
  Nombre de la aplicación:	autorun.exe_AutoPlay Media Studio Runtime
  Versión de la aplicación:	8.5.0.0
  Marca de tiempo de la aplicación:	54da7209
  Nombre del módulo con errores:	AMSWMemory.lmd
  Versión del módulo con errores:	2.0.0.0
  Marca de tiempo del módulo con errores:	4be8164b
  Código de excepción:	c0000005
  Desplazamiento de excepción:	00018c34
  Versión del sistema operativo:	6.3.9600.2.0.0.256.48
  Id. de configuración regional:	10250
  Información adicional 1:	5861
  Información adicional 2:	5861822e1919d7c014bbb064c64908b2
  Información adicional 3:	a10f
  Información adicional 4:	a10ff7d2bb2516fdc753f9c34fc3b069
Prove cada "GET" que da el plugin poniendole el address en decimal arriba mencionado, y siempre se me crashea el programa. En la ayuda solo muestran un ejemeplo en el que previamente se a introducido contenido a la memoria, más no la que ya existe en ella, miren:

mem = Memory.Allocate(1024)
Memory.PutDouble(mem, 102487.56)
Dialog.Message("", Memory.GetDouble(mem)) -- Print 102487.56
Memory.Free(mem)


Me dan una ayudita por favor, ya me estoy volviendo loco, no sé que hacer :SOS:
El problema basicamente por el que recibes un error de ACCESS_VIOLATION es por que tu usas un address, pero la referencia no es correcta me explico.
El valor que estas cambiando esta en la dirección de memoria 0x403FACDC empezando desde el proceso de halo.exe, pero en tu busqueda comienzas con el offset de tu aplicación por lo que realmente estas editando otras regiones que probablemente no existen y al intentar leer o escribir te dara errores
Pabloko escribió:El problema basicamente por el que recibes un error de ACCESS_VIOLATION es por que tu usas un address, pero la referencia no es correcta me explico.
El valor que estas cambiando esta en la dirección de memoria 0x403FACDC empezando desde el proceso de halo.exe, pero en tu busqueda comienzas con el offset de tu aplicación por lo que realmente estas editando otras regiones que probablemente no existen y al intentar leer o escribir te dara errores
gracias, por la explicación, entonces, la forma correcta de lograr lo quee quiero es; primero ¿tomar solo la memoria del juego y luego hacer la busqueda del offset con ese address? , si es así entonces, ¿como excluiría solo la memoria del juego? , por favor un poco de codigo, sigo provando y provando, y ya me empieza a doler la cabeza :SOS:
aver son bastantes formas las que hay de hacer este tipo de cosas, pero una cosa importante es que tengas control de como y cuando accedes a la memoria.

Hay que resaltar que cheatengine no lee apelo cualquier cosa que le metes, tiene funciones para usar el base_adress del exe especifico, checkear que la region existe, y hace los virtualprotects necesarios para poder escribir en ciertas regiones protegidas contra escritura, al fin y al cabo, windows lleva una capa de seguridad para hacer mas dificil esas cosillas.

Por otra parte dudo muchisimo que el plugin amswmemory tenga todas estas funciones por lo que para empezar deberias ir creando un plugin para leer base address, hacer virtualprotect y todas esas tareas que hace automaticamente el ct.

Sinceramente yo veo equivocado montar ese pollo en un app de autoplay, con ejecucion fuera del entorno del juego, teniendo que tabear para pulsar alguna opcion etc... no tiene mucho sense... y mas si te falta funcionalidad basica, y usas el plugin memory que es bastante oscuro y mal documentado, closed-source...

Para hackear juegos, lo mas normal es inyectar una dll, ya sea por inyección o por spoofing, una vez que tienes tu dll inyectada tu base address es automaticamente la del exe del juego por lo que no tienes que hacer pasos adicionales, aunque para escribir memoria a veces necesitaras hacer lo que llamamos UnFuck, que es utilizar virtualprotect para cambiar las propiedades de ese addr por PAGE_EXECUTE_READWRITE lo que permite leer y escribir esa region de memoria.

Lo normal en un cheat cualquiera ademas de adjuntarte al juego, es tomar el control del renderer y del input del usuario, por lo que la gran mayoria de cheats usan un hook del direct3d (si este es el renderer) que permite modificar en tiempo real el renderizado del juego e insertar menus o UIs como AntTweakBar, que es super sencillo de usar.

Y claro, lo dicho todo en c++ ya que con lua siempre vas a necesitar un wrapper muy especifico para hacer estas tareas (escrito en c++)

Si tu juego es directx 9 puedes usar esta base para empezar tu cheat, es una dll llamada d3dx9.dll que pones donde este el exe de tu juego y automaticamente se cargara y hookeará el renderer del juego. Luego seria interesante hookear el sistema de mensajes de windows (wndproc), tienes las funciones para ello en un proyecto que publique "the hook toolbox" ademas de todas las funciones para hookear y editar memoria...

Debes ser cuidadoso porque tienes que estar seguro que lo que quieres editar lo editas en el momento oportuno (despues de la creación de todas las estructuras del juego etc...)

HIDE: ON
Hidebb Message Hidden Description


para ejemplo mi cheat de sa:mp

Imagen
Pabloko escribió:aver son bastantes formas las que hay de hacer este tipo de cosas, pero una cosa importante es que tengas control de como y cuando accedes a la memoria.

Hay que resaltar que cheatengine no lee apelo cualquier cosa que le metes, tiene funciones para usar el base_adress del exe especifico, checkear que la region existe, y hace los virtualprotects necesarios para poder escribir en ciertas regiones protegidas contra escritura, al fin y al cabo, windows lleva una capa de seguridad para hacer mas dificil esas cosillas.

Por otra parte dudo muchisimo que el plugin amswmemory tenga todas estas funciones por lo que para empezar deberias ir creando un plugin para leer base address, hacer virtualprotect y todas esas tareas que hace automaticamente el ct.

Sinceramente yo veo equivocado montar ese pollo en un app de autoplay, con ejecucion fuera del entorno del juego, teniendo que tabear para pulsar alguna opcion etc... no tiene mucho sense... y mas si te falta funcionalidad basica, y usas el plugin memory que es bastante oscuro y mal documentado, closed-source...

Para hackear juegos, lo mas normal es inyectar una dll, ya sea por inyección o por spoofing, una vez que tienes tu dll inyectada tu base address es automaticamente la del exe del juego por lo que no tienes que hacer pasos adicionales, aunque para escribir memoria a veces necesitaras hacer lo que llamamos UnFuck, que es utilizar virtualprotect para cambiar las propiedades de ese addr por PAGE_EXECUTE_READWRITE lo que permite leer y escribir esa region de memoria.

Lo normal en un cheat cualquiera ademas de adjuntarte al juego, es tomar el control del renderer y del input del usuario, por lo que la gran mayoria de cheats usan un hook del direct3d (si este es el renderer) que permite modificar en tiempo real el renderizado del juego e insertar menus o UIs como AntTweakBar, que es super sencillo de usar.

Y claro, lo dicho todo en c++ ya que con lua siempre vas a necesitar un wrapper muy especifico para hacer estas tareas (escrito en c++)

Si tu juego es directx 9 puedes usar esta base para empezar tu cheat, es una dll llamada d3dx9.dll que pones donde este el exe de tu juego y automaticamente se cargara y hookeará el renderer del juego. Luego seria interesante hookear el sistema de mensajes de windows (wndproc), tienes las funciones para ello en un proyecto que publique "the hook toolbox" ademas de todas las funciones para hookear y editar memoria...

Debes ser cuidadoso porque tienes que estar seguro que lo que quieres editar lo editas en el momento oportuno (despues de la creación de todas las estructuras del juego etc...)

para ejemplo mi cheat de sa:mp
Muchas gracias por la tan extensa e interesante respuesta pabloko, veo que me falta mucho que aprender, algunas cosas que mencionas, no las conocía, y me pondré a investigarlas.

No estoy desarrollando un Cheat para el juego Halo, lo que quiero lograr hacer es que, con el AMS comprobar si una ADDRESS a cambiado y dependiendo eso, cambiar otro, ya que cuando juegas en un servidor dedicado, lo que obtienes del servidor solamente son las ubicaciones de otros jugadores, la vida de éstos, y demás, pero no hay una comunicación tan detallada con el cliente en sí, como por ejemplo, no te reproduce sonidos del mapa mismo que estás jugando, ni tampoco te cambia visualmente algunos aspectos de los nuevos modos de juego que han llegado al Halo, es por eso que quiero hacer esta aplicación, que detecté si un address cambia y si lo hace, pues cambie otro (en este caso el de reproducir el sonido que expuse más arriba).

Cosa aparte: Me doy cuenta, por tus hilos y videos, que tienes mucha experiencia en este mundo de la programación y demás, y me preguntaba si podrías sugerirme de que manera podría empezar para llegar a tener tanto conocimiento como tu: sé que todo se puede lograr a base de esfuerzo y dedicación, lo cual estoy dispuesto a hacer, pero siempre hay que tener una guia de como empezar y como seguir. ¿entonces?

Algo extra: ¿Sería posible embediar una aplicación de AMS dentro de un juego que está en pantalla completa? , algo así como esto:

Imagen

y si es posible: ¿de qué manera?.

Muchas gracias.
amigo manda pra mim
Gracias
YO ANDO BUSCANDO LO MISMO
mirando