Mstar Firmware Unpacker & Repacker

Si modificas o eliminas las aplicaciones del sistema lo puedes dejar inoperante.
Lo que sí puedes hacer es reemplazar las aplicaciones de usuario por otras.
Para eso debes usar el procedimiento mostrado aquí.
 
Avances de la versión 1.5.0
1.-
La aplicación ha sido migrada a C# (C Sharp) .Net 4.8 para compatibilidad con sistemas inferiores a Windows 11
Si bien esta aplicación podrá funcionar con sistemas x86 en cualquier Windows, el desempacado de particiones Sparse no será soportado.
¿Por qué? Porque los sistemas x86 solamente permiten un tamaño máximo de archivos de 4 GB, y las particiones Sparse al ser descomprimidas pueden llegar a tener un tamaño superior a los 7 GB, y esto no es soportado en x86.
Ante esto quiero mencionar algo que pasó recientemente con una persona que alegaba que mi aplicación no desempacaba todas las particiones.
El problema era su sistema, no la aplicación, pero él ante su desconocimiento, continuó alegando que tenía una aplicación que sí desempacaba las particiones Sparse en su sistema Windows 7 x86, y es un hecho que si él usaba la aplicación MstarBinTool-GUI, sí las desempacaría, ya que la única partición Sparse del firmware que él mostró solo contenía una partición Sparse, que descomprimida tendría un peso de 1.41 GB.
O sea, algo apto y válido para su sistema x86.
Como esta persona continuó sin entender, y ofendiendo aquí y hasta por correo, se tuvo que realizar una limpieza.
2.- La corrección de particiones inválidas fue corregida en la versión 1.4.46, pero esa versión es VB6.
Ahora esta nueva versión 1.5.0 también cuenta con esa corrección.

3.- Se añade la posibilidad de seleccionar qué particiones de la imagen se quieren extraer.

MSFUR_Partitions_List.jpg

4.- Obtención de RAM Offset, Internal Name y si se usa el prefijo Hex o no en el script (0x...).
5.- Visualización del Script para ser analizado.

MSFUR_Script.jpg

Por ahora este es el progreso que básicamente se realizó desde cero.
Aunque ya tenía noción sobre cómo hacerlo, no ha sido una tarea fácil, aunque tampoco complicada.
Pido un poco de paciencia, pues no es el único programa sobre el cual trabajo y solo me dedico a la programación en mi tiempo libre.
 
Sigo puliendo más la nueva versión.

Tras comparar resultados con MStarBinTool-GUI x64, me dí cuenta que aunque este ofrece soporte para imágenes Sparse, no las descomprime correctamente.
Las procesa pero el resultado es una imagen con datos corruptos.
Una partición descomprimida del Tipo Sparse se logra abrir con 7-Zip, cosa que no sucede usando MStarBinTool-GUI x64.
Ante esto, el reempacado dará por resultado un firmware corrupto.
Esto no sucede con mi aplicación, esta sí descomprime las imágenes Sparse de forma correcta.
Y como mencioné anteriormente, el soporte para descomprimir imágenes Sparse solo será válido en sistemas x64, ya que descomprimidas suelen superar los máximos 4GB permitidos por sistemas x86.
Y otro detalle con MStarBinTool-GUI x64 que es más preocupante, es que esta aplicación puede llegar a crear imágenes inválidas en los firmware que contengan sectores multi imagen del tipo Sparse, creando imágenes con el offset repetido.
Ante esto, cabe mencionar que, cada imagen debe tener un offset único.
Tras el análisis del script no se debe obtener una imagen que contenga el mismo offset aunque su tamaño y características sean diferentes.
El desempacado de una imagen con offset repetido dará como resultado una imagen inválida.
O sea, se estará desempacando y procesando una imagen que no cumple con el estándar, y esto hasta podría causar errores en su proceso.
¿Por qué? Porque se estará procesando una imagen con el mismo offset pero con un tamaño diferente.
Este error en el script, provocará que durante la extracción se obtenga una imagen fuera del rango comprendido para el tamaño de imagen real.
En pocas palabras; se obtendrá una imagen fuera del rango comprendido dentro del archivo del firmware.
Esto está basado en su dirección (Offset) y su tamaño (Size). Si este rango no se cumple, el resultado será una imagen inválida.

Ejemplo de cómo va quedando el programa:
Snap1.jpg
Aquí se puede apreciar que le he agregado colores a los items para su identificación e información.
Muestro lo citado anteriormente con respecto al error de MStarBinTool-GUI x64, repitiendo offsets en ciertas imágenes.
Miren la sección "Chunks" en color rojo y notarán que a partir de la imagen "userdata" hasta la imagen "armfw" los offsets son iguales.
Esto es un grave error producido durante la generación del script para el reempacado del firmware usando MStarBinTool-GUI x64.
En mi aplicación esto no sucede, ya que he estado añadiendo muchas medidas precautorias y de validación, pero esto no es nuevo para mí, ya que desde versiones anteriores, siempre he tenido el debido cuidado al generar el script.

