Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: RE3 – Reversed Engineered GTA3 Source Code (github.com/halpz)
129 points by swatson741 on March 11, 2024 | hide | past | favorite | 29 comments


Isn't this just a fork of the DCMA'ed repository?

The links in the readme still point to https://github.com/GTAmodding/re3


I wouldn't even call it a fork, it's just a mirror with a commit that replaces few links in a README.


> 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?


Zoom, 5g mind control, work-from-home


TikTok, unfortunately


SPACs


mRNA vaccines


Rockstar 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.


That unfortunate release was done by an outside studio who had previously done mobile ports for Rockstar: https://en.wikipedia.org/wiki/Grove_Street_Games


Can you share some of the tools and methods you used to reverse such a large C++ codebase into readable code?


>"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-...


Im 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)


I 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://imgur.com/U1wbb0d


The answer is that people have done it, ML guided decompilation is an active area.


The 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


Well 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*.


This 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.


RE3, meaning the project that was shut down because it was just straight up decompiled from Rockstar's binaries?


it went to court and they settled, and the repo is still up. take it as you will


That must be unusual? I would have thought any settlement would have included "take down the code" as priority #1.


This repository is a mirror by a completely unrelated third party. The original repo was https://github.com/GTAmodding/re3.


hmmm this was DMCA'd to hell earlier


clone and move on!


I keep stumbling onto this repo when looking for tools to reverse engineer old Resident Evil games.


Ok naive question, but how did they reverse engineer the source code comments?


They didn't, they added them in while reverse engineering.


Also all the other things that wouldn't be present in a pure decompilation, like preprocessor macros.


"Reverse Engineered" doesn't mean what you think it means. This is just looks like a copy of the actual code.


"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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: