Registrarse

[Otros] Buscar Offsets de Variables con VBA clásico y Cheat Engine

Cheve

MoonLover~
Miembro de honor
¿Para qué?

Para armar ciertas rutinas, encontrar valores interesantes, testeos, your imagination mi amigo.

¿Por qué?

Porqué estoy aburrido y no sé que hacer en media hora.

¿Es la única forma de hacerlo?

No, también puedes usar VBA-SDL-H, pero no lo usaremos porque no tengo muchas ganas.

¿Qué necesito?

Cheat Engine <- A la hora de descargar e instalar, tened cuidado con las publicidad y software publicitario.

Visual Boy Advance

Advance Map

eXtreme Script Editor (XSE)

Usaremos una rom de prueba, siempre, ya que escribiremos en ella cosas que luego no usaremos en nuestro hackrom.

Manos a la obra

1. Abriremos nuestra Rom con A-Map e iremos al mapa del primer pueblo.

2. Crearemos dos scripts que cambien el valor de nuestra variable tal que así.



#dynamic 0xE30000

'---------------
#org @start
msgbox [MENTION=29127]String[/MENTION]1 MSG_FACE '"Pongo la variable en Z"
setvar 0x4040 0xZ
end


'---------
' Strings
'---------
#org [MENTION=29127]String[/MENTION]1
= Pongo la variable en Z

Quedando claro que la variable que queremos buscar es la 0x4040 (Porque asi lo quiero xD)

3. Luego de ésto guardamos nuestra rom y la abrimos con VBA.

4. Avanzamos hasta llegar al mapa de nuestros Scripts.



5. Abrimos Cheat Engine con permisos de administrador.

6. Veremos enseguida un botón que cambia de colores, haremos clic en él y seleccionaremos el VBA.



7. Marcaremos la casilla que dice "Hex".

8. En éste caso pondremos en "Value Type", "2 Bytes", ya que una variable almacena desde 0x0000 hasta 0xFFFF



9. Ahora volvemos a nuestro juego y hablamos con uno de los dos scripts que hicimos.



10. Presionamos Ctrl+P para pausar nuestro juego y vamos al Cheat Engine.

11. En el Cheat Engine, donde pone "Value:" escribimos 0001 y ponemos "First Scan".



12. Nos aparecerá una lista de muchas direcciones de la Ram de nuestra PC.

13. Volvemos al emulador y lo despausamos (Ctrl + P) y activamos el otro script.



14. Pausamos el emulador, volvemos al Cheat engine, en value ponemos 0006 y clicamos en Next Scan

15. A la derecha nos quedará una sola dirección, pero esa corresponde a la RAM de NUESTRA PC, no del juego.

(Si os queda más de una, volved a hablar con los scripts y a buscar los valores uno por vez hasta que aparezca. El valor "1" es muy común, pero el 6, por algún motivo, no lo es, así que les recomiendo usarlo)

16. Hacemos clic derecho en la dirección única que nos quedó:



17. Vamos al VBA, menú "Cheats > Search for cheats (Ctrl + C)"

18. Lo configuramos así:



(16 bits = 2Bytes que pusimos hoy)
(Specific Value = Valor específico que estamos buscando)

19. En "Enter Value" ponemos 0006, y le damos a "Start" y luego a "Search". Nos aparecerá una lista.

20. Ahora podemos volver a nuestro juego y hablar con el mini que nos cambia la variable a 0001, o ir al cheat engine, hacer clic sobre "Value" en la tabla de abajo y cambiarlo por algún valor que rara vez manejaría la Rom, por ejemplo, 0x70A0



21. Volvemos al VBA y en Enter Value ponemos 70A0 (o 1 si se decantaron por el Script) y clicamos "Search".

22. ¡Eureka! Tenemos el offset de la ram de nuestra variable




Preguntas Frecuentes​

P - ¿Porqué no usamos directamente el sistema de "Search for Cheats" de VBA ?

R - Porque si buscas, por ejemplo, 1, no te dejará hacerlo, ya que tendrá demasiadas coincidencias.

P - ¿Y si antes lo cambiamos a éste valor poco usado, 6, usando el script?

R - Puede funcionar (de hecho lo hará) pero aprender todo éste método te servirá más adelante para buscar cosas de mayor tamaño que dos bytes. También ten en cuenta que hay cosas que luego no puedes escribir mediante scripts para cambiar el valor y así encontrar el offset. (Por ejemplo el nickname de tu primer pokémon)

- Se añadirán más respecto la gente pregunte en éste mismo tema o se me vallan ocurriendo -


Espero que les sirva para algo, salu2!
 

Loz

_______
Respuesta: HEX | Buscar Offsets de Variables con VBA clásico y Cheat Engine

El tutorial es muy interesante, lo probare para buscar algunas cosas.

Viendo detenidamente el tutorial, puedo notar que funciona para buscar offsets en la memoria al momento de ejecutar el ROM, esta forma de búsqueda podría funcionar para encontrar offsets concretos en la ROM, por decir, el offset donde está ubicado este mapa de tiles:



O la forma de encontrar los offsets en la ROM es diferente.
 

Cheve

MoonLover~
Miembro de honor
Respuesta: HEX | Buscar Offsets de Variables con VBA clásico y Cheat Engine

El tutorial es muy interesante, lo probare para buscar algunas cosas.

Viendo detenidamente el tutorial, puedo notar que funciona para buscar offsets en la memoria al momento de ejecutar el ROM, esta forma de búsqueda podría funcionar para encontrar offsets concretos en la ROM, por decir, el offset donde está ubicado este mapa de tiles:



O la forma de encontrar los offsets en la ROM es diferente.
Si, puede servir para cualquier cosa que puedas cambiarle entre dos valores. Sólo es cuestión de imaginación.
No lo generalicé en el tutorial porque simplemente no tenía tiempo xD
 
  • Me gusta
Reacciones : Loz

Naren Jr.

Puto amo
Usuario de Platino
Respuesta: HEX | Buscar Offsets de Variables con VBA clásico y Cheat Engine

Esta genial el tutorial, siempre pensé que con Cheat Engine podía encontrar la posición de las variables en la RAM pero no sabía configurarle.

Muchas gracias por esto, me sirvió mucho para tener mi hack mas ordenado.

Saludos Cheve.

Ojala la gente le viera la importancia a saber donde están ubicadas las cosas en la rom.
 
Arriba