I am learning how to reverse engineer the EEprom data in Automotive ECUs.

For such purposes as to disable the immobilisers, find millage data and workout encoded VIN numbers among other things.

I can slowly work out certain things like the VIN number by changing it through diagnostics software and then comparing the difference.

Where I struggle is when trying to disable the immobilisers and other configurations. There are companies who have worked out how to on certain ECUs and supply the data. Often the solution is just to change one or two bytes of data.

Im struggling to understand how they would go about finding what bit of data to change, obviously they don't just each bit of data bit by bit and hope for the best as there would be millions of combinations.

How would you approach reverse engineering such system?

  • I appreciate this question is quite broad but I'm new to this subject, so if you have any suggestion on how to make the question better, I'll update. – Terry Gould Nov 15 '16 at 20:30
  • I don't know these systems: is this purely an EEPROM of data, the software that uses the values in the EEPROM is separate and you don't have it? That would be a good place to start if you can get hold of it. Alternatively would it be possible to monitor the pins when the chips is in place and work out what values the control devices read from the EEPROM up to and including engine start? That might narrow down the candidates to try changing. – Rup Nov 17 '16 at 11:26

There is no single "proper" way to solve such problem. In some cases the data format may be obvious by just looking at it, but more often it won't be. Monitoring reads/writes as @Rup mentions may work in some cases but the only 100% reliable way IMO would be to RE the code (e.g. ECU/immobilizer firmware) which reads and writes this data to see how it's processed.

Not the answer you're looking for? Browse other questions tagged or ask your own question.