[Tutorial] Crear Parches VKP Básicos
Creación de Parches VKP Básicos
Cambios de rutas y valores numéricos
Por Shadow Player - TopSony - http://www.topsony.com/forum_es/imag...ost_thanks.gif
Programas a usar:
- Editor Hexadecimal (WinHex)
- Editor de Texto (Block de Notas)
- Extractor de data de MAIN (Main2Raw)
Introducción
En este tutorial se te enseñará a crear parches básicos para cambiar algunos aspectos de tu teléfono, simples pero útiles. Para comenzar este proceso, primero debemos entender cómo se estructura un parche VKP.
El Lenguaje Hexadecimal
Primero que todo tenemos que entender las bases del lenguaje hexadecimal.
El lenguaje hexadecimal lo desarrollo la IBM en los años 80’ como una herramienta para poder entender mejor el código de máquina y se basa en lo siguiente:
- Se asigna a cada 4 bits de datos un carácter de los siguientes:
0 1 2 3 4 5 6 7 8 9 A B C D E F
- Combinando dos de estos caracteres tienes 8 bits, o sea, un byte, la unidad básica de código. Por eso se le llama “código binario”.
- Ejemplos de bytes representados hexadecimalmente: 1A F3 D8
- Con cada combinación distinta se logra un byte distinto, abarcando todas las combinaciones posibles.
- Cada carácter de texto (El abecedario y todos los signos) pesan exactamente un byte, lo que quiere decir que cada byte se puede interpretar como una letra o un signo.
- Ejemplos de letras y signos representados hexadecimalmente:
A = 41
* = 2A
* = F0
O = 4F
% = 25
Ø = D8
El Parche VKP
El siguiente es un parche inventado para explicar cómo se estructura:
Código:
;K790 SW-R8BF003
;Example VKP Patch
;(c) Shadow Player
+44140000
F93195: 4F726967696E616C 43616D626961646F
Todas las líneas que comienzan en “;” son líneas de comentario donde se escribe la versión de firmware (K790 SW-R8BF003) para la que está hecho este parche, la función del parche y los créditos de creador, portador, etc.
- La primera línea “+44140000” es la base de la MAIN. Esta base existe porque la MAIN no está escrita al comienzo (En el primer byte) del chip donde se encuentra guardada, sino que se ubica a partir del byte número 1142161408, que hexadecimalmente representado es 0x44140000*, en adelante.
* “0x” indica que el numero esta en forma hexadecimal, no afecta al valor, 0x44140000 es la base para MAINs de DB2020, otras MAINs poseen otras bases.
- Ahora viene la data del parche:
Cita:
F93195: 4F726967696E616C 43616D626961646F
El primer valor [F93195] es el offset/dirección del cual se comenzara a cambiar valores. Esto quiere decir, la distancia del comienzo del MAIN de la cual comenzaremos a cambiar valores, como ven, está en forma hexadecimal.
El segundo valor [4F726967696E616C] son los bytes originales que se encuentran en el MAIN en el offset/dirección dado (F93195), son los valores que se van a reemplazar por otros.
El tercer valor [43616D626961646F] son los valores que se escribirán sobre los valores originales (4F726967696E616C) para cambiar una función de la MAIN.
En forma de texto, los valores en el parche del ejemplo serian los siguientes:
4F726967696E616C = “Original”
43616D626961646F = “Cambiado”
Ahora: ¿Que pasaría en el MAIN si cambiáramos el texto “ifs/settings/acoustic” por “card/other/acoustic”?
Exactamente eso es lo que aprenderemos a hacer…
Encontrar offsets de valores en el MAIN
El MAIN de nuestros teléfonos tiene un encabezado (header) BABE, un tipo de encabezado flasheable personalizado por Sony Ericsson que es leído por los programas de flasheo para escribir los flashblocks (bloques de datos de la firmware) al teléfono. Con un programa como Main2Raw podemos extraer estos datos sin el encabezado, dejando el archivo tal como se escribirá en el flashchip del teléfono (Formato RAW)
Para crear parches necesitamos encontrar las direcciones de algunos bytes en el flashchip, por lo tanto, tendremos que abrir nuestra firmware en formato RAW con el WinHex.
Si es la primera vez que usas un editor hexadecimal, no te asustes por su apariencia, seguramente pensaras que no entiendes nada de nada. La gracia de este tutorial es que no tienes que entender nada y lo esencial te lo explico.
El WinHex posee dos buscadores: Uno de texto y uno de Bytes:
http://img527.imageshack.us/img527/1412/seekersws1.jpg
El binocular normal es el buscador de texto, el binocular con el texto “Hex” debajo, es el buscador de bytes en forma hexadecimal.
Usaremos el buscador de texto del WinHex de la siguiente manera:
http://img212.imageshack.us/img212/2...tsearchlq0.jpg
-En el texto pondremos la ruta o cualquier string (cadena de texto) que queramos cambiar.
-La codificación será Unicode.
-Apreta OK para buscar.
En mi caso (K790 – R8BF003) encontró una vez el texto “ifs/settings/acoustic” en el offset 185D59A:
http://img247.imageshack.us/img247/6...xtfoundbs6.jpg
Info adicional:
Los valores hexadecimales se suelen escribir anteponiendo “0x” o el signo $ para indicar su representación en hex. (Ejemplos: 0x185D59A, $185D59A)
Una vez encontrado el primer offset:
-Lo anotas en un archivo de texto con el block de notas.
-Vas a WinHex y haces la selección del texto completo “/ifs/settings/acoustic” y aprietas .
-En el archivo de texto haz una línea nueva debajo del offset y apreta se pegarán los valores en hex.
http://img255.imageshack.us/img255/5715/notepad1yd9.jpg
Ahora viene la hora de reemplazar el texto:
-En Winhex, edita la ruta en el panel de texto (Derecha) y escribe la nueva ruta que quieres, acuérdate de hacerlo saltándote un espacio de letra en letra porque en Unicode, las letras se intercalan con un byte 00 (Fíjate en WinHex).
-La ruta nueva tiene que ser igual o más corta que la ruta original.
-Cuando te sobren caracteres (letras) de la ruta original (Al ser la tuya más corta), sobre escribe estos con bytes 00.
http://img209.imageshack.us/img209/1...edtext2gf4.jpg
Me sobran los caracteres “i” y “c”, los reemplazo por bytes 00:
http://img397.imageshack.us/img397/3...tedtextzh6.jpg
Como ven, yo quiero mis acústicos en la memory stick (/card), en la carpeta “otros”, en otra carpeta llamada “acoustic” (/other/acoustic).
Ahora:
-Vuelve a seleccionar toda la ruta (incluyendo los ceros del final) y aprieta .
-Anda de nuevo al block de notas y pega lo copiado en una nueva línea:
http://img401.imageshack.us/img401/2850/notepad2xj8.jpg
Ahora, que tenemos?
Tenemos el offset en el que queremos reemplazar valores, tenemos los valores originales y los valores nuevos a escribir. Estamos listos para ordenar el parche para poder subirlo a tu teléfono. Para hacer esto:
-En la primera línea agrega la base de tu firmware, si no sabes la base de tu firmware, pide la información. Para DB2020 la base es 0x44140000, por lo tanto, escribe “+44140000”.
-Después del offset (185D59A) agrega el signo “:” (dos puntos).
-Divide las líneas de valores hexadecimales en líneas de 32 letras (16 bytes en hex) cada una.
http://img176.imageshack.us/img176/7163/notepad3du2.png
Ahora, ordena las líneas de datos de la siguiente manera:
http://img508.imageshack.us/img508/3805/notepad4sq8.jpg
Que cambiamos?
-Los dos offsets nuevos que aparecen (185D5AA y 185D5BA) se obtienen de la original (185D59A) sumándole 16 que es la cantidad de bytes que avanzamos por línea. 16 en forma hexadecimal es 10, con la calculadora de Windows pueden calcular la suma: 185D59A + 10 en modo hexadecimal y dará:
http://img72.imageshack.us/img72/48/calcsp6.jpg
Volvemos a sumar 16 (10 en hex) y obtendremos el offset siguiente y así hasta llegar a la última línea.
Ahora solo faltan los detalles, como por ejemplo:
-Puede ocurrir que en alguna firmware que la ruta salga 2 veces (como en K790 – R8BF003) entonces, buscamos la segunda ocurrencia y hacemos el mismo procedimiento.
-Se agrega antes de la base las líneas de comentarios donde se indica la firmware para la que fue creado el patch, la función del patch, su creador, portador, etc…
http://img169.imageshack.us/img169/641/notepad5ew0.jpg
Espero que te haya gustado mi tutorial y hayas aprendido bien las bases de la creación de parches VKP.
Un saludo
Abro el tema para que voten en la encuesta y posteen opiniones de como mejorar el tutorial, acepto criticas. No se permitira hacer preguntas sobre como esto, como lo otro, solo preguntas bien fundamentadas y con un punto claro.
Cualquier post que se considere como SPAM, ofensa o pregunta fuera de lugar sera borrado!
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
solo una pregunta como puedo saber que significa cadasimbolo dentro del main por que tiene muchos y quiero saber que son o que significan????
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
Hola!
En Winhex tienes dos ventanas: a la izquierda los simbolos hexadecimales y a la derecha el panel de caracteres (letras, numeros y simbolos). Gran parte de estos simbolos no hacen sentido legible porque son instrucciones de assembler, solo se interpretan usando un disassembler.
Saludos!
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
exelente tutorial, pero no hay algun tema donde uno salga de dudas?
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
Hola!
No hay tema aun porque la verdad no creo que hallan tantas personas interesadas, si consideras que si lo hay y que vale la pena abrirlo, avisame y lo creo. Dame fundamentos.. dime de 10 usuarios que quieran que se abra este tema y lo hago ;)
Saludos!
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
Porque algunos parches no tienen en la primera linea la "base del MAIN"?
Que deferencia hay entre escribir asi:
Cita:
;W200 SW-R4HA014
;Password on menu
;© ZEN
44FD2FF8: 252BFD44 E1A55045
4550A5E0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00B508488047054FB847FFB404210222
4550A5F0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 034B014FB847FFBD19D307459DD31145
4550A600: FFFFFFFFFFFFFFFF 5B150000252BFD44
y asi (con la base del MAIN):
Cita:
;W200 SW-R4HA014
;Password on menu
;© ZEN
+44140000
44FD2FF8: 252BFD44 E1A55045
4550A5E0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00B508488047054FB847FFB404210222
4550A5F0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 034B014FB847FFBD19D307459DD31145
4550A600: FFFFFFFFFFFFFFFF 5B150000252BFD44
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
Yo estoy interesado en aprender a hacer parches por lo menos los basicos para mover rutas
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
Amigo conmigo somos 3 compañeros que deseamos aprender aunque sea basicos, con el tiempo aprenderemos esperamos que nos puedas ayudar K790PLAYER claro si es que tienes el tiempo y desde luego si quisieras,
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
bueno amigos a mi me dijeron que con 10 usuarios se abriria un tema oficial, asi que ayudenme si queremos aprender mas de esto, los invito a todos aquellos que como yo queremos aprender asi sean basicos, lo de los parches VKP. queda ya de ustedes y demas usuarios esta peticion. ;)
Re: [Tutorial] Crear Parches VKP Básicos - Shadow Player
Yo me apunto para los de los parches, tengo interes en como saber hacer y tambien pedir un totorial mas explicito y mas completo para portar parches
saludos