logoalt Hacker News

shj210501/21/20258 repliesview on HN

Where did you learn how to do this? I would love to learn more about understanding half of what this article said but I don’t know how to start.


Replies

josephg01/21/2025

I learned a lot of this stuff ~15 years ago from reading a book called Reversing: Secrets of Reverse Engineering by Eldad Eilam. The book is old but amazing. It takes you through a whole bunch of techniques and practical exercises. State of the art tooling has changed a bit since then, but the x86 ISA & assembly more generally hasn't changed much at all.

One of my biggest takeaways was learning about "crackmes" - which are small challenge binaries designed to be reverse engineered in order to learn the craft. They're kinda like practice locks in the lockpicking community. The book comes with a bunch on a CD-ROM from memory - but there's plenty more online if you go looking. Actually doing exercises like this is the way to learn.

You don't start trying to reverse engineer COD. You build up to it.

therein01/21/2025

I got started with Lena151's tutorials back in the day. https://github.com/kosmokato/Lena151

andrewmcwatters01/21/2025

Dang, I'm old. I was going to say hang out in Gamedeception, but apparently it's been gone for years!

greetz to readers of Unknowncheats, cs.rin.ru, etc.

show 3 replies
kamikazechaser01/21/2025

UnknownCheats. I'm active there and it has one of the best resources on this kind of stuff. I'm more interested in how Linux userspace Anti-cheats works notably VAC.

frosting133701/21/2025

https://pwn.college is a great educational resource.

ActorNightly01/21/2025

You need to be just comfortable in assembly.

Its a hard first step, but I highly suggest you take the time to analyze a small binary, starting with understanding the registers for the architecture, understanding the different function calls, and then looking at the elf file and analyzing every section and how static linked libraries work, and how dynamic linking works with PLT/GOT. GPT models are REALLY good at helping you understand this, and you can also use Ghidra for decompilation. Do everything on Linux btw, as the tools are very easy to use and much less Cumbersome than windows.

Once you understand all of that, tracing assembly is pretty easy - its either register move operations, math operations, compare operations, jumps, and function call and returns (which basically are just shortcuts for handling the stack frames), with a few special instructions here and there which are usually just some optimizations that you can look it up ad hoc. Once you get handy at ghidra, you can look at decompiled C code and start replacing variable names to make the code readable, and then you generally get a good idea of project flow.

mrsaint01/21/2025

My recipe: "Windows 95 System Programming Secrets" by Matt Pietrek and "Unauthorized Windows 95" by Andrew Schulman, years of fooling around with NuMega SoftICE, lots of IRC, lost youth, yet lots of fun.

show 1 reply
b801/21/2025

The secret.club is a good resource.