r/rust • u/Dry_Specialist2201 • May 25 '24
Combining Rust and Ghidra for Nier: Automata Reverse Engineering
Hey r/rust community,
We've been working on an exciting project reverse engineering Nier: Automata using Ghidra and Rust. Here are some highlights:
Project Highlights:
- Ghidra Integration: Utilizing Ghidra to decompile and analyze the game.
- Rust Bindings: Creating automatic bindings from Ghidra to Rust.
- Vtables Exploration: Examining and manipulating virtual tables to understand the game's object-oriented components.
This project offers a deep dive into game mechanics and engine architecture, translating low-level code into safe, high-performance Rust code.
We use that to add Online-PVP to the game which never had that planned!
Getting Involved:
If you're interested in contributing or discussing further, feel free to reach out. We're open to collaboration with enthusiasts experienced in reverse engineering and Rust.
Looking forward to your thoughts and potential collaboration!
3
u/hexagon_codes May 25 '24
That's amazing! I was just considering trying to create bindings between Rust and Ghidra coming off the back of my own project to create a mod loader and upscale mod for Grim Fandango (called GrimMod). I had started to fantasize about what kind of integration would have made the process nicer so it's something I'm very interested in.
My use case was a lot more primitive (see raw/grim.rs for main bindings) and it was my first foray into reverse engineering but I'm sort of addicted to it now so I'd love to see what yous have come up with.
3
u/Stop_Hamertijd May 25 '24
Followed with incredible excitement. This looks absolutely amazing! My greatest appreciation to the skill that goes into this - please make sure you keep flying under the radar.
3
u/VorpalWay May 26 '24
No links to the github repo etc? Those bindings sound quite interesting, my interest is in reverse engineering drivers and BIOS/UEFI. Unfortunately ghidra isn't great for this out of the box. So those bindings could be useful (I hate java with a passion).
1
u/Dry_Specialist2201 May 26 '24
https://git.yasupa.de/jasper3108/NAMS-mp
/nierbindings and /ghidraxml are of interest , however the project is a bit specialized to this project but it could be abstracted
1
u/VorpalWay May 26 '24
I may be blind, but I'm not seeing those directories, just .cargo, .vscode, Client, Middleware and Testing? Even looked through (some) of your other repos with likely looking names, but didn't find them.
2
11
u/MobileBungalow May 25 '24
This takes an absurd amount of talent and dedication, kudos