Por ahora les puedo comentar que mi nueva versión de Mstar Unpacking Tool, verifica si el sistema es x64 y no permitirá la selección de imágenes del tipo Sparse en sistemas x86, al igual que las inválidas o inexistentes, esto último solo durante el proceso de reempacado.

También estoy escribiendo librerías personalizadas para la descompresión Sparse y LZO, para de esta forma mantener un programa libre de aplicaciones extra.
Esto dará por resultado un programa más rápido y funcional, que de hecho, ya lo es.

Mientras tanto, seguiré informado los avances.
Solo pido paciencia, porque este tipo de aplicaciones requieren de mucho conocimiento en la estructura del firmware Mstar, así como también de mucho pero mucho código.
El taller y otras aplicaciones me quitan tiempo y trato de dedicarle a cada cosa un tiempo, que luego no tengo.
Pero, ahí vamos, poquito a poquito y tratando de avanzar lo más que se pueda.
 
1.JPG2.JPG
Hola, ¿cómo escribir el archivo de configuración .ini? ¿Es lo mismo que el archivo de configuración (mstar bin tool-mstar)?
Tengo un firmware que no se puede descomprimir con MstarbintoolGui. Lo desempaqué exitosamente usando Mstar Firmware Unpacker.3.JPG
 
Última edición:
Ya mencioné que ese archivo no se debe editar, no es un script como en el caso de MstarBinTool.

Si quieres obtener y empacar solo algunas particiones, debes esperar a que esté lista la versión 1.5, ya casi la termino.
MSUTV15.jpg
 
Actualización v1.5.0 (Beta) como regalo de Navidad 2023

Por fin quedó lista esta nueva actualización que, dista mucho en parecido a las anteriores.
Se agregaron bastantes cosas, al igual que varias comprobaciones en el firmware a desempacar.
Lanzo esta versión beta como preliminar (bajo prueba), ya que los bugs son muy astutos y suelen colarse sin que uno se dé cuenta. :sneaky:
Recomiendo que esta aplicación no sea usada en sistemas x86, ya que los nuevos firmware suelen contener imágenes que al ser descomprimidas pueden llegar a generar archivos superiores a los 4 GB, lo cual no es soportado por sistemas x86.
Ante este motivo pensé compilarla para x64, pero al parecer algunas personas aún gustan de los sistemas de 32 bits.
Así que la compilé para x86, sin embargo, les hago notar que no se puede saber el tamaño final que tendrá una imagen descomprimida, ya sea del tipo Sparse o LZO.
Ante esto, durante la descompresión se generará un error debido al sistema, lo cual obviamente queda fuera de mi alcance.
La descompresión de imágenes Sparse estará bloqueada en sistemas x86, pero no la descompresión LZO, esto lo dejo consideración del usuario.

Citado lo anterior, espero que esta nueva versión cumpla con los varios requisitos necesarios para el proceso de desempacado y reempacado del firmware.
Esta nueva versión ha sido probada con diversos tipos de firmware Mstar y ha cumplido satisfactoriamente los procesos.
Cualquier error que noten, así como sugerencias, por favor, dejen aquí sus comentarios.

MsUT150(Beta).jpg

MsUT150(Beta)-Sparse.jpg
 

Adjuntos

  • MSUT150(Beta).rar
    2 MB · Visitas: 97
¿Es esta la versión oficial o una versión beta?
Es una versión oficial, ya que la estás descargando desde aquí, y comenté que es beta porque está bajo prueba.
Una versión más estable que la beta, suele llamarse RCX, donde X será la versión. (RC1, RC2 RC3, etc.)
Ya cuando se ha logrado superar todas las pruebas sin errores, se suelen llamar versiones estables, que siguen siendo oficiales, mientras no se descarguen de otro sitio, solo que las personas suelen confundir estos términos, y adoptan versión oficial en lugar de versión estable.
¿Habrá alguna actualización en el futuro?
Todo depende de los cambios actuales en el firmware Mstar, lo cual da a suponer que sí seguirán habiendo actualizaciones.
De igual forma, si se llega a encontrar un bug, será necesario actualizar.
 
¿Se genera por defecto? No es necesario seleccionar manualmente, ¿verdad?
El CRC32 se genera por defecto, y solo en firmware para tarjetas con terminación PB803 se debe seleccionar el CRC32 XGIMI.
Después de descomprimir y volver a empaquetar el firmware, el tamaño cambia mucho.
¿Cómo modificar el valor del tamaño del bloque?
Eso es completamente normal y no afecta en su funcionamiento.
Error de sistema.
El programa requiere .NET Framework 4.8
 
Atrás
Arriba