PDA

Ver la versión completa : [Tutorial] Crear Parches VKP Básicos



MaxDamage
12/03/2008, 03:10:40
Creación de Parches VKP Básicos



Cambios de rutas y valores numéricos



Por Shadow Player - TopSony - [/URL][URL="http://www.topsony.com/forum_es/images/bluesaint/buttons/post_thanks.gif"]http://www.topsony.com/forum_es/images/bluesaint/buttons/post_thanks.gif (http://www.topsony.com/forum_es/post_thanks.php?do=post_thanks_add&p=317840)


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:


;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:


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 (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/2681/textsearchlq0.jpg (http://img212.imageshack.us/img212/2681/textsearchlq0.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/6299/textfoundbs6.jpg (http://img247.imageshack.us/img247/6299/textfoundbs6.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 <Ctrl. + Shift + C>.
-En el archivo de texto haz una línea nueva debajo del offset y apreta <Ctrl. + V> se pegarán los valores en hex.

http://img255.imageshack.us/img255/5715/notepad1yd9.jpg (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/193/editedtext2gf4.jpg (http://img209.imageshack.us/img209/193/editedtext2gf4.jpg)


Me sobran los caracteres “i” y “c”, los reemplazo por bytes 00:

http://img397.imageshack.us/img397/3386/editedtextzh6.jpg (http://img397.imageshack.us/img397/3386/editedtextzh6.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 <Ctrl. + Shift + C>.
-Anda de nuevo al block de notas y pega lo copiado en una nueva línea:

http://img401.imageshack.us/img401/2850/notepad2xj8.jpg (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 (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 (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 (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 (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!

hughlaurie
25/03/2008, 20:43:19
solo una pregunta como puedo saber que significa cadasimbolo dentro del main por que tiene muchos y quiero saber que son o que significan????

MaxDamage
26/03/2008, 00:16:20
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!

israfe
26/03/2008, 00:28:32
exelente tutorial, pero no hay algun tema donde uno salga de dudas?

MaxDamage
26/03/2008, 00:47:32
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!

Mike006
26/03/2008, 02:19:14
Porque algunos parches no tienen en la primera linea la "base del MAIN"?
Que deferencia hay entre escribir asi:

;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):

;W200 SW-R4HA014
;Password on menu
;© ZEN
+44140000
44FD2FF8: 252BFD44 E1A55045
4550A5E0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00B508488047054FB847FFB404210222
4550A5F0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 034B014FB847FFBD19D307459DD31145
4550A600: FFFFFFFFFFFFFFFF 5B150000252BFD44

ShArInGaN-666
26/03/2008, 02:19:53
Yo estoy interesado en aprender a hacer parches por lo menos los basicos para mover rutas

revekillo
26/03/2008, 02:21:34
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,

israfe
26/03/2008, 02:29:28
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. ;)

ts005
26/03/2008, 02:32:50
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

miguel8e
26/03/2008, 03:01:41
Hola, pues veras que algunos parches tienen base del Main y otros no por lo siguiente:

Cuando tienen base, el parche dice, que se le debe sumar esa base al Offset, para que llegue al lugar donde se encuentran los datos que quieres cambiar.

Asi deberia quedar, usando el parche que pusiste:


+44140000

E92FF8: 252BFD44 E1A55045

Ahora, cuando no tienen la base, es porque ya esta sumada al offset, que es el caso de este parche:


44FD2FF8: 252BFD44 E1A55045

Si usas la calculadora en modo hexadecimal, colocas

44FD2FF8 -(4) 44140000, y obtienes E92FF8, siendo este el offset que encuentras en el Main.

Saludos

ShArInGaN-666
26/03/2008, 04:12:38
Alguno de ustedes en especial miguel8e me podria decir si mi primer parche esta bien echo

;W880-R6BC002
;IFS/SETTINGS/ACOUSTIC TO CARD/OTHER/ACOUSTIC
;(c) L.E-DX

+44140000

01A28FC6:2F006900660073002F00730065007400
01A28FD6:740069006E00670073002F0061006300
01A28FE6:6F00750073007400690063000000

01A28FF6:2F0063006100720064002F0073006500
01A29006:7400740069006E00670073002F006100
01A29016:63006F0075007300740069000000

EDITO: Me podrian explicar para que sirve este parche y de una vez portarlo para R6BC002 seria el mismo metodo???

;W880 R8BA024
;Кнопка Play/Pause на коротком нажатии кнопки оператора
;(c) IronMaster
;(p) Sic
+44140000
12865AA: 3D 42

UmbreLla7
26/03/2008, 04:48:24
Yo me sumo a esos 10 que necesitas para abrir el tema de preguntas, pues la verdad tantos numeritos no me cuadran bien.

Entendi una parte pero me quedan muchois vacios que quisiera solucionar, si en tus manos esta dicho tema hazlo para salir de dudas.

Saludos,
UmbreLla7 - TopsoNy.com

miguel8e
26/03/2008, 20:17:18
Hola a todos.

