4 ms·
I reverse engineer/decompile games (and sometimes applications) from the 80s/early 90s for fun. The more complex the program, the more fun it is. As an extra ch
by tralarpa 5y ago
I reverse engineer/decompile games (and sometimes applications) from the 80s/early 90s for fun. The more complex the program, the more fun it is. As an extra challenge, I try to avoid runtime monitoring (i.e. in an emulator) and try to rely as much as possible solely on what I see in the binary file.
Other people do sudokus, I stare for hours at disassembled code to figure out what complex data structure the game is using to handle its 3D graphics or game logic. It's a kind of archelogy... Rediscovering a piece of code no one has seen for 30 years.
I am wondering whether there is a way to earn money with that skill? I guess it is still illegal to sell unauthorized reverse engineered ports of games, even if they are 30 years old :)
- eggsome 5y agoI have a very small/specific hack I would like applied that I'd be willing to pay for (changing hardcoded joystick button allocations for a 90's game) Please send me an email if you have time (details in profile).
- j_autumn 5y agoThat does sound like fun! Very cool activity. Sadly I never got into reversing. How did you learn that? Can you recommend some resources?
- tralarpa 5y agoHow to learn reverse engineering... Good question. First of all, nowadays, free interactive tools like Ghidra drastically accelerate the reverse engineer process. Ghidra's decompiler is able to produce actually reasonable C-like source code in many cases. So, if you want to jump right into the water, do the following: - Write a small C program and compile it - Install Ghidra - Load the binary of your program into Ghidra - Try to make sense of what you see :) That's a quite cumbersome way to learn, though, although there are several Youtube videos that follow that approach. Modern decompilers are good, but they are still far from perfect, especially when applied to highly optimized machine code. Often, the output of the decompiler only makes sense when you have the assembly code next to it. Therefore, I highly recommend to first learn programming in assembly, which includes understanding how code and data are represented in main memory, how the stack works, how OS functions are called, etc. The good news: once you have understood how a particular CPU and computer architecture work, you can transfer that knowledge easily to other architectures. Therefore, maybe just start with x86 if your computer has an AMD or Intel CPU: http://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf http://download-mirror.savannah.gnu.org/releases/pgubook/Pro... Once you can read and write assembly language, you can go back to Ghidra and disassemble some programs for which you have the source code. That will teach you a lot about how compilers translate high-level languages to machine code. You will later discover that hand-written machine code sometimes look very different from compiler-generated code. There is also what I call the platform specific part. That one really depends on the type of programs you want to reverse engineer. For example, if you want to reverse engineer a text adventure written for MS-DOS, the only platform-specific things you will encounter in the code are the four or five BIOS calls necessary for printing text, reading the keyboard, etc. That's something you can easily look up in the Internet without any deeper knowledge of MS-DOS or IBM-compatible PCs. On the other hand, if you are working on an Amiga game, it helps to be familar with the hardware and to be able to recognize the typical series of instructions that are needed to query the state of the mouse buttons etc.
- machiaweliczny 5y agoProbably not legal and questionable but with good reverse engineering bots for games are profitable and accessible. Case study: Bot of Legends (League of Legends bot framework)
- sanketpatrikar 5y agoI couldn't find it in your profile, but do you write/vlog about this somewhere? Would love to follow you and learn something!
- tralarpa 5y agoThank you for your interest. I don't have a public blog or vlog. When I reverse engineer a game, I sometimes post my findings in forums dedicated to the specific platform the game was runninng on. But I don't want to link those here due to privacy reasons (I don't want that the accounts that I used there can be connected to the account I am using here). But I am currently planning to write a longer and more detailed article about a game I have reverse engineered. I will send you a mail when it is available.