Reverse Engineering/Game Patching Tutorial: Full Res RollerCoaster Tycoon with Ghidra+x64dbg+Python

Sdílet
Vložit
  • čas přidán 8. 07. 2024
  • GitHub Repo: github.com/jeFF0Falltrades/Ga...
    Time Markers:
    00:00:00 - Introduction
    00:01:57 - Target audience and caveats note
    00:03:10 - Start of tutorial
    00:07:08 - Loading the file into Ghidra/First steps of RE workflow
    00:14:27 - Static analysis of window creation functions (CreateWindowExA)
    00:25:42 - Quick detour to learn about Window Style values
    00:37:07 - Dynamic analysis of window creation functions in x32dbg
    00:48:38 - Static analysis of default window height/width values
    00:58:21 - Dynamic analysis of default window height/width values
    01:03:30 - Static analysis of window constraints and patching for windowed mode
    01:12:15 - Patching to enable full screen mode
    01:15:00 - Python patching script review and wrap-up
    Corrections:
    00:34:30: When viewing GetSystemMetrics, 0x20 and 0x21 are seen passed into this function in Ghidra, but the MSDN page is in decimal, so those values (32 and 33 decimal) are actually specifying SM_CXSIZEFRAME and SM_CYSIZEFRAME, the sizing borders of the window. I mistakenly confused them for SM_CYVSCROLL/SM_CXHSCROLL.
    Hey everyone, I appreciate you joining me for this inaugural tutorial.
    I'm usually playing with malware, but I thought a game patch was a more fun and light endeavor for beginners, and I hope that this video strikes that balance of being fun and informative.
    I hope to do more of these sometime, if there is an appetite.
    Reach out any time with questions or feedback.
    Twitter: / jeff0falltrades
    Free Learning Resources (Let me know if you have more, and I will update this list):
    * Programming and Operating System Concepts:
    * Harvard's CS50 Course: online-learning.harvard.edu/c...
    * MIT OpenCourseWare - Introduction to C and C++: ocw.mit.edu/courses/electrica...
    * Beej’s Guide to C Programming (H/T Echo): beej.us/guide/bgc/
    * Reverse Engineering:
    * /r/reverseengineering Beginner Resources: / a_modest_proposal_abso...
    * CS6038 (Spring 2020) - Malware Analysis - University of Cincinnati - Coleman Kane: • CS6038 (Spring 2020) -...
    * hasherezade's 1001 nights: hshrzd.wordpress.com/how-to-s...
    * Reverse Engineering for Beginners (H/T Echo): beginners.re/
    * Tools:
    * Intro to RE with Ghidra (wrongbaud): hackaday.io/course/172292-int...
    * x64dbg Documentation: help.x64dbg.com/en/latest/
    * Books:
    * Practical Reverse Engineering: www.amazon.com/Practical-Reve...
    * The Ghidra Book: The Definitive Guide: www.amazon.com/Ghidra-Book-De...

