Banner publicitario de PCBWay

Reparador de Dumps (TV Chinos no Smart)

Attach the dump file so we can analyze why it's in that state.
Para evitar la manipulación manual, puedes modificar el código de la siguiente manera.
C#:
try
{
    byte[] fileBytes = File.ReadAllBytes(dumpFile);

    long currentEndFirmware = endFirmware;
    int maxIndex = fileBytes.Length - 4;
    bool foundFF = false;

    for (long i = endFirmware; i <= maxIndex; i++)
    {
        bool allFF = true;
        for (int j = 0; j < 4; j++)
        {
            if (fileBytes[i + j] != 0xFF)
            {
                allFF = false;
                break;
            }
        }
        if (allFF)
        {
            actualEndFirmware = i - 4;
            foundFF = true;
            break;
        }
    }

    if (!foundFF)
    {
        currentEndFirmware = fileBytes.Length - 4;
    }

    byte[] dataToCheck = new byte[currentEndFirmware];

    Array.Copy(fileBytes, 0, dataToCheck, 0, dataToCheck.Length);

    byte[] storedCrcBytes = new byte[4];
    Array.Copy(fileBytes, currentEndFirmware, storedCrcBytes, 0, 4);
    Array.Reverse(storedCrcBytes);

    uint storedCrc = BitConverter.ToUInt32(storedCrcBytes, 0);
    uint computedCrc = CRCUtility.CRC32.Compute(dataToCheck, 0, dataToCheck.Length);
 
Para evitar la manipulación manual, puedes modificar el código de la siguiente manera.
La manipulación manual no se puede evitar y tampoco por alteraciones en la placa.
Las comprobaciones actuales son suficientes para determinar los estados del firmware, por eso se identificó el problema y se reparó correctamente.

Ultimate no comprueba el fin del firmware buscando un bloque con 0xFF como en el flujo de tu imagen.
El fin del firmware se basa en el final del último módulo + Padding + CRC16 + CRC32 global.

En este caso...
0x30EB42 + 3 + 2 + 4 = 0x30EB4B
A ese resultado se le suma 1 para quedar justo al inicio del bloque de caché.
Fin del firmware = 0x30EB4C
 
Atrás
Arriba