Learning reverse engineering can be a daunting task, but with the right tools and resources, you can make significant progress. Here are some of the best tools recommended by Redditors for beginner reverse engineers:
Ghidra: A free, open-source reverse engineering tool suite developed by the NSA. It includes a decompiler that can convert machine code back into a high-level language like C. "Get ghidra. Go to github and find a project on the platform you want to target like windows/linux/osx. Build the project and load the bin into ghidra and work on understanding and documenting the bin."
IDA Pro: A commercial disassembler and debugger that is widely used in the industry. It offers extensive features for analyzing binaries. "Learn c and use ghidra or ida to get decompiled code in C"
x64dbg/x32dbg: Free and powerful debuggers for Windows. They support both 32-bit and 64-bit applications. "Debugger: x64dbg/x32dbg - Free, powerful, slightly esoteric at first and hard on the eyes. Watch some tutorials."
WinDbg: A debugger from Microsoft that is often used for kernel-level debugging on Windows. "I’ve spent some time in WinDbg or IDA but that is not a core skill and I would like to strengthen that a bit to go work towards fuzzing and vulnerability research."
Frida: A dynamic code instrumentation toolkit that allows you to inject JavaScript snippets into native apps on Windows, macOS, Linux, iOS, Android, and QNX. "Binary Instrumentation: Frida - Python and JavaScript API's. I use this literally all the time to trace functions, to output parameters passed to them as well as return values."
Cheat Engine: A free and open-source memory scanner, debugger, and disassembler. It is often used for creating cheats for video games but can be a great tool for learning memory manipulation. "Memory Scanning: Cheat engine - Free, comprehensive and the most user friendly memory scanner I've yet to find. Especially for beginners."
Pwn.college: A free and comprehensive platform for learning cybersecurity, including reverse engineering. "Pwn.college is free, fun and challenging"
Guided Hacking: A good starting point for learning reverse engineering, especially for game hacking. "This forum a good starting point: guidedhacking.com"
0xinfection.github.io/reversing: A basic tutorial that should give you an idea of how reverse engineering works. "Here is a tutorial, it's pretty basic, but should get you an idea of how it works."
"Practical Reverse Engineering": A highly recommended book for understanding the theoretical aspects of reverse engineering. "I’d really recommend „Practical Reverse Engineering” book. That is for theory."
"From Day Zero to Zero Day": A great book for learning about low-level attacks and reverse engineering. "I am currently reading from day zero to zeroday book and it is great"
Crackmes: Small programs designed to be reverse engineered. They are a good way to practice your skills. "Do crackmes, follow tutorials, read stuff even if you dont understand it yet."
CTFs (Capture The Flag): Competitive cybersecurity challenges that often include reverse engineering tasks. "hackthebox Reversing challenges (and similar) might be a path to start with easy and work your way up."
Game Decompilation: A fun way to get practical experience by recreating the original C source code from assembly. "Its hard to get practical experience in reverse engineering but a fun thing i do recently is game decompilation."
Reversing Your Own Programs: Write simple programs in C or C++ and then reverse engineer them to understand how they work at a low level. "Write code in C, now you have to debug it because your code sucks - switch to the assembly view in the debugger and look around."
Learn Assembly and C/C++: A strong understanding of these languages is crucial for reverse engineering. "Learn assembly and C/C++. Create simple programs and start reverse engineering them to gain a good understanding of the basics."
Use Compiler Explorer: This tool allows you to see the assembly output of your C/C++ code in real-time. "you can use a compiler explorer for that"
Practice Regularly: Consistency is key. Keep practicing with crackmes, CTFs, and real-world examples. "It sounds stupid, but to get good at something you need to start doing it and then don’t quit."
These communities are great places to ask for help, share your progress, and find more resources. Good luck on your reverse engineering journey!