Aquí hay otro veterano con problemas en el sistema ambiental. La tarea es desarrollar una solución de software Decat.
Tenemos una unidad de control del motor (ECU) Mitsubishi FS6S18881B E2T88876H, que utiliza el procesador H8 con 128KB de memoria flash. El firmware se identifica como EZFS6S.
Este microprocesador tiene una característica específica: cuando se carga en IDA Pro, la dirección de la ROM no comienza desde el principio.

Carguemos el firmware en WinOls y examinemos la tabla de errores. Esto es lo que encontramos:

Parece que los errores relacionados con el sensor de oxígeno trasero están ubicados en la misma línea, lo que simplifica la tarea ya que es probable que las banderas de activación estén en el mismo byte.
A continuación, analicemos la misma información en IDA Pro y localicemos los procedimientos necesarios:

A través de este proceso, descubrimos la “máscara” para los bits de activación que controlan ambos errores en nuestra cadena identificada. O al menos, ¡deberían controlarlos!
Sin embargo, hay una sorpresa inesperada de los desarrolladores: parece que el DTC P0141 no se puede desactivar utilizando este método. Tuvimos que profundizar más y, como resultado, encontramos procedimientos adicionales donde los bits requeridos se establecen en función de ciertas condiciones. Estas banderas se escriben en la RAM y son procesadas por los procedimientos solo cuando es necesario. Vale la pena señalar que solo porque observamos el voltaje del acelerador durante el diagnóstico no significa necesariamente que estos valores se procesen activamente en el programa.
Finalmente, logramos localizar el bit específico que necesitábamos y lo desactivamos. Después de varios días de trabajo, creamos con éxito una de las variantes Decat para este programa.