Komentáře • 524

  • @das_evoli
    @das_evoli Před 2 lety +184

    I have no idea why this looks so fun to do. You feel like a damn detective

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety +33

      Same thrill of solving a puzzle (and/or crime - especially reversing malware 😁). Thanks for watching and glad you enjoyed!

    • @MatVeiQaaa
      @MatVeiQaaa Před rokem +7

      I am doing a bit of that stuff and it actually feels like treasure hunt, like you are in some fucking mysterious ancient catacomb solving its mysteries lmao. Very fascinating.

    • @MatVeiQaaa
      @MatVeiQaaa Před rokem

      @Abraham Johnathan I had this idea for a while, but the issue I have with that is that it’s just a game. Usually I solve some actual problem which people need to be solved with what I’m doing.

    • @MatVeiQaaa
      @MatVeiQaaa Před rokem

      @Abraham Johnathan Easy to get in to, ridiculously difficult to master :) It's a great thing to do, good luck and have fun!

    • @webdevkaizen1867
      @webdevkaizen1867 Před 6 měsíci +2

      Enjoy the "fun" while you can

  • @StefanNoack
    @StefanNoack Před rokem +99

    34:27 you forgot to convert to decimal. 0x20 corresponds to the border size (entry 32) not the scrollbars. Which also explains why the value is doubled, since borders are on both sides. It doesn't matter, though :)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +22

      Thank you! Someone else pointed this out and I totally did - I even said at the start of that segment “These are the values in decimal on this page” or something 🤦‍♂️
      I edited the description a while back to include this correction.
      Thanks for watching!

  • @siljamickeify
    @siljamickeify Před rokem +176

    I LOVE that you keep your mistakes in the tutorial!! It is soo valuable for a learner to see what is difficult even for the teacher!
    Wonderful tutorial, both in content and style.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +27

      I do believe in keeping in the mistakes and identifying them because it helps me learn too! And it’s true, there’s always so much to know and learn that there are bound to be mistakes, and that’s okay - I really appreciate when someone corrects me and helps educate me.
      Now that said, I would be lying if I didn’t say I also edit out a couple of hours of mistakes like my voice cracking, me cursing because I forgot something or misspoke, me forgetting to turn my phone off, me blanking on a keyboard shortcut, etc. - Y’all don’t need to know how much of a mess I am personally 😂

    • @siljamickeify
      @siljamickeify Před rokem +2

      @jeFF0Falltrades if you edit out a lot, then it is even more impressive! The bits you left in are not only important to give a general sense of something being hard. You actually show the process of gaining information. Otherwise it is easy for a beginner to dismiss the teachers process as just being magic, I.e. there is no process, you either get it or don't get it. That can be so demotivating! But you show the process, which is truly motivating. "I can also do that! Maybe even a little bit faster than the teacher!"

    • @RandomUser2401
      @RandomUser2401 Před 8 měsíci +1

      @@jeFF0Falltradesso the issue where the game was only painted/rendered in tiles resolved it self automagically with the patch?

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 8 měsíci +2

      @@RandomUser2401 So some spoilers, but I’ll actually be talking more in depth about this in my upcoming vid - I realized we didn’t really dive into the “why” behind the blackness shown in the intro in this vid, but in short - yes, the patch fixes the error, and the reason we see that blackness is due to the screen not being refilled with colors properly after the window is destroyed if the max resolution of the machine is bigger than the max threshold expected. More details to come 😉

    • @RandomUser2401
      @RandomUser2401 Před 8 měsíci +1

      @@jeFF0Falltrades wow, so nice! That‘s so much more than the best answer I could‘ve imagine. Awesome, looking very forward to this video! Keep up the great reveng videos👌🏻

  • @dracenmarx
    @dracenmarx Před rokem +70

    It was very entertaining to watch! Just one improvement suggestion: It would be good to name variables, functions and memory addresses in the moment you identify them. Then the code browsing in Ghidra is much easier.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +18

      Thank you for the candid feedback! Others have remarked this on this particular video and it made me realize in retrospect that I missed the opportunity to do so in this one (I was so excited to publish this as my first vid that I think my mind was all over the place).
      That said, I’ve tried to improve that in my other videos so I hope you’ll find the feedback well received! Thanks so much for watching!

  • @NavnikBHSilver
    @NavnikBHSilver Před rokem +64

    I have very little experience with assembler code of any kind, yet as a dev, and with the way you explained it, it was actually fairly comprehensive and mirrors a lot of typical high-level debugging, except you're dealing with unknown source code. I am likely not going to use what you demonstrated here any time soon, but knowing it is an option, and a path I could take if I feel dedicated to a goal, is very cool and exciting.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +6

      That is awesome feedback, Navnik - As long as you had fun and came out of this having more knowledge than you started with, I am more than happy. If it comes in handy for you some day - even better! Thanks for watching!

    • @tahargermanni6205
      @tahargermanni6205 Před 11 měsíci

      @@jeFF0Falltrades Hi Jeff, could you please help me to bypass the registry in app that the manufacturer is not existing anymore.

  • @tov7913
    @tov7913 Před 2 lety +51

    1 and a half year later and it is still a great video! I always wondered how patches for older games were made and this video literally answers this question on point!

  • @steventwigg2369
    @steventwigg2369 Před 2 lety +2

    The intro montage of Roller Coaster Tycoon deserves an award.

  • @Eirenband
    @Eirenband Před 2 lety +32

    What a great video. So far this is the only RE video I've come across that showed a full and concise analysis with a working patch at the end.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety +1

      So happy you enjoyed it!
      I have a new vid cooking now; Hoping to upload by end of Jan :-). Thanks so much for the kind words.

  • @toweri_li
    @toweri_li Před rokem +12

    The first time I am watching how an executable is debugged / patched on Windows - as opposed to Commodore 64 ROM in late 80's - and I actually understood this!
    This speaks volumes on your capability to explain a fairly complex process to a 100% genuine noob in undestandable way!
    Go ahead, pat yourself on the back. You truly deserve it! :)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      Ah man, thank you so much for the kinds words! So glad you were able to get something out of it; Thanks so much for watching!

  • @JeremyKingTech
    @JeremyKingTech Před 2 lety +2

    Great stuff! Thanks for the video! I've been on a journey to learn RE for a project and your guide has been super helpful demonstrating logic/workflow to deduce functions. Cheers!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety +1

      Thanks so much! So glad you enjoyed and happy to see you moving through that journey!
      Stay tuned for some more RE content coming up in Jan :-)….

  • @TakadoGaming
    @TakadoGaming Před 3 lety +2

    I'm really glad I found your channel! Looking forward to more sometime soon!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety +1

      Me too! Thanks so much, and hope to put out more soon!

  • @michaelhoefler5118
    @michaelhoefler5118 Před 3 lety +4

    Really really great content! I hope to see more in the future! Love the clear explanations

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety

      Thank you so much; I’m so glad you enjoyed.
      I plan to put out some more content as soon as I can - A bit busy with a new kid on the way for now, but I have some ideas that are staged for some future videos :-)

  • @jmikhailov
    @jmikhailov Před 2 lety +5

    Thank you for keeping the threshold of content's quality so high

  • @padraiglogue3568
    @padraiglogue3568 Před rokem +3

    Exceptionally high quality videos you're making here, you have a knack for teaching clearly! I'd love to see you run through some windows kernel exploits. Time to binge watch the rest of your channel

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +2

      Thank you so much! And thanks for the recommendation - I would love to do an exploit video sometime but have to tread carefully due to YT’s rules on educational videos/malicious intent etc…have had issues in the past. But I’ll try to cobble something together sometime.

  • @naveenjkondeti4214
    @naveenjkondeti4214 Před 3 lety +42

    Nice, Always wanted to get into reverse engineering. Seems like starting with videogames could be fun way to start..

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety +11

      Thanks for watching!
      Yeah, that’s partly why I wanted to start with this problem - it’s a bit easier to wrap your head around than starting with something like malware analysis. I hope this is helpful to you!

    • @ricardonacif5426
      @ricardonacif5426 Před 3 lety +2

      Guidedhacking.com is a great start for that.

  • @TheAces1979
    @TheAces1979 Před rokem +1

    Bookmarked this. You're an excellent instructor! Many thanks!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      You are so kind, thank you! So glad you got something out of it.
      Hope to have a new video out shortly! So glad you enjoyed.

  • @ByronHadley1
    @ByronHadley1 Před 3 lety +1

    Five star stuff. Thanks so much for sharing. Easy to follow and extremely educational!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety

      Thank you so much, Byron! So glad to hear you thought so. Looking forward to making more once I finish a couple of projects :-)

  • @username17234
    @username17234 Před 2 lety +3

    Very useful video, a valuable resource for sure, I was surprised to see it was the only video in the channel.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety +1

      Thank you for the kind words!
      I’m working on a new one now, but some work and family matters (which I’ll talk about a bit in the next video), have made it prohibitive to upload often this past year. When I do put something out, I want the quality to be there :-). Thanks so much for watching.

  • @valhalla_dev
    @valhalla_dev Před 3 lety +2

    Fantastic content buddy, I learned a ton about the mentality/methodology as well as the practical manner that patches are applied.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety +1

      Appreciate you watching it through man - thanks for the kind words and hope you enjoyed it.

  • @OthmanAlikhan
    @OthmanAlikhan Před 3 lety

    Thanks for taking the effort in making a rather lengthy and quality video. I've learned quite a few things from watching =)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety

      Thank you so much for watching and for the kind words. I really tried to make this as accessible as possible - I’m glad to hear it was helpful!

  • @HarperLee1840
    @HarperLee1840 Před rokem +3

    You tutorial is fun and easy to digest! Hope there's more of it.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      Thanks and so glad you enjoyed it! There are definitely more to come 😄

  • @nola25_
    @nola25_ Před rokem +3

    Thank you for this educational video! I really learned a lot from it. You explained it well and kept pointing out your mistakes, which is essential for a good understanding (especially for beginners like me). I would really like to see more on patching/cracking games.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +2

      Thanks so much for watching and even more for the great feedback!
      I’ve had a LOT of requests for more game-related reversing, so that one is heavy on my mind for the next videos - I’ll try to find something creative like this but RCT was such a gem; It’s going to be hard to top.

  • @sanderbos4243
    @sanderbos4243 Před rokem +1

    Amazing tutorial, I'm sure I'll be rewatching it again fully in the future! :)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      Thanks so much - so glad you enjoyed it and hope you continue to get something out of it. Something new coming to the channel this week, too ;-)

  • @govnaizmesare
    @govnaizmesare Před 3 lety +88

    Great video! Would like to see more content like this. There's one small mistake however, the GetSystemMetrics is passed a hex value in the Ghidra overview, so instead of 20 and 21 it should be 32 and 33, which relates to the thickness of the window border and not the arrows.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety +38

      Oh wow you are absolutely correct - I even say “They’re in decimal on this page” out loud and I still mucked that up!
      Thank you for pointing this out! I have added a correction in the description of the video. I really appreciate you catching this and watching!

  • @lennard21M
    @lennard21M Před 9 měsíci +2

    I rarely watch such long videos but I enjoyed this one until the last minute. Thank you for sharing with us. Great content :) I learned a lot

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 9 měsíci +1

      Thank you so much for watching and for the kind words! So glad you enjoyed!
      I am currently at the tail end of prep for a new, very similar video - I hope you enjoy that too 😊

    • @lennard21M
      @lennard21M Před 9 měsíci +1

      @@jeFF0Falltrades Oh great, I'm looking forward to it. I'll definitely take a look. I'm new to reverse engineering and can really use videos like this :) I have a lot of fun with it

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 9 měsíci +1

      @@lennard21M It’s a great time (if not frustrating). So glad to hear it

  • @sigxfs
    @sigxfs Před rokem +5

    Awesome tutorial. I have experience reverse engineering and tweaking games with Cheat Engine but I've never taken the plunge into Ghidra as it always seemed intimidating, this video was a great introduction to it. I really appreciate you showing the x64dbg breakdown aswell, super useful.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +2

      So glad you enjoyed and thanks for the kind words! If you ever want to dive in deeper, feel free to check out the x86 reversing series I posted here last month.

  • @MeteorMetro
    @MeteorMetro Před 2 lety +1

    Thank you! Have been trying to get into this a few times, but have been struggling with Ghidra and couldn't find the resources until now. Great Video!

  • @raccdust
    @raccdust Před rokem +2

    Great video, very well explained and made easy to understand as a beginner of reverse engineering like myself!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      So glad to hear!! I’m in the midst of recording a new one for beginners at RE now ;-). Stay tuned! Thank you for watching!

  • @alexandrepereira6522
    @alexandrepereira6522 Před rokem +1

    Thanks CZcams for suggesting me this video (and of course you to have created it). One thing that I think would have helped a lot newbies like me to understand a bit more is renaming functions/variables while debugging.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      Thanks for the great feedback! Some others have commented the same and I’d like to think I did a better job in my other videos - I was so excited to get this first one done I totally blanked on it haha. Thanks for watching!

  • @omerbennahum1903
    @omerbennahum1903 Před rokem +1

    Beautiful demo. Thanks!

  • @marcelyamamoto9901
    @marcelyamamoto9901 Před 2 lety +5

    Man this was amazing, please do more! Im very intrested in start with reverse engineering too, ur video was a nice motivation! Thank you for it and the resources!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety +2

      Not sure why I missed this when you first posted it, but thank you!
      I’ve got another couple of ideas planned and am going on holiday here shortly, so hoping to upload another one here soon 🤞

    • @marcelyamamoto9901
      @marcelyamamoto9901 Před 2 lety

      @@jeFF0FalltradesRelax man, no stress ;)
      Yesss, already preparing the popcorn 🥳🥳

  • @jakydibee8569
    @jakydibee8569 Před 2 lety +1

    really interesting video!!, much better dive right into the analysis than watch endless just theoretical tutorials

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety

      Glad to hear it! Hoping to do more when the holiday season comes around.

  • @mohssineelharfi5909
    @mohssineelharfi5909 Před 2 lety +1

    sure thing, I enjoyed it a lot, thx for this awsome content

  • @The_Makers_Prerogative

    I enjoyed following your workflow, Excellent Video!

  • @subtractaddy
    @subtractaddy Před rokem +7

    Wow! Thank you so much for such a clear and approachable tutorial video! One of the hardest things with trying to learn something new and technical like reverse engineering, is feeling like you can do it. I am inspired now so thank you :D

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      So glad to hear you enjoyed, and even more happy to be part of your journey in finding out: YES! You can do it.
      And that goes for everyone here; believe me, if I can, you all can. Keep learning.

  • @Tehploe
    @Tehploe Před rokem +1

    This was a lot of fun! Great video.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      So glad you enjoyed! Thanks so much for watching and for the kind words!

  • @bommijn
    @bommijn Před rokem +1

    Was fun to follow allong, thanks for the video :) Learned allot as well.

  • @nemtudom5074
    @nemtudom5074 Před 8 měsíci +1

    I just yesterday figured out basic hex editing to reverse engineer how Heroes of might and magic 3's scoreboard works, so this video came at just the right time to fuel my newfound interest
    Thanks

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 8 měsíci

      Great to hear! I’m finishing up another game modding tutorial as we speak, so stayed tuned! Thanks for watching

  • @deathscreton
    @deathscreton Před rokem +2

    Recently saw this on Reddit and ended up consuming the whole video during my workday. There was a time I tried my hand at creating a no-cd patch for Ancient Conquest: Quest for The Golden Fleece and hit walls. I may have to give this another shot, thanks to this vid.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +2

      Awesome! So glad you enjoyed and glad it inspired some tinkering!
      Can’t tell you how many times I walked away from a project out of frustration, only to come back and have a blast with it with fresh eyes - I hope you get some learning and fun out of it.
      Thanks for watching!

  • @omdangy
    @omdangy Před rokem +1

    Brilliant tutorial! You're a very good teacher, thank you

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      Thank you so much for your kind words - I hope it was helpful to you!

  • @akaez2807
    @akaez2807 Před 2 lety +1

    Great job
    Excellent explanatory

  • @JellyLancelot
    @JellyLancelot Před rokem +2

    Truly an awesome video, so interesting and such an engaging topic.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      So glad you enjoyed! Hope you continue to enjoy the channel, and thanks so much for watching

  • @9wattcat
    @9wattcat Před rokem +2

    Nice video! Nog den första reverse engineering videon på CZcams som har varit rolig att kolla på :)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +2

      Tusen tack! Det var ju målet då jag skapade kanalen, och det är så häftigt å se så många folk som njuter av ämnet. Tack för att du tittar!

  • @erickuhn3500
    @erickuhn3500 Před 4 měsíci +1

    Well done! I enjoyed watching this video a lot.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 4 měsíci

      Thank you so much and glad to hear! If you haven’t seen the spiritual successor to this one (the latest RCT vid on the channel), you’d likely enjoy that one as well - much stranger but more interesting 😂
      Thanks so much for watching and glad you enjoyed!

  • @Ataraxia_Atom
    @Ataraxia_Atom Před rokem +1

    This is freaking awesome! I loved this game

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      It really does so much for the nostalgic soul - Thanks so much for watching!

  • @pedrogabrielnogueira1068
    @pedrogabrielnogueira1068 Před 5 měsíci +1

    I'm just saying what i think of the beginning of the video: This looks amazing. You are going to solve a real problem for a game with patching. Awesome. Valuable content.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 5 měsíci +1

      Thank you so much! I hope you enjoy this, and if you do, I hope you enjoy my other vids - which arguably have only gotten better in quality with time (not by much but I’d like to think a little 😂)
      Thanks so much for watching and for your kind words!

  • @nerdyape4738
    @nerdyape4738 Před 3 lety +1

    AMAZING WORK !
    please keep going

  • @Pi7on
    @Pi7on Před rokem +1

    Very informative, thanks for documenting the whole process!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      Thanks for watching and so glad you got something out of it! More coming soon :-)

    • @Pi7on
      @Pi7on Před rokem +1

      @@jeFF0Falltrades glad to hear it! I'm definitely keeping an eye out for your vids!
      Personally I love watching people reverse engineering a game to fix an abscure bug.
      Do you know mattkc and exilelord? They made a video on lego island and guitar hero respectively, documenting their journey reversing the game. I love this stuff

  • @BillEngwall
    @BillEngwall Před 3 lety +7

    What a champ Jeff, I am new to reverse engineering. Came from reddit, stayed for full hour. Loved it, understood it and it was very interactive too.
    Thanks a lot!! Earned a sub ;)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety +1

      The highest praise I could get is knowing this helped someone getting started: Thank you so, so much CureofQuarantine! So glad you enjoyed, and excited to do more soon.

  • @Antonio-yy2ec
    @Antonio-yy2ec Před 2 lety +1

    This video is pure gold

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety

      Your comment is pure gold, my dude. Thanks for watching and glad you enjoyed

  • @sandrovolery1168
    @sandrovolery1168 Před rokem +1

    Aight we've gone full circle. From a game, written in assembly, decompiled to C-code xD
    Nice video

  • @ferna2294
    @ferna2294 Před rokem +1

    Beautiful. This will be very useful. Thank you so much!

  • @V_ice
    @V_ice Před rokem +1

    these videos are a god send

  • @gamehero7198
    @gamehero7198 Před 9 měsíci

    this video is awsome exactly what i was looking for, i know stuff about C, C++, asm and basic workings of windows, compiling and memory, but reversing was always such an overwhelming task, im just 20 mins into the video and allready blown away on how good this is

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 9 měsíci

      So glad you enjoy! I’m working on another (very similar one) at the moment - and if you’d like to really dive in, I have an x86 assembly course posted as well.
      Have fun and let me know if you have any questions!

    • @gamehero7198
      @gamehero7198 Před 9 měsíci

      @@jeFF0Falltrades such a quick response :D im amazed, yeah i would definitely be interested in an asm course, i mean theres not so much good documentation on it out there (i know basic x64 asm), im only 3 years into programming as of now (or better speaking 1,5-2, 1 year i was just fooling around), wich some might consider early to dive into such, more deeper fields but i just think its so much more fascinating than just plain java script or stuff like that, that to me just seems like talking english to a computer, computer science is the way to go for me :D

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 9 měsíci

      @@gamehero7198 Haha you caught me during some downtime during travel.
      Awesome! Well, take it at your own pace and def don’t stress out over learning everything at once. There’s always more and more to learn later.
      Enjoy your studies too; I was a CS major and loved every bit of it (esp writing only a max of 2 essays in uni 😂)

    • @gamehero7198
      @gamehero7198 Před 9 měsíci +1

      @@jeFF0Falltrades I mean Im self taught, I spend to much time at the computer and to little at school 😅. So yeah, my goal is currently to land a job in development. I'm currently aiming at web development. Seems like web devs are always needed but my end goal is earning a living coding C or C++ mainly, but I first wanna add something to my resumee 🤷🏻‍♂️😅

  • @mahmoudabdullah4153
    @mahmoudabdullah4153 Před 3 lety

    that's a great video, thank you for sharing it. I'm waiting for more.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety

      Thank you for watching! I’m hoping to make more soon!

  • @santiagocalvo
    @santiagocalvo Před rokem +1

    No idea how I got here but I'm subscribing, great video!!!

  • @DeniusZZR
    @DeniusZZR Před rokem

    WOW! Thanks so much!

  • @guitarcallum
    @guitarcallum Před rokem +1

    This was a fantastic video, thank you soo much!

  • @Wielorybkek
    @Wielorybkek Před 8 měsíci +1

    very interesting video! I'm a programmer but I've never touched any of this low level stuff, it was really cool to learn how it works. I did not understand everything but I got the idea of what you were doing and it was satisfying to see the final solution.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 8 měsíci +1

      That’s great feedback! If you’re interested in learning more of the details at a slower pace, I’d recommend checking out my x86 assembly course posted on this channel. I’ll also have another, similar video I’m hoping to publish before year end :-)
      Thanks for taking the time to leave a comment and so glad you enjoyed.

    • @Wielorybkek
      @Wielorybkek Před 8 měsíci +1

      @@jeFF0Falltrades Haha if only I had time to learn. :D But thanks for the recommendation, I appreciate the effort.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 8 měsíci +1

      @@Wielorybkek So long as you’re having fun, that’s what counts 👌

  • @orgozlan323
    @orgozlan323 Před 3 lety +1

    Awesome vid . Thank you !

  • @waden9933
    @waden9933 Před 6 měsíci +1

    Thank you so much!
    I wanted to learn more about reverse engineering this game and everything made sense. Great work with this!
    As an added bonus I wanted to get it running on my Steamdeck and by copying the regedit files to my system I was able to get the game running perfectly on Linux!
    Thanks again!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 6 měsíci

      Oh sick!! So happy to hear that you got it working, and well done on your behalf!
      Thanks so much for watching and if you ever have any RE type questions, feel free to shoot me a comment/DM.

    • @waden9933
      @waden9933 Před 6 měsíci

      @@jeFF0Falltrades WIll do!

  • @AlphaYellow
    @AlphaYellow Před 7 měsíci +2

    I have a really longtime goal of patching most of the mid to late 90s and early 2000s 3D games that never got any kind of unofficial patches (both known and unknown ones, seems like there's a popularity and nostalgia bias in relation to the modding community for old games), but that's proving to be way more difficult than I thought, your tutorials are helping me quite a bit though, thanks

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 7 měsíci

      So glad to hear it! So many good games in the graveyard that could potentially be resurrected!
      Hope you enjoy this and my other tutorials

  • @saultube44
    @saultube44 Před 6 měsíci +1

    Thanks, very clarifying

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 6 měsíci

      So glad to hear it! Feel free to check out my other RE tutorials and course if you’re interested in more details.

  • @garyhoffman7677
    @garyhoffman7677 Před 3 lety +1

    Awesome job mate, keep it up

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety +1

      Thanks so much, Gary. My first foray into something like this, and I’m really happy about how it’s been received. Happy New Year!

  • @RandyFortier
    @RandyFortier Před 3 měsíci +2

    Great video, and very interesting to see the process.
    One recommendation would be to change the names of the variables and functions in Ghidra as you go. It will make the program become more readable over time, as you discover what everything does.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 měsíci

      Thank you Randy!
      Yeah, this being my first one of these videos, I failed there, likely due to overexcitement 😁 - this was one of the primary pieces of feedback I got for this one, and I took it to heart. Happy to say I’ve gotten better with subsequent videos.
      Thanks so much for watching and for the kind words!

    • @RandyFortier
      @RandyFortier Před 3 měsíci +1

      @@jeFF0Falltrades It is pretty rare to find this content, so I was glad to find it. The quality is very good!
      I look forward to watching some of the other videos!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 měsíci

      @@RandyFortier Thank you so much! And agreed; that’s really why I’ve kept with it.
      That and the incredible community that’s been built up around it :-)

  • @LeakedWisdom808
    @LeakedWisdom808 Před rokem +1

    DEVPAC2 days. ahhhh I love it. Good memories of learning assembler on the amiga.

  • @user-xe6wc8yt7u
    @user-xe6wc8yt7u Před rokem +1

    I watched this video like a blockbuster movie! Plz, more videos like this!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      More on the way soon! Have some ideas ready to go - just need to find the time to plan and record them :-). Thanks for watching and feel free to check out the other couple of vids here if they interest you!

    • @user-xe6wc8yt7u
      @user-xe6wc8yt7u Před rokem +1

      @@jeFF0Falltrades Glad to hear it) Next is 3 hour long video about solitaire)

  • @neraprojects
    @neraprojects Před rokem +1

    Thank you! Awesome!

  • @danielstocker2578
    @danielstocker2578 Před 2 lety +1

    Nice one, thanks !

  • @reindeerfinn9249
    @reindeerfinn9249 Před 2 lety +1

    Awesome tutorial!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety

      Thank you! Hope to publish a new one by the end of this month 🤞

  • @talbaraz8916
    @talbaraz8916 Před 3 lety

    this is a great video, very interesting sat through the whole video :)

  • @ilhamriskiwibowo
    @ilhamriskiwibowo Před 3 lety +1

    This is amazing work, bcs use python too for patching. I learn from open roller coaster tycoon too.

  • @stkke93
    @stkke93 Před rokem +1

    Evening intended to play a nostalgic game ended up with you working instead (you workaholic!)
    Also! for it to be too late when you were done .... classic
    Hat off for you.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      Hahaha my wife still pokes fun at me because I spent much more time on the RE than I did playing (I think I played a single game the day after the upload, and then my nostalgia was fulfilled) 😆.
      No regrets; It was such a fun experiment. Thanks for watching!

  • @lugadug9475
    @lugadug9475 Před rokem +2

    Thank you dude, with your help, i patched old game called "Neighbours from Hell", so now i can play without "old" fullscreen mode(800x600 window size)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      Heck yeah! It’s always so nice to hear about people like you who go out and apply this, esp when it comes to patching old school games. Congrats, great job, and thanks for watching!

  • @onerimeuse
    @onerimeuse Před rokem +1

    99% assembler code, all by one dude no less. Just one guys passion project.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      This is why I love video games - so much passion, blood, sweat, and tears poured into giving people an escape to have fun and enjoy life.

  • @abhispark
    @abhispark Před 2 lety +1

    Great RE 101 kudos.

  • @DrixoGaming
    @DrixoGaming Před 3 lety +1

    Well just saying it's was realy good to watch even i don't have any tips to give but i was wanted to say how i appreciat the flow and everything it was interresing.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety

      Thank you so much, Dj-Xo! I’m so happy you enjoyed.

  • @bunkersantiago2439
    @bunkersantiago2439 Před rokem +1

    Excelente trabajo 👍

  • @sergeyfiantsev2854
    @sergeyfiantsev2854 Před 7 měsíci +1

    great guide. thank you.

  • @le9038
    @le9038 Před rokem +2

    That was pretty fun! thank you!
    ]

  • @djglitch2.031
    @djglitch2.031 Před rokem +2

    I was looking for a way to reverse engineer programs to understand how some functions work when building other things. I didn't know that exe decompilers already existed. Saves me a bunch of time.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      They do and they are (or can be) wonderful. Thanks for watching!

    • @djglitch2.031
      @djglitch2.031 Před rokem +1

      @@jeFF0Falltrades Can you make a tutorial on how to install one though? Cause it downloads a zip and I tried looking for some to no avail, unless you can add a tutorial video to the desc. that's already made. It's also very confusing on how to install programs that are in zip files in general.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      @@djglitch2.031 You know that’s not a bad idea - I’m realizing I have it preinstalled in all my vids - Next time I make a vid with Ghidra I can do a full install of it.
      It’s not difficult to understand once you know how Ghidra works via Java, but yeah - I do remember I had to take a few extra steps to make a shortcut to it and such and make it “act like a normal program”.
      Thanks for the feedback!

    • @djglitch2.031
      @djglitch2.031 Před rokem +1

      @@jeFF0Falltrades Np, I like the helpful programs that always seems to be in zip formats which get really annoying to work out for newbies like me.

  • @JT-xu1qd
    @JT-xu1qd Před 7 měsíci +1

    It's easy to see why this game was so great, it was stacked with FUN_

  • @XxXjujio2013XxX
    @XxXjujio2013XxX Před rokem +1

    Thanks for the video. I... just... one day I gonna see it, but not today.

  • @cromatico524
    @cromatico524 Před 3 lety +1

    AWESOME VIDEO! PLZ KEEP IT UP!

  • @timfennis91
    @timfennis91 Před rokem +1

    Thanks for making this video. I've always been curious about reverse engineering and this was definitely a very good introduction. If I had to offer any criticism I would agree with some others that naming the variables would have been great, and for me personally the tempo could have been higher. You obviously worried a lot that this video would be too difficult for your audience but I think it's fine.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      Thank you for the feedback! Some others mentioned the same, and I agree - I’ve gotten better at this with my more recent videos (I think I was just too excited when filming this first one that it just fell right out of my head to label everything).
      Thanks for watching!

  • @jeffgyldenbrand9754
    @jeffgyldenbrand9754 Před rokem +1

    Just wow!

  • @gopro2027
    @gopro2027 Před rokem +1

    I miss game modding so much. I wanna do it for a job but not really sure where I can do that at. I just liked the puzzle part of it, it was so rewarding.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem

      There are a good amount of jobs involving reversing or even game-specific reversing and mods as part of game dev/anti-cheat teams! Not to mention the malware analysis route - Hope you find something that suits you regardless! And thanks for watching!

  • @PlasticCogLiquid
    @PlasticCogLiquid Před rokem +1

    Nice work!

  • @Nick-lu5bn
    @Nick-lu5bn Před 2 lety +2

    What a great tutorial! Thanks, I successfully patched GOG version of RCT with your help, albeit with minor complications.
    I don't know, maybe it's trivial matter, but I think that the following would be useful. 1:16:45 You talk about relative address without clarifying how to actually get it.
    Luckily, by poking around in Ghidra's Code Browser I found what I need. One can patch instruction (Ctrl+Shift+G), replacing absolute address of an old function (0x005840f8, for example) with address of a new one (0x005840a5). I can't say I understand how "CALL 0x005840a5" becomes E8 33 7A FF FF, but it still works.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety +2

      Thanks so much for the feedback, for watching, and nice job on patching!
      I also realized - in working on my next video - that I did not spend enough time talking about RVAs vs offsets vs absolute addresses (this will be pivotal in the new video) so I promise I will hit on that in the next one.
      Regarding your question about that instruction, there are a couple of reasons I can imagine you are seeing the hex addresses you are (i.e. 0xFFFF7A33): One might be that you are seeing a relative address jump, so you are seeing a 16-bit address relative to the instruction (so all the highest bits are 0s), or it could be a placeholder value before the real address is linked. In the context of what you were doing, I think it’s probably the latter.
      Thanks for watching and for the great feedback!

  • @contasfinalcontasfinal
    @contasfinalcontasfinal Před 8 měsíci +1

    cool, I dint understood everthing but was a good video

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 8 měsíci

      Glad you enjoyed, and if it interested you, I’ll have a very similar one coming out soon :-). Thanks for watching!

  • @dennisanderson8663
    @dennisanderson8663 Před 7 měsíci +1

    I remember using Dragons RCT trainer. Whoever wrote that is awesome because the number of things you could do to your rides was insane.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 7 měsíci

      I talked about this in my latest RCT video from last week, but I am just gobsmacked by the skill of the early reversers who build tools like the OG RCT trainers with far fewer good RE tools we have today. It’s incredible.

  • @Baldur1975
    @Baldur1975 Před rokem +1

    Thank You!

  • @Muninn0
    @Muninn0 Před 7 měsíci +1

    great video, enjoyed to watch your journey :)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 7 měsíci +1

      So glad you enjoyed! FYI: Something of a spiritual successor to this video is going to be published next week ;-). Thanks for watching!

    • @Muninn0
      @Muninn0 Před 7 měsíci +1

      @@jeFF0Falltrades great so, i just found your channel in the right time then :D looking forward to it

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 7 měsíci

      @@Muninn0 I just hope you enjoy it as much as this one - thanks so much 🙏

  • @Alfakatt
    @Alfakatt Před rokem +2

    Love the swedish interface 😎

  • @l3lackoutsMedia
    @l3lackoutsMedia Před 2 lety

    This is the first reverse engineering ghidra video, that seems to click instantly for me.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 2 lety

      Glad to hear it!! Thanks for watching and hope to have a new video out soon.

  • @Raulvic
    @Raulvic Před rokem +1

    Awesome!

  • @rainerzufall1868
    @rainerzufall1868 Před 3 lety +2

    Please produce more! :)

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety +1

      Thanks so much, Rainer!
      I’ve been overwhelmed by the positive comments here. Planning to do more soon!

  • @josephgitahi2090
    @josephgitahi2090 Před rokem

    Great game dev

  • @benjcalderon
    @benjcalderon Před 3 lety +1

    awesome video! thank you for this 😃 I'm thinking about reverse engineering the software to program a HAM Radio... probably a big bite for starting but this gives me a lot of info to using ghidra and the debugger bight actually come quite handy!

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před 3 lety

      Hey thanks a lot Benjamín!
      I hope it helps you in your journey to doing some RE on the HAM radio software!
      That sounds awesome, btw - if you post anything about it, please let me know!

  • @vuurniacsquarewave5091
    @vuurniacsquarewave5091 Před rokem +7

    I'm pretty sure giving readers some kind of a bitfield-like explanation for those values that are added up, essentially flags, would be a lot easier to digest, not to mention being able to switch value representations to binary on the fly might help... but great video! I've only ever worked with 8 and 16-bit CPUs in assembly and it's fun to see how you communicate with the OS on a modern platform.

    • @jeFF0Falltrades
      @jeFF0Falltrades  Před rokem +1

      Thanks for the feedback! I took both of these down for consideration in some upcoming primers for beginners - they’re both great points. Thanks for watching!

    • @vuurniacsquarewave5091
      @vuurniacsquarewave5091 Před rokem +1

      @@jeFF0Falltrades I don't think it's a you problem but rather a Microsoft documentation problem. Surely if someone is patching a disassembly there are ways to OR those property flags together and have the assembler take it from there, but it might be cleaner from Microsoft's side, to show the bitfield in addition to a 32-bit hexadecimal value.