The code you run is computer-readable. It’s incredibly optimised towards making things fast for the computer to do, not easy for a human to understand.
The original source is the complete opposite.
To get from the former to the latter is possibly one of the most difficult tasks in computer science, and even for the best programmers. Reverse-engineering published code is simple, right?! So we’re all running Windows 7 reverse engineered back to run on a Mac, aren’t we? No.
It can take *decades* of effort to reverse-engineer mere years of work, and when you’re talking about anything substantial, the man-years of work involved in the creation are enormous. We haven’t properly reverse-engineered the Windows file-sharing components, not the Active Directory (i.e. logon server) components yet. Samba Project has been trying to do that for about 20 years now, and even received documentation (not source) from Microsoft to do it, under an EU court ruling that said they had to.
It’s more akin to un-scrambling an egg… uncooking it, unravelling it, reassembling it back into something that resembles the original egg.
And worse: You’re doing it blind. You have no idea what’s code, what’s data, where the boundary lies, what the code-paths are, what any of the instructions are trying to achieve, how they’re doing it, what the original code looked like, or what anything was called. All you see is a bunch of millions of numbers modifying each other. The computer loves that, that’s what it was built for. Humans have the worst time interpreting that.
And you need to be an expert programmer, in both the language it was written in, the compiler that was used, and the machine language that it ended up with, to even *begin* to start on it. Even old 1MByte DOS games that sold millions of copies 20+ years ago haven’t been reverse-engineered yet. The number of people skilled enough to able to do it, the number of those able to devote that amount of time to it, the number of those that will happily do it for free, the number of those that *want* to do it, and the number of such other things that – with those skills – they’d rather be doing: it all combines to make it a rare and unusual thing to even start.
If a game took a team of people 5 years to write, assume it would take a similar team of people 10 years minimum to reverse-engineer. And then… what? You expect them to give the source away for free after 10 years of working 9-5 on it? And you expect not to get sued by whoever owns the rights to the game in the first place?
Reverse-engineering software is, sadly, a true waste of an enormous talent that is better put to making new things. Even emulators and the like are incredibly difficult to write, and that’s when you know everything the machine can do and can just follow books on how the chips operate. Reverse-engineering machine code back to usable code is really a dark art requiring incredible skill – which is why most people just run an emulator if they want an old game. It’s easier to write an emulator that it is to reverse-engineer. And most programmers probably couldn’t write a decent emulator.
Latest Answers