How to reverse engineer your favourite game

  Рет қаралды 55,960

Exellys

Exellys

Күн бұрын

In his spare time, Exellys alumnus Olivier likes to reverse engineer games. Though it is a very niche subject, his peers at Exellys were curious to know more about it, so during his tribe’s ‘Talk of the Minds’ (which are knowledge sharing sessions among Exellysts), Olivier gave a presentation on the subject. You can watch it in full here:
👇 ABOUT EXELLYS 👇
Exellys' single mission is to attract, develop and retain the finest tech talent in large and medium-sized companies and major tech start-ups. We incubate young tech talent into our customers' operations of today and we prepare them for the innovations of tomorrow.
Are you a student, recent graduate or a professional and are you looking for a challenge in IT? Or does your company believe in the potential of young tech talent? Let's talk!
👇 FOLLOW US👇
Website: www.exellys.com/
Blog: blog.exellys.com/
Instagram: / thisisexellys
Facebook: / exellys
LinkedIn: / exellys
Twitter: / exellys
TikTok: / exellys

Пікірлер: 67
@marcelgraf5520
@marcelgraf5520 Жыл бұрын
I really wish you would also show the how you broke down the program into seperate assembly segments in your IDE.
@zigaudrey
@zigaudrey Жыл бұрын
Understanding the gear of the game and taking advantage of it is the most satisfying part of ROM Hacking/Game Modding.
@bobbyaremyshoes2233
@bobbyaremyshoes2233 Жыл бұрын
Thanks, nice info. I didn't know that you actually don't need to understand code fully while decompiling. But there is one problem with this code-comparing approach. For example, the original devs could have different (much older) version of the compiler or even write the assembly by hand (from my experience handwritten code may drastically differ from the original). In that case by simply compiling with a modern compiler you won't be able to get the same output, especially down to the hash matching
@moienahmadi2377
@moienahmadi2377 10 ай бұрын
Tools like Detect It Easy usually can tell you what compiler and linker were used to build the final executable.
@valshaped
@valshaped 7 ай бұрын
As a heads-up, you can rename and retype variables within Ghidra, and it'll produce more correct/nicer output. You can also create data structures within Ghidra, and get even nicer output.
@kaypunk9032
@kaypunk9032 Жыл бұрын
Incredible! Thank you so much for sharing all of this information
@luigi4204
@luigi4204 11 ай бұрын
bedankt kerel! Ik zag toevallig dat je uit belgie komt. Er zijn niet veel nederlandse/belgiesche mensen die reverse engineering uitleggen en doen. Dit geeft mij hoop om nog meer te leren en ooit zelf ook te kunnen reverse engineeren. Bedankt voor de motivatieboost!
@Reichstaubenminister
@Reichstaubenminister 11 ай бұрын
Bedankt (?)! Ich sah zufällig, dass du aus Belgien kommst. Es gibt nicht viele niederländische/belgische Menschen die Reverse Engineering auslegen[/erklären] und tun. Das gibt mir Hoffnung um noch mehr zu lernen und selber auch reverse engineeren zu können. Danke für den Motivationsschub! If you don't speak German, are you still able to understand that? I don't speak a single word of Belgian but I still managed to read your comment because the languages are so similar, haha!
@luigi4204
@luigi4204 11 ай бұрын
@@Reichstaubenminister yeah. i can read all of it 😅
@fleecky7011
@fleecky7011 9 ай бұрын
Heb advies voor je, leer eerst C/C++ goed genoeg snap hoe pointers werken en daarna leer assembly x86 (eigen ISA) daarna vind tutorials op hoe statische analyse met IDA/ghidra werkt en probeer een paar crackme’s te doen. RE leren is veel praktische ervaring op doen en veel proberen. Goed advies is ook godbolt/dogbolt gebruiken voor interactieve deassembly en eigen C/C++ apps maken en dan de asm lezen en snappen hoe de structuur in elkaar zit.
@JustMLC
@JustMLC 7 сағат бұрын
Nederlands 🇳🇱
@LunaJLane
@LunaJLane 11 ай бұрын
I would love to see the process of going from game files to decompiled code that we are seeing in this video.
@Expresso52
@Expresso52 10 сағат бұрын
What is the general process for figuring out what each function does? You mentioned giving some functions a name, that matched their functionality, but I can imagine the decompiled C code bring pretty general like the example you gave. Do you just mess a little with the functions and see what happens after you rebuild, or do you have a better approach?
@Meta_data
@Meta_data 7 ай бұрын
This was amazing, thanks so much for posting it.
@roisoleilxiv14
@roisoleilxiv14 11 ай бұрын
There is a compiler explorer extension for VSC ;) Thank you for the good presentation!
@elonmust6473
@elonmust6473 11 ай бұрын
This is a very good lesson for beginner to learn.
@razorblade413
@razorblade413 10 ай бұрын
very informative video. It could be cool if you do a tutorial video taking the same mario kart but starting from zero to showing each step of how you decompile a first function from assembly to c.
@5persondude
@5persondude 11 ай бұрын
It’s funny that you mention Mario 64 being ported to PlayStation consoles, because even though I’ve played that game numerous times for many years now, the first time I got all 120 Stars in that game… was on my Vita 😂 also not a bad time to mention that I got all 120 Stars in Mario Galaxy for the first time on Steam Deck
@lyomgames
@lyomgames 4 ай бұрын
Awesome video man thanks
@ElPsyVega
@ElPsyVega Жыл бұрын
it's possible to access the models and textures of a game without programming knowledge?
@jamesking2439
@jamesking2439 Жыл бұрын
There's a tool called Ninja Ripper that can do this for DirectX games.
@awii.neocities
@awii.neocities Жыл бұрын
Depends. Some games give you complete access to them, others have them in a completely proprietary file format
@aa898246
@aa898246 Жыл бұрын
really useful video
@ThatBigDon
@ThatBigDon 6 ай бұрын
Great video brother.
@plasmasupremacy9321
@plasmasupremacy9321 Жыл бұрын
It was nice to see your process! thanks
@jh5124
@jh5124 Жыл бұрын
This was fascinating. Thank you.
@MuteObserver
@MuteObserver Жыл бұрын
Thank-you Exellys!
@elrisitas8508
@elrisitas8508 Жыл бұрын
how is he building the rom from asm and c code mixed?
@renanmoura2168
@renanmoura2168 Жыл бұрын
Do you already know the answer ? I'm looking for it too
@elrisitas8508
@elrisitas8508 Жыл бұрын
@@renanmoura2168 he has must have a specific makefile, but this is beyond my knowledge
@deanvangreunen6457
@deanvangreunen6457 4 ай бұрын
The compiler, c supports inline assembly. But yes, a special makefile will work too.
@khatdubell
@khatdubell 8 ай бұрын
Interesting approach
@martinbean
@martinbean 7 ай бұрын
@Exellys I’m familiar with opening a binary in a reverse engineering program like Ghidra, but how do you get .asm files from the binary that I can put in a folder and maybe share so others can collaborate on decompiling a game?
@jorisstudios6506
@jorisstudios6506 2 ай бұрын
a mention of the efteling!? wooooooooooooooooooooooooooooooh
@jorisstudios6506
@jorisstudios6506 2 ай бұрын
wait a minute... are you dutch?
@GustavoRicci-vj2qt
@GustavoRicci-vj2qt 26 күн бұрын
Cool
@moremikeyjames
@moremikeyjames Жыл бұрын
Awesome Video!
@Falstad88
@Falstad88 2 ай бұрын
How did you know that the type was "char"?
@ryonagana
@ryonagana Ай бұрын
1 byte is always char 4 bytes can be an int (32 bits) lots of 1 byte aligned is a char array
@v0lts
@v0lts Жыл бұрын
how are you compiling from assembly and c at the same time?
@antiimperialista
@antiimperialista 16 күн бұрын
inline asm is supported by a lot of compilers and linkers
@v0lts
@v0lts 16 күн бұрын
@@antiimperialista interesting, thanks for the reply
@BALtimore2001
@BALtimore2001 Жыл бұрын
I'm looking to decompile "Nicktoons: Battle for Volcano Island" on the Nintendo DS to then port it to other platforms.
@soraaoixxthebluesky
@soraaoixxthebluesky Жыл бұрын
Is it possible to decompile or to reverse engineer, say a PS4 games .exe to get an approximation of how an actual source code look like and build a port from there? Say run PS4 exclusives on jailbroken consoles like PS3 or Xbox 360 wiith cut-back here and there for final version. Ignore the performance, can we make it run at all at say 10 fps for first iteration (v1.0)?
@Zippy_Zolton
@Zippy_Zolton Жыл бұрын
noh
@Tygo69
@Tygo69 9 ай бұрын
"PS4 games .exe" are you ok?
@isaiahkern9434
@isaiahkern9434 8 ай бұрын
none of the comments here are that informative. For clarity sake, the OP is unaware that .exe is specific to windows, but I believe the intent was to refer to the program/game's code being ran. I'll just refer to it as execution format) As for OP's question. Which I'm taking as "could a ps4 game run on a xbox 360 or ps3, if it was reversed engineered converted to source code. then compiled for 360/ps3" On paper, sure, maybe. In practice it's way more complicated, and could be a no. For example, someone is working on a port of legend of zelda OOT to a ds. The ds on paper is technically "weaker" than a n64 if we're just talking raw clock speeds. But due to what in the hardware, and specifications, certain tasks can be done faster than then n64. But that's the problem, you need someone who not only knows enough to reverse engineer a ps4 game, but someone who also knows the in's an outs of the target console. And there are likely some tasks that just, cannot be done on a weaker system (at a reasonable framerate)
@soraaoixxthebluesky
@soraaoixxthebluesky 8 ай бұрын
@@isaiahkern9434 thank you so much. I thought ".exe" executable file was universal to all machine. didn't know the it is a proprietary executable file format for windows.
@isaiahkern9434
@isaiahkern9434 8 ай бұрын
@@soraaoixxthebluesky of course, no problem. If anything, you may want to look up and into what assembly is and how it works. And the relationship between a executable format (start with a windows .exe) assembly programing, and operating systems (like windows) is it will take a quite a bit of time, but it will help prevent scenarios of getting effectively laughed at. Which is pretty rude.
@JonelKingas
@JonelKingas 2 ай бұрын
i would realy want to look at warzone code cause the game is so bad, you can think of 10 problems and 0 good things... servers cheap, developers probably cheap as well cause such bad game, crashing, lagging, lagging whole PC in alt tab, constant bugs as example when already landed get teleported up as if landing again in plunder... its so bad... always 99% GPU and low fps while game looks like 2005 game on all low
@firstclass000
@firstclass000 Жыл бұрын
This stuff is so complexed and I dont even know how to read C# or C++
@WayneModz
@WayneModz Жыл бұрын
C# is something you can learn to read in a few days
@Tygo69
@Tygo69 9 ай бұрын
@@WayneModz😂
@epik4023
@epik4023 7 ай бұрын
​@@WayneModz😂
@MrEucalyptus47
@MrEucalyptus47 6 ай бұрын
Did you think games were written in plaintext essays or something
@championazertyuiop3953
@championazertyuiop3953 6 ай бұрын
Honestly it’s very simple to understand and modify c# decompiled executables for simple tasks like removing the health logic
@koldx111
@koldx111 Жыл бұрын
How can you reverse engineer internal cooldowns? For example, reload times for FPS games. I mean down to the milisecond, regardless of framerate. Could record a video but wouldn't the framerate of the video mess with the actual in-game timer?
@ougonce
@ougonce Жыл бұрын
You could reverse engineer the animation files and figure out how long it is from there, but recording a video and counting the frames is the easier and more reliable option
@tahargermanni6205
@tahargermanni6205 Жыл бұрын
@@ougonce Hi, could you please help me to bypass the registry of the app that the manufacturer of this software is not existing anymore
@jh5124
@jh5124 10 ай бұрын
This is a great video. It could have been a fantastic video but it took you 21 minutes to get down to brass tacks. Introductions for yourself, what reverse engineering is etc is fantastic. But you must be more succinct. The intro shouldn't be longer than the meat and potatoes.
@antiimperialista
@antiimperialista 16 күн бұрын
it reads like a work presentation
@Teja-vx6xm
@Teja-vx6xm Жыл бұрын
Bro can you change bluestacks emulator tweaks ???
@GustavoFerreira-ed1kn
@GustavoFerreira-ed1kn 11 ай бұрын
In Ghidra is possible dump and rip 2d sprites and 3d models from any games consoles to pcs ???
@darthvaderbn
@darthvaderbn 7 ай бұрын
No, for 2d game, you (mostly) have to use an emulator with debug tools. But with 3d assets it's complicated, older games (from 5th generation to 7th) use different extensions for models (for example: super mario sunshine models are easier to dump than mario party 4-7 models)
@TCperry
@TCperry 3 ай бұрын
Jesus loves you!
@younessamr6802
@younessamr6802 8 ай бұрын
does anyone knows the reste of the compiler options: emerald_new_agbcc -O2 -g -m.....
How to Crack Software (Reverse Engineering)
16:16
Eric Parker
Рет қаралды 580 М.
Ozoda - Lada ( Official Music Video 2024 )
06:07
Ozoda
Рет қаралды 20 МЛН
The selfish The Joker was taught a lesson by Officer Rabbit. #funny #supersiblings
00:12
Как подписать? 😂 #shorts
00:10
Денис Кукояка
Рет қаралды 8 МЛН
Reverse Engineered old Compression Algorithm for Frogger
16:29
LiveOverflow
Рет қаралды 254 М.
Making My Own Programming Language and Coding a Game in It
10:19
AstroSam
Рет қаралды 1,3 МЛН
Reverse Engineering the AI of Age of Empires
10:34
Nathan Baggs
Рет қаралды 38 М.
Software Reverse Engineering with Ghidra
31:08
CAE in Cybersecurity Community
Рет қаралды 15 М.
Reverse Engineering - Computerphile
19:49
Computerphile
Рет қаралды 185 М.
So I started decompiling LEGO Island...
21:19
MattKC
Рет қаралды 945 М.
Reverse Engineering Age Of Empires
12:32
Nathan Baggs
Рет қаралды 219 М.
I dumped & preserved an UNRELEASED Nintendo GameCube game
12:34
Hard4Games
Рет қаралды 117 М.
Learn Assembly for Game Hacking
15:17
Guided Hacking
Рет қаралды 30 М.
Ozoda - Lada ( Official Music Video 2024 )
06:07
Ozoda
Рет қаралды 20 МЛН