Aqui está outro veterano com problemas no sistema ambiental. A tarefa é desenvolver uma solução de software Decat.
Temos uma unidade de controle do motor (ECU) Mitsubishi FS6S18881B E2T88876H, que utiliza o processador H8 com 128KB de memória flash. O firmware é identificado como EZFS6S.
Este microprocessador tem uma característica específica – quando carregado no IDA Pro, o endereçamento da ROM não começa do início.

Vamos carregar o firmware no WinOls e examinar a tabela de erros. Aqui está o que encontramos:

Parece que os erros relacionados ao sensor de oxigênio traseiro estão localizados na mesma linha, o que simplifica a tarefa, uma vez que os flags de ativação provavelmente estarão no mesmo byte.
Em seguida, vamos analisar as mesmas informações no IDA Pro e localizar os procedimentos necessários:

Através desse processo, descobrimos a “máscara” para os bits de ativação que controlam ambos os erros em nossa string identificada. Ou pelo menos deveriam controlá-los!
No entanto, há uma surpresa inesperada dos desenvolvedores – parece que o DTC P0141 não pode ser desativado usando este método. Tivemos que investigar mais a fundo e, como resultado, encontramos procedimentos adicionais onde os bits necessários são definidos com base em certas condições. Esses flags são escritos na RAM e processados pelos procedimentos apenas quando necessário. Vale a pena notar que só porque observamos a voltagem do acelerador durante os diagnósticos, não significa necessariamente que esses valores estão sendo processados ativamente no programa.
Finalmente, conseguimos localizar o bit específico que precisávamos e desativá-lo. Após vários dias de trabalho, criamos com sucesso uma das variantes Decat para este programa.

