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