Hola a todos.
Antes que nada, quiero dar las gracias a todos los 'cocos' que se mueven por XDA. Sin ellos, esto no sería posible. Va por ellos ...


Este post más que para enseñar es para recopilar información
MUY ESPECÍFICA para el manejo de algunos de los elementos que forman una ROM. Cómo modificarlos y adaptarlos a nuestras necesidades. Algunos puntos quizás, NO aporten información útil, ni manipulable, pero si dan una idea de para que sirven. Todo este trabajo está basado en mis propias inquietudes en este mundo de la cocina. Que como vereis NO sólo consiste en meter/sacar paquetes a una ROM.
Por ahora nuestra única herramienta, un editor hexadecimal:
H x D (descargar de Archivos Adjuntos)
1. Cambiar nombre y fecha a la ROM en pantalla inicial (letras y números en rojo)
Esta información está guardada en el XIP, exactamente en el archivo S000 del módulo nk.exe, localizado en ROM\XIP.
Sí nuestra carpeta ROM sólo contiene un archivo (OS.NB u OS,NB.payload), mirar AQUí -> http://www.htcmania.com/showthread.php?t=39103
He incluido un apartado en dicho hilo, explicando los pasos.
Importante: Tomamos como referencia para la búsqueda el nombre actual que pone en ROM cuando arranca.
Lanzamos H x D y abrimos el archivo S000. En este caso he abierto el S000 de la NiAx Trinity 6.1.90. Como referencia de búsqueda he usado el 90 y he marcado la casilla Cadena Unicode.
La dirección offset varia en las distintas ROMs (dispositivos). No baseis la búsqueda en esa posición en concreto (2444).
Ahora basta como sobreescribir carácter a carácter, en la ventana de la derecha, el contentido 6.1.90 por el que deseemos. Tomar nota que entre carácter y carácter debe escribirse un . = 00 (carácter vacío), que no es lo mismo que . = 2E, este último si es el punto de nuestro alfabeto.
Por el mismo método y en el mismo archivo, podemos cambiar la
fecha de la ROM, sólo que para la búsqueda NO marcamos la casilla Cadena Unicode.
Resultado de la búsqueda:
Feb 01 2009 = 46 65 62 20 30 31 20 32 30 30 39
Una vez cambiado el nombre y fecha, guardamos el archivo y ya podemos cocinar nuestra ROM con el nombre cambiado.
2. Direcciones offset. MBR (Master Boot Record) de OS.nb.payload.
Vamos a ver que es cada cosa. Lo primero es lanzar H x D y abrir OS.nb.payload
Lo primero saber que el MBR se encuentra siempre, entre las posciones 0x0000 y 0x01FF.
Otro dato importante que se ve en la imagen es que MSFLASH50 en este caso (para Trinity) empieza en la dirección
0x0200 mientras que en las nuevas ROM empieza en
0x0800. Este dato es muy importante para luego calcular donde está cada una de las partes que forman la ROM y define el tamaño de cada sector. Aquí podeis ver algo más de información:
http://www.htcmania.com/showthread.php?t=26034
En las siguientes posiciones tenemos definidos:
0x01C0 = Boot
0x01D0 = XIP
0x01E0 = IMGFS
0x01FS = FATFS
Para explicar que es cada cosa, veremos un ejemplo:
Queremos insertar un XIP a esta ROM. Para ello disponemos de XIP (out.bin) y del ejecutable insert.exe (incluido en \TOOLS de vuestra cocina).
La orden de ejecución es:
insert.exe -i out.bin -o OS.nb.payload -d 0x00XXXXXX -s 0x00XXXXXX
-d = dirección donde empieza el XIP
-s = logitud total del XIP
la fórmula es
(-s) = IMGFS_Start - XIP_start
Vamos primero a calcular -d (XIP_start). En la imagen esta definida en la posición 0x01D6=00 y 0x01D7=19 en hexadecimal ( 0 1 2 3 4 5 6 7 8 9 A B C D E F ) y
al revés.
Abrimos la calculador del Windows, en modo Científico y hexadecimal. Multiplicamos 1900 x 200 (tamaño del sector) =
320000
Ya tenemos la dirección de inicio del XIP, ahora vamos a calcular la longitud (-s), aplicando la fórmula, lo primero calcular la dirección de IMGFS_start por el mismo método. 0x01E6=00 y 0x01E7=31, recordar que las posiciones estan al revés.
Calculamos en hexadecimal: 3100 x 200 (tamaño del sector) = 620000
Aplicamos la fórmula (en hexadecimal, no me cansaré de repetirlo):
(-s) = 620000 - 320000 =
300000
Ya tenemos los dos valores que buscabamos. El comando a ejecutar para incluir el XIP en esta ROM queda así:
insert.exe -i out.bin -o OS.nb.payload -d 0x00320000 -s 0x00300000
3. \ROM\OS.nb o \ROM\OS.nb.payload ¿qué son? ¿para qué sirven?
Realmente son templates (plantillas). Esta plantilla contiene el XIP e IMGFS (Image File System = Imagen del archivo del sistema). Posteriormente se crea un nuevo payload (OS-new.nb.payload) con el nuevo IMGFS, obtenido de la carpeta /dump y mismo XIP que en payload original (OS.nb.payload).
Lo mismo sucede con OS.nb, pero antes la propia cocina se ocupa de pasarlo a OS.nb.payload con el comando
NBSplit.exe
Adelantando acontecimientos, queda patente, que para cambiar de XIP, uno de los métodos es insertarlo (insert.exe) en la plantilla OS.nb.payload ( o OS.nb)
-----
Cualquier aportación será incluida aquí muy gustosamente.
Salu2
