Mstar Firmware Unpacker & Repacker

Tengo una pregunta: si el firmware tiene una clave y solo encapsula system.img, ¿es necesario descifrarlo y firmarlo criptográficamente?
 
Las claves solo son para el MBOOT y te recomiendo que esa imagen no la modifiques ni la incluyas en un firmware reempacado, a menos de que sepas lo que estás haciendo.
 
Hola, mi firmware no se actualizó después de desempaquetarlo y reembalarlo. Mi firmware es muy especial. ¿Aún tienes mi firmware?
 
Última edición:
Eche un vistazo al archivo de encabezado de mi firmware (header~)
De nada me serviría, quien está realizando el proceso eres tú y solo tú sabes lo que estás haciendo.
Tampoco sabemos qué procedimiento usas para modificar la imagen.
Lo que puedes hacer es mirar el log de instalación por RS-232 para saber qué problema se está presentando.
Si solo estás empacando una imagen, tal vez el problema lo tengas con las variables de entorno, que seguramente no estás editando.
 
No, es diferente de otros archivos de encabezado. La ubicación inicial puede ser: #auto-update.txt. Lo entenderás claramente comparándolo con otros archivos de encabezado.
 
Eso no tiene nada que ver.
Todas las partes que empiezan con # son comentarios que omite el bootloader en la instalación.
Los primeros 16 bytes también los encontrarás al final del firmware compilado.
 
Avances de la versión v1.6

.- Deja de ser beta, pues se añadió comprobación ante varios posibles errores y los reportes se han corregido.
.- Se agrega una nueva pestaña de Utilidades, dentro de esta añadiré cuatro o tal vez más.
Por ahora se añadió extraer secciones de cualquier archivo, principalmente pensado para extraer imágenes de Firmware Mstar.
Esto es con el motivo de extraer secciones sin generar archivos de proyecto ni pasar por verificaciones de firmware.
.- Se añadió un extractor de archivos MBOOT
Útil para tener un respaldo de los archivos del bootloader y regrabarlos con Mstar ISP Utility.



Snap1.jpg
Snap2.jpg

Espero terminarlo y publicarlo en estos próximos días, antes del 2024
 
Actualización v1.6.0

Aparte de lo mencionado anteriormente, también se añadió la posibilidad de extraer el título de cabecera del firmware.
Lo limité a 50 bytes, ya que el encabezado más común suele ser: "-------------USB Upgrade Bin Info----------------"
Este es el encabezado principal, y sus primeros 16 bytes son los importantes, pues estos se usan para complementar la compilación del firmware.
Siempre se usarán los primeros 16 bytes del script o lo que se haya definido aquí:
HeaderTitle.jpg
Así qué, esta cabecera inicial puede contener hasta 50 caracteres, pero únicamente se usarán 16.
Ante este aspecto, comento lo siguiente que será de suma importancia, aunque no afecta en nada la ejecución final del firmware:
El título de cabecera será precedido por el símbolo #, esto hace referencia a un comentario, y todo aquello que siga después de esto, no cuenta para el bootloader como un comando.
Cuando se compile el firmware, solo serán tomados 14 bytes en lo que se defina como "Header Title"
¿Por qué?
Porque solo se necesitan los primeros 16 bytes del script para completar un requerimiento final como parte del footer (Partes finales del firmware), pero esos 14 bytes tendrán como precedentes el prefijo # más un espacio de separación, que en total sumarán 16 bytes.
Por lo tanto, cuando la opción GetScriptHeader.jpgesté validada, obtendremos los primeros 50 bytes del script.
Como estos 50 bytes pueden contener un título inválido, se recomienda editarlo para solo obtener lo necesario.
Sin embargo, recuerdo qué; esto es meramente con fines estéticos que no implican ni afectan la compilación final del firmware.
Estos 50 bytes sí serán incluídos en la cabecera del firmware, pero solo sus 16 primeros bytes erán usados.
El compilador del firmware final de Mstar Unpacking Tool tiene la inteligencia necesaria para definir qué hará con la cabecera principal.
Igualmente lo hará con el tipo de CRC establecido que ya se ha comentado en posts anteriores.

Por ahora no tengo tiempo para hacer un Change Log, pero sé que verán los cambios. ;)

Cabe remencionar que esta aplicación está protegida de varias formas contra ataques, ante lo cual usa técnicas antipiratería que suelen ser detectadas por antivirus de mala calidad, pero esto no representa ningún problema, ya que esta aplicación está excenta de virus.

Prometí terminar esta versión antes del 2024 y he aquí la actualización.

¡Feliz año 2024!
 

Adjuntos

  • MSUT_v160.rar
    1.3 MB · Visitas: 92
Hola, este es un firmware que le pedí a alguien que me hiciera. Después de contar hasta 100 destellos, el logo se quedó atascado. Lo he ensamblado yo mismo innumerables veces y siempre se apaga después de contar hasta 2. Es lo mismo cuando uso tus herramientas o scripts. ¿me puedes ayudar?
 
Hola, este es un firmware que le pedí a alguien que me hiciera. Después de contar hasta 100 destellos, el logo se quedó atascado. Lo he ensamblado yo mismo innumerables veces y siempre se apaga después de contar hasta 2. Es lo mismo cuando uso tus herramientas o scripts. ¿me puedes ayudar?
No sin tener el firmware original y sin saber qué se debe modificar.
Las herramientas no son el problema, el problema debe estar en el script.

Edit:
Analicé el firmware y efectivamente el script está mal realizado.
Ante esto, actualicé la aplicación para detectar este tipo de inconvenientes que no suelen darse en los firmware originales.
Script Error.jpg
El problema radica en lo siguiente:
Cuando se trata de una partición dividida, el comando "mmc erase.p" siempre va antes del comando "filepartload"
Por ejemplo:
Código:
# File Partition: system
mmc erase.p system
filepartload 0x20200000 $(UpgradeImage) 0x22a3000 0x4ac36bd
mmc unlzo 0x20200000 0x4AC36BD system 1
filepartload 0x20200000 $(UpgradeImage) 0x6d67000 0x686f03c
mmc unlzo.cont 0x20200000 0x686F03C system 1
Pero tu firmware no está cumpliendo con esto:
Código:
# File Partition: system
filepartload 0x20200000 $(UpgradeImage) 0x4000 0x1408DC5
mmc erase.p system
mmc unlzo 0x20200000 0x1408DC5 system 1
filepartload 0x20200000 $(UpgradeImage) 0x140D000 0xF3FD32
mmc unlzo.cont 0x20200000 0xF3FD32 system 1
filepartload 0x20200000 $(UpgradeImage) 0x234D000 0x19917F6
mmc unlzo.cont 0x20200000 0x19917F6 system 1
Contiene el comando "mmc erase.p system" después del comando "filepartload 0x20200000 $(UpgradeImage) 0x4000 0x1408DC5"
Esto obviamente generará un error al tomar las direcciones de las partes.
Este es un firmware que le pedí a alguien que me hiciera.
Dile a esa persona que debe tener más cuidado con lo que hace, y que estudie más antes de editar un firmware.

Adjunto la actualización con la detección de este tipo de inconvenientes.
 

Adjuntos

  • MSUT_v161.rar
    1.3 MB · Visitas: 88
  • Mirar aquí.jpg
    Mirar aquí.jpg
    290.9 KB · Visitas: 113
¡OK gracias!
Contiene el comando "mmc erase.p system" después del comando "filepartload 0x20200000 $(UpgradeImage) 0x4000 0x1408DC5"
Esto obviamente generará un error al tomar las direcciones de las partes.
¿Cómo resolver este problema?
 
Atrás
Arriba