5 ms·
Show HN: RE3 – Reversed Engineered GTA3 Source Code
- tety 3y agoCan you share some of the tools and methods you used to reverse such a large C++ codebase into readable code?
- supriyo-biswas 3y agoThe history[1] section in the README file contains a description of how they did it. In summary, it seems they debugged GTA3 and wrote their stub implementations until the game was all reimplemented, presumably with only the assets from Rockstar’s GTA3. [1] https://github.com/halpz/re3?tab=readme-ov-file#history https://github.com/halpz/re3?tab=readme-ov-file#history
- lstodd 3y agoWell you can look into how DFHack for Dwarf Fortress was redone. It involved a C++ decompiler written in clisp. Since then Ghidra was released, so the process is somewhat simpler, if not as much *fun*.
- Hamuko 3y ago>"GTA 3 and Vice City were originally written in C++," aap explains. "The compiled executables that are shipped are in machine code. So the general task is to go from machine code back to C++. >"Machine code can be (more or less) mapped 1:1 to a human readable form called assembly language, but it's still very tedious to read. >"To go back to C++ is by no means a simple 1:1 mapping, but over the last 10 or so years decompilers have appeared that help with this process. >"So what we typically do is work with the output of the decompiler and massage it back into readable C++. This is sometimes quite easy and sometimes hard, but in any case it's a lot of code and you're bound to make mistakes." >Thankfully, the code for GTA 3 on PS2 and Android includes debug symbols. Debug symbols contain all the extra information needed to debug a game during the development process, but are often stripped out for release executables to avoid bloat. For whatever reason, Rockstar left these symbols in, giving the reverse-engineering team a huge leg-up. >"We were very lucky we had symbols for the games," aap says. "PS2 [GTA] 3 and all the Android releases have names for the global stuff (functions and global variables). This was a huge help and I don't think we'd be anywhere near reversed GTA without them." https://www.eurogamer.net/how-a-small-group-of-gta-fanatics-reverse-engineered-gta-3-and-vice-city-without-so-far-getting-shut-down-by-take-two https://www.eurogamer.net/how-a-small-group-of-gta-fanatics-...
- euazOn 3y agoIm curious, since it seems to be mostly about walking back the one-way-street of C++ to assembly, what’s stopping us from training a ML model to help with decompilation by figuring out patterns in the compilation process? (there has to be a reason, otherwise someone would have done it already)
- esrauch 3y agoThe answer is that people have done it, ML guided decompilation is an active area.
- Eisenstein 3y agoI just tried with Claude Opus. 1. Write hello.cpp 2. Compile 3. Disassemble to asm with objdump -d 4. Give asm to Claude and ask it to write the C++ code that would result in that asm 5. Got back hello world in c++ So, it seems you might not need a specially trained model. Original: #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } Reproduced: #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } asm: https://pastebin.com/SswUSh0u https://pastebin.com/SswUSh0u * https://imgur.com/U1wbb0d https://imgur.com/U1wbb0d
- Hamuko 3y agoRE3, meaning the project that was shut down because it was just straight up decompiled from Rockstar's binaries?
- Pannoniae 3y agoit went to court and they settled, and the repo is still up. take it as you will
- jumploops 3y ago> Due to everyone staying home during the start of the Corona pandemic everybody had a lot of time to work on re3 again and we finally got a standalone exe in April 2020 (around 180k lines by then). This is awesome. I’m curious what other projects owe their success to the pandemic?
- iknowstuff 3y agohmmm this was DMCA'd to hell earlier
- yieldcrv 3y agoclone and move on!
- whatever1 3y agoOk naive question, but how did they reverse engineer the source code comments?
- 4gotunameagain 3y agoThey didn't, they added them in while reverse engineering.
- sour-taste 3y agoAlso all the other things that wouldn't be present in a pure decompilation, like preprocessor macros.
- lyu07282 3y agoRockstar should've just worked with modders instead of whoever produced the garbage re-masters. Like fans have more respect and love for GTA than anybody working at Rockstar. Fuck this company.
- Y_Y 3y agoThat unfortunate release was done by an outside studio who had previously done mobile ports for Rockstar: https://en.wikipedia.org/wiki/Grove_Street_Games https://en.wikipedia.org/wiki/Grove_Street_Games
- landgenoot 3y agoIsn't this just a fork of the DCMA'ed repository? The links in the readme still point to https://github.com/GTAmodding/re3 https://github.com/GTAmodding/re3
- dawidpotocki 3y agoI wouldn't even call it a fork, it's just a mirror with a commit that replaces few links in a README.
- webprofusion 3y ago"Reverse Engineered" doesn't mean what you think it means. This is just looks like a copy of the actual code.
- colonwqbang 3y ago"to study or analyze (a device, as a microchip for computers) in order to learn details of design, construction, and operation, perhaps to produce a copy or an improved version" Isn't that what has happened here? They decompiled the program and gave each function and variable a meaningful name, added comments and fixed some bugs.
- ThinkBeat 3y agoThis is a truly monumental creation. THe level of effort it must have taken is enormous. I peeked at the source code expecting what asm - > C reverse engineering tools usually spit out, which is quite a mess, but this is clean and commented. I stand in awe.
- deleted 3y ago[deleted]
- ouraf 3y agoI keep stumbling onto this repo when looking for tools to reverse engineer old Resident Evil games.