Banner publicitario de PCBWay

EFI-Xer Tool (Utilidad para la edición y reparación de volcados GPT)

D@rkbytes

Moderador general
EFI-Xer Tool es una pequeña pero potente utilidad para modificar y reparar volcados GPT en televisores Smart de nueva generación.
Este tipo de volcados se extraen de la memoria e-MMC, y el tipo de SoC en donde se usa es variado, pero es común de NovaTek y RealTek, o marcas como Hisense, Samsung, TCL, etc.

Esta aplicación muestra un ligero informe del MBR y más detallado de la GPT.
Puede verificar, restaurar y reparar los CRC de los encabezados GPT primario y secundario (respaldo).
Muestra las particiones en una lista con su información básica.
Permite extraer y reemplazar las particiones.
Cuenta con un explorador para el sistema de archivos EXT4.
Los archivos de las particiones EXT4 también pueden ser extraídos y reemplazados.

Inicialmente este programa fue escrito para trabajar con el volcado GPT grabado en memorias USB, pero Windows reconoce el encabezado y trata de repararlo conforme a la capacidad de la memoria, y sobre escribe los encabezados GPT.
Como finalmente no logra reconocer las particiones, envía un mensaje para formatear la unidad por no contener un sistema válido de archivos.
Este no es el inconveniente, porque el mensaje se puede cancelar, pero no el hecho de que sobre escriba los encabezados GPT.
Así que esto puede ser un problema si el volcado se llega a utilizar en un TV que no tenga la posibilidad de verificar y reparar los encabezados.

Esta primer versión la subo como prueba, y posteriormente le agregaré la posibilidad de grabar el volcado modificado y/o reparado a la e-MMC, usando el programador AU6438BS.
Obviamente también le agregaré un lector/extractor de datos.

EFI-Xer Tool.jpg

EFI-Xer Tool_2.jpg
Nota: El botón "Extract" sirve para extraer los archivos que no tienen extensión.


Como siempre, espero que esta aplicación les sea útil.
Trataré de responder en breve ante cualquier duda, comentario o bug.
 

Adjuntos

  • EFI-Xer Tool v1.0.7z
    488 KB · Visitas: 19
Cómo reparar un volcado con particiones desplazadas.

En ciertos casos nos podemos encontrar con particiones que se encuentran desplazadas, es decir, el punto de entrada suele estar desplazado dos bytes hacia adelante.

¿Qué sucede cuando las particiones se encuentran desplazadas?

Cuando se trata de archivos binarios de los cuales no conocemos ni su estructura ni su contenido, este desplazamiento podría pasar desapercibido, pero cuando conocemos el tipo de archivo y su estructura, será cuando notaremos que no podremos ver su contenido.
Un caso específico son las particiones con el sistema de archivos Ext4.

Este tipo de archivos cuenta con una estructura muy bien definida y con posiciones establecidas de las cuales se obtiene la información del sistema de archivos.
No me extenderé en la explicación sobre el superblock, los inodos, etc.
Vamos a centrarnos sobre la firma EXT, que es la misma para EXT2/3/4.
Esta firma se encuentra en la posición 0x38 del superblock, sin tomar en cuenta los primeros 1024 bytes (0x400) del sector de arranque, o en la posición 0x438 si lo tomamos en cuenta.

La firma EXT o Magic Number son dos bytes con el valor 0xEF53 (Little Endian), por lo tanto, con un editor hexadecimal, los veremos al revés: 0x53EF.
Cuando la partición está desplazada encontraremos que la firma se encuentra en la posición 0x3A o 0x43A contando los 1024 bytes (0x400) del sector de arranque, que no son utilizados y su valor es 0x00.

Como la firma suele buscarse en una posición específica, al estar desplazada se obtendrá otro valor y se dará la partición por inválida.
En estas condiciones, un programa como 7-zip no podrá abrir el archivo, indicando que no se puede abrir como un archivo comprimido.
Esta aplicación tampoco lo puede hacer, al menos no de manera sencilla, ya que se tendría que recurrir a lecturas asíncronas, lo cual lleva más trabajo por tener que usar punteros y alineación de offsets, tanto de posición como de tamaño de buffer.
Nada imposible ni cosa de otro mundo, pero el caso es reparar el volcado.

Esta aplicación nos indica cuando las particiones se encuentran desplazadas...
Displaced_partitions.jpg
En la imagen de arriba podemos ver que a partir de la partición p04_res, el resto están desplazadas.

¿Cómo reparar el volcado para corregir el desplazamiento?

Por suerte, no tenemos que reparar todas las particiones desplazadas, solo tenemos que hacer algo muy sencillo.
Antes de realizar la reparación del volcado, debemos asegurarnos de no haber ejecutado la exploración de alguna partición no desplazada.
Colocamos el cursor sobre la primer partición desplazada, presionamos el botón derecho del ratón y seleccionamos lo siguiente...
FirstLBA.jpg
Ya copiado el valor de First LBA, abrimos el volcado con un editor hexadecimal, en mi caso uso H x D.
Presionamos la combinación de teclas "Ctrl + G" y pegamos el valor del portapapeles en la ventana que aparecerá...
GoTo.jpg
En este caso First LBA = 0x19FFFBE00
Presionamos "Aceptar" y nos dirigirá a esa posición...
Offset_0x19FFFBE00.jpg

Aquí lo que vamos a hacer es seleccionar los primeros dos bytes y eliminarlos, ya sea presionando la tecla "Supr" o con la tecla de retroceso.
Posteriormente nos desplazaremos hasta el final del volcado y obviamente encontraremos que faltan dos bytes.
Unaligned.jpg
Lo que nos resta hacer es escribir con ceros esos dos bytes faltantes.
Que en realidad no es importante, ya que se trata del final del volcado, pero por elegancia mantenemos el volcado alineado si lo hacemos.

Una vez realizados los cambios, los guardamos y el volcado quedará reparado...
Partitions_corrected.jpg
Volvemos a cargar el volcado y ya podremos ver que todas las particiones que estaban desplazadas, ahora ya no lo están.
Con esto ya podremos extraerlas para analizarlas, editarlas o explorarlas con esta aplicación.

Como el desplazamiento no solo pueden ser dos bytes como en este caso, solo debemos contar los bytes que se ha movido la firma Ext4 y eliminarlos o aumentarlos al volcado.
Donde sea que se encuentre la partición Ext4 en el volcado, los últimos números del offset para la firma, siempre deben ser 0x38
Como en este caso, ya corregido el desplazamiento, la firma quedará en el offset 0x19FFFC238
 
Atrás
Arriba