FelixTheCat
Profesional de WaH
Hola a todos, el día de hoy vengo a explicar la estructura de los parches Lunar IPS (LIPS). Tal vez sea simple entender su estructura, pero creo que nadie lo ha explicado antes y considero que, a los nuevos, y no tan nuevos, les puede llegar a servir.
Introducción
El tutorial se basa en hexadecimal, así que vas a tener que poseer conocimientos básicos sobre él. Lo que voy a explicar esencialmente va a ser la estructura del parche, cómo está hecho. Esto te va a permitir identificar que modificaciones hace el parche y donde las hace. Lo más útil que vas a poder hacer es modificar dónde se hacen esas modificaciones, ya que muchas veces los parches modifican datos o insertan nuevos en direcciones de la ROM en las cuales nosotros, en nuestro proyecto, teníamos almacenados otros datos: esto provoca que se sobrescriban y se produzca una marea de bugs difíciles de identificar y resolver. Sin más que decir, empecemos…
Su estructura principal
Para explicar la estructura del parche, me voy a ayudar de una imagen en la cual se puede apreciar los datos hexadecimales de un parche LIPS con unas modificaciones muy simples.
Rojo: El programa LIPS utiliza estos bytes para representar la palabra PATCH (en código ASCII). De esta forma se ubica mejor a la hora de trabajar con los archivos, no lo modifiques.
Naranja: Esta es la dirección en la que va a modificar el parche, la pueden modificar si es que quieren que cambie lo bytes de otro lugar de la ROM.
Violeta: Esto es lo que determina cuantos bytes se van a modificar a partir de la dirección (naranja).
Azul: Esto indica porque se va a modificar el byte (si escribes 03, se va a modificar por 03). Tenés que fijarte bien en que posición está, si es que en “violeta” pusiste más de 01, la posición importa a la hora de reemplazar bytes. Va en orden, 1, 2, 3, etc.
Verde: El programa LIPS utiliza estos bytes para representar las iniciales EOF, que significa End Of Text (en código ASCII). De esta forma se ubica mejor a la hora de trabajar con los archivos, no lo modifiques.
Su estructura secundaria
Cuando un parche quiere hacer modificaciones repetitivas en una misma dirección (naranja) su estructura cambia ligeramente.
Rojo: El programa LIPS utiliza estos bytes para representar la palabra PATCH (en código ASCII). De esta forma se ubica mejor a la hora de trabajar con los archivos, no lo modifiques.
Naranja: Esta es la dirección en la que va a modificar el parche, la pueden modificar si es que quieren que cambie lo bytes de otro lugar de la ROM.
Amarillo: Esto es lo que utiliza el programa LIPS para identificar si se va a insertar una cadena bytes o se va a insertar un mismo byte repetidas veces. Este último caso se da si los valores de esos bytes son iguales a 00 00.
Violeta: Esto es lo que determina cuantas veces se va a insertar el byte (azul) a partir de la dirección (naranja).
Azul: Este es el byte que se va a insertar repetidas veces.
Verde: El programa LIPS utiliza estos bytes para representar las iniciales EOF, que significa End Of Text (en código ASCII). De esta forma se ubica mejor a la hora de trabajar con los archivos, no lo modifiques.
Datos varios
- Da igual que ROM o archivo utilices, el programa LIPS siempre utiliza los bytes de "Rojo" y "Verde" para ubicarse.
- Si quieren hacer modificaciones en varias direcciones, solo tienen que copiar los datos de naranja, violeta y azul, después de el ultimo azul. Espero haberme explicado, pero por si las dudas les dejo una imagen para que sepan guiarse mejor:
Fin.
Muchísimas gracias @Fran Agustín y @Bugrhak por interesarse y aportar datos <3
Espero que les haya servido, creo que me explique bastante bien, igualmente pueden decirme sus dudas. Sin nada mas que decir...
Muchísimas gracias @Fran Agustín y @Bugrhak por interesarse y aportar datos <3
Espero que les haya servido, creo que me explique bastante bien, igualmente pueden decirme sus dudas. Sin nada mas que decir...
Arrivederci~
Última edición: