In relation to the other post on firmware, and with my recent trip to FOSDEM, I have been musing a few things about reverse engineering old devices and particularly, old firmware.
While emulators have been a thing for a very long time, lots of them are not designed to document how things worked as much as they intended to run code (ROMs, games, whatever else) for the original platform. I can’t remember many projects in my past experience with emulators that cared to provide system documentation of their reverse engineered efforts — probably because lots of those emulators were not, to begin with, open source. Indeed I remember that quite a few ended up competing with each other, particularly when Sony PlayStation emulators came to be.
The reason why I find this important is that reverse engineering a modern firmware is difficult, and yet it’s the very cornerstone of validating the behaviour of software of which we don’t have sources. And unfortunately we don’t have the sources for lots of software right now.
Unfortunately, reverse engineering, say, the BIOS of a ten years old motherboard is neither glamorous nor directly useful: you can run the same software on a modern system, so why spending time on fixing things there? But on the other hand, knowing a lot more of those systems, and documenting processes and utilities would provide insight for future analysis.
Reverse engineering and reimplementation of formats, protocols, firmware that are not publicly described or available, and providing the missing documentation, is an useful skill to have, if not a directly marketable one. Can you take an old system, dump its BIOS, figure out how all components fit together and have it run Coreboot? That might not be by itself a very fulfilling result, but it shows clearly that you can deal with many layers of fiddly objects, in hardware and in software. To be honest, I doubt I would be able to do that myself.
I know more than a few people have asked before why would you have something like ReactOS spending time and development energy, I have had my doubts myself, but having the ability to study and reimplement APIs that are not published by Microsoft is definitely an advantage for the general world out there.
Take the ARM1 reverse engineering as an example. It’s a very interesting article, even though ARM1 is an absolutely obsolete technology by now. Its usefulness on the practical scale is close to zero, but its usefulness as a teaching device is huge.
We need more of that, and more published works of it.