Bueno, verifique con el Main y si esta bien la primera parte de tu parche.

pero por lo que veo, no colocaste los demas offsets. solo colocaste el 01A28FC6 y le fuiste sumando 10. Te faltan los otros 2 offsets en donde aparece la ruta, el 01A28FF4 y 01AA08B4. Y tienes que dejar un espacio entre los : y la ruta. Mas o menos asi quedaria



01A28FC6: 2F006900660073002F00730065007400
01A28FD6: 740069006E00670073002F0061006300
01A28FE6: 6F00750073007400690063000000

01A28FF4: 2F0063006100720064002F0073006500
01A29004: 7400740069006E00670073002F006100
01A29014: 63006F0075007300740069000000

01AA08B4: 2F0063006100720064002F0073006500
01AA08C4: 7400740069006E00670073002F006100
01AA08D4: 63006F0075007300740069000000


Ahora coloca la ruta nueva junto a la original y terminas el parche.

Saludos

PD: el otro parche segun Google significa Botón de reproducción / pausa se pulsa el botón durante un breve operador.

derek_ahx2
26/03/2008, 20:19:56
Yo tambien me uno para crear un tema con preguntas.

Pues hay muchas cosas que quiero hacerle al cel.

hughlaurie
26/03/2008, 20:40:30
mmm tambien me uno por que pues tengo un chin de dudas y pos quiero que me las saquen

Raul
26/03/2008, 21:27:38
yo tambien me uno ya que quiero aprender mas de como hacewr parches

ShArInGaN-666
26/03/2008, 22:15:59
Hola a todos.

Bueno, verifique con el Main y si esta bien la primera parte de tu parche.

pero por lo que veo, no colocaste los demas offsets. solo colocaste el 01A28FC6 y le fuiste sumando 10. Te faltan los otros 2 offsets en donde aparece la ruta, el 01A28FF4 y 01AA08B4. Y tienes que dejar un espacio entre los : y la ruta. Mas o menos asi quedaria



Ahora coloca la ruta nueva junto a la original y terminas el parche.

Saludos

PD: el otro parche segun Google significa Botón de reproducción / pausa se pulsa el botón durante un breve operador.

No entiendo muy bien esa parte me la podrias explicar mejor tendria que quedar asi ???

miguel8e
26/03/2008, 23:35:22
Exacto, haz asi con los demas, pero te falto una letra en la ruta, colocaste acousti. Te lo subo terminado. Saludos

pela_pmcba
26/03/2008, 23:36:55
tengo un pequeño problema, estoy trando de adaptar el parche para cambiar el color de la fuente para un k790 R6BC002 desde el parche para la version R8BF003 y el parche que encontre tiene el titulo de "Change font color in PLAYER's menu" pero por mas que lo pongo en el winhex no me ncuentra nada, tambien probe con "change font" solo y tampoco...como puedo hacer para adaptalo?? o este tipo de parches no entra en lo que se considera basico???

PD: por sierto...exelente tuto PLAYERK790...muy bien explicado...

zerhon
27/03/2008, 01:19:33
Que tal a todos yo tambien me uno para aprender a realizar parches basicos aun me quedaron varias duas del primer post y me gustaria saber si K790player ya conto cuantos vamos creo que somos mas de diez ojla lo tomne en cuenta.......

Saludos¡¡¡¡¡¡¡¡¡¡

fabi_calle
27/03/2008, 12:42:44
tengo un pequeño problema, estoy trando de adaptar el parche para cambiar el color de la fuente para un k790 R6BC002 desde el parche para la version R8BF003 y el parche que encontre tiene el titulo de "Change font color in PLAYER's menu" pero por mas que lo pongo en el winhex no me ncuentra nada, tambien probe con "change font" solo y tampoco...como puedo hacer para adaptalo?? o este tipo de parches no entra en lo que se considera basico???

PD: por sierto...exelente tuto PLAYERK790...muy bien explicado...

A mi me paso tambien, creo que no esta resultando util el winhex.. Esta dando bastantes fallas. y lo digo porque despues use el notepad++ coin su plugin de editor hexadecimal y encontre esos offset..

stuCk
27/03/2008, 13:15:13
y el parche que encontre tiene el titulo de "Change font color in PLAYER's menu" pero por mas que lo pongo en el winhex no me ncuentra nada, tambien probe con "change font" solo y tampoco...como puedo hacer para adaptalo?? o este tipo de parches no entra en lo que se considera basico???

Ese es un comentario, no es NADA que buscar. y btw, ese parche no se porta asi =)

MaxDamage
27/03/2008, 23:27:40
Hola amigos!

OK Abrire el tema de dudas y discusion en este momento, este tema lo cierro y todo lo que tenga que ver con portar parches se discutira en el otro vale?

Saludos!

[Discusion] Crear Parches VKP Básicos - Shadow Player - Top Sony (http://www.topsony.com/forum_es/showthread.php?p=333659#post333659)