3 votos

¿Qué es la partición "logo" en el teléfono lenovo?

No eliminen esta pregunta por favor, ya fue eliminada anteriormente de un tablero de programación y no sé dónde más preguntar.

¿Qué es una partición con logotipo y cuál es su formato?

La cabecera de la partición de 8Mb:

00000000   88 16 88 58  C2 8A 0A 00  ...X....
00000008   4C 4F 47 4F  00 00 00 00  LOGO....

Supongo que es una imagen de pantalla de arranque, ¿verdad? ¿Cuál es el formato de esta imagen?

2voto

Scott Puntos 3238

1. ¿Qué es la partición "logo" en un teléfono lenovo?

La partición del logotipo (según mi experiencia con dispositivos Mediatek) contiene :

  • El primer logotipo de arranque (no la animación de arranque)
  • Secuencias de carga de la batería (muchas imágenes png).
  • Segundo logotipo de arranque (archivo boot_logo).
  • Dígitos de carga de la batería y signo de porcentaje (cada dígito o signo tiene su propia imagen).
  • (Para dispositivos compatibles con la carga rápida) Secuencias de carga rápida (muchas imágenes png)

2. Supongo que es una imagen de pantalla de arranque, ¿no?

No es sólo el logotipo de la bota, sino que contiene muchas imágenes.

3. ¿Cuál es el formato de esta imagen?

No es una sola imagen, todas son archivos PNG.

4. Detalles adicionales

88 16 88 58 es la partición offset .

C2 8A 0A 00 es la partición tamaño Esto es orden de bytes little endian .

4C 4F 47 4F es la partición nombre .

I can't confirm if this is Mediatek specific or not.

Editor de logotipos de Mediatek MT65xx/MT67xx

Si desea cambiar el primer logotipo de arranque (no la animación de arranque) de su dispositivo basado en las plataformas MT65xx/MT67xx. Intente LogoBuilder .

LogoBuilder puede desempaquetar y volver a empaquetar su archivo logo.bin que contiene :

  • Logotipo de la bota
  • Secuencias de carga de la batería.
  • Segundo logotipo de arranque (archivo boot_logo).

LogoBuilder es fácil de usar:

  • Descomprima su archivo logo.bin.
  • Edita lo que quieras.
  • Vuelve a empaquetarlo.

El LogoBuilder puede hacer un update.zip para flashear su nuevo archivo logo.bin con una recuperación personalizada.

Editar:

0 votos

Muy bien. ¿Hay alguna especificación o código fuente del tal "logobuilder"? ¿Dónde se encuentra la dirección del primer byte y los metadatos "png"? Porque no veo allí ninguna cabecera png reconocible dentro...

0 votos

No los ves porque el archivo está empaquetado/encriptado, cómo desempaquetarlo pregunta al desarrollador.

0 votos

Pero "preguntar al desarrollador" no responde a la pregunta de cuál es el formato de la partición :)

2voto

Karthik Puntos 101

Las imágenes de la partición del logotipo son datos de píxeles de 32 bits en bruto, posiblemente bgra o rgba, comprimidos con zlib pero con sin cabecera de compresión .

Sáltate la cabecera de 512 bytes, y esto es lo que ves (el tuyo será diferente, esto es de un teléfono BLU Dash X2).

00000200: 2700 0000 f929 1300 a400 0000 012e 0000  '....)..........
00000210: 3b36 0d00 05bb 0d00 4e07 0e00 4a09 0e00  ;6......N...J...
00000220: d709 0e00 b20b 0e00 060e 0e00 8f0f 0e00  ................
00000230: ac11 0e00 0814 0e00 3c15 0e00 d517 0e00  ........<.......
00000240: 451a 0e00 2b1d 0e00 d82b 0e00 763b 0e00  E...+....+..v;..
00000250: f84a 0e00 a959 0e00 4d67 0e00 3874 0e00  .J...Y..Mg..8t..
00000260: 1382 0e00 4f91 0e00 f6a0 0e00 6bb0 0e00  ....O.......k...
00000270: f90b 0f00 0068 0f00 bcc3 0f00 9b1c 1000  .....h..........
00000280: d573 1000 9cca 1000 6223 1100 647e 1100  .s......b#..d~..
00000290: c8da 1100 f536 1200 ae89 1200 658b 1200  .....6......e...
000002a0: 9cfc 1200 78da ecdd 3daf e458 42c7 e1fe  ....x...=..XB...

Los números son enteros de 32 bits, y el primero en el offset 0x200 es 0x27, o 39, imágenes en la partición del logo. 0x1329f9 es la longitud total de los datos; el resto de la partición probablemente se rellene con ceros. Los siguientes 39 enteros son los desplazamientos de cada imagen, por ejemplo la primera está en el desplazamiento 0xa4, más 0x200 para tener en cuenta la cabecera, y tienes 0x2a4. Así que puedes ver los primeros 12 bytes de datos en la salida xxd de arriba, 0x78 0xda 0xec 0xdd...

El tamaño de la imagen será el siguiente desplazamiento menos "este" desplazamiento: en este caso, 0x2d01 - 0xa4 = 0x2d5d, o 11613 decimal.

Así que ahora tienes lo que necesitas para extraer la primera imagen: dd if=/tmp/logo.bin of=/tmp/img1.z bs=1 skip=$((0x2a4)) count=11613

Para descomprimirlo, como no tiene cabecera, hay que añadir una: printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - /tmp/img1.z | gzip -dc >/tmp/img1.dat .

A continuación, puede mostrarlo utilizando ImageMagick: display -size 360x$(($(stat -c %s /tmp/img1.dat)/$((360*4)))) rgba:/tmp/img1.dat

La información procede de rigacci.org . Niccolo incluye un script en Python que extrae todas las imágenes por ti.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X