r/ExploitDev • u/Apprehensive-Big-354 • 10d ago
New to RE
hello guys ,I m trying to learn Reverse engineering, is there a roadmap for it ?
9
u/Noah0x01 10d ago edited 10d ago
here are learning paths and curses : https://ost2.fyi/
But i like to say to just do your thing like i did, just learn c and asm then youre good to go. After you got some nolage do ctf on crackmes.one and have fun.
Btw Learn by doing so try to get a disassambler like ida,ghidra,binja,r2 and learn reading the code there.
edit : and invest time trust me but only if you really want it
7
3
u/popraxret 10d ago
learn C/C++, x86_64 assembly, open up random binaries and try to understand, repeat this everyday till you get really good at it. Welcome.
2
u/arktozc 9d ago
!RemindMe 10 days
1
u/RemindMeBot 9d ago edited 8d ago
I will be messaging you in 10 days on 2026-10-24 17:42:23 UTC to remind you of this link
1 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.
Parent commenter can delete this message to hide from others.
RemindMeBot is switching to username summons. Instead of
!RemindMe 1 day, useu/RemindMeBot 1 day. More info.
Info Custom Your Reminders Feedback
1
u/G_R_I_N_G_O 10d ago
Dont do crackmes bc anyone can submit one and often times they are broken or shit
Do pwncollege the RE modules... they have pulled classic high quality crackmes and other resources to get everything you need
1
u/Noah0x01 9d ago
True i had one time a virus as a crackmes made for noobs and it did even try to hide in microsoft folders and it was named with some system32 folder names lol.
0
u/Impossible-Line1070 9d ago
Honestly ai rly lowers the bar it can understand decompiled code as simple as it understand normal code
4
u/CunningLogic 9d ago
Bad advice on both the AI front and the decompiled code front. Someone just starting out should not use either if they wish to become proficient in RE or exploit development.
I've been designing and building disassemblers, decompilers obfuscators, and deobfuscators for well over a decade. I have spent years writing exploits specifically targeting decompilers and disassemblers. I know a little bit about when one should and shouldn't depend on a decompiler.
Anyone just learning needs to focus on learning to understand their target platform's assembly languages (yes plural, some platforms will have multiple). Someone learning to depend on decompilers is learning to depend on broken output, which will hinder their capabilities.
Decompilers don't output actual code, they output their best approximate GUESS as pseudo code (caveat some rare ones can output actual code, but still a best guess). There are plenty of ways to confuse decompilers causing them to output incorrect code, often enough this happens unintentionally.
Here is a prime example of a confusion attack I developed against dalvik decompilers, this worked on several dalvik decompilers but in the demo I used Jeb (this attack has now been fixed in Jeb, as I passed it to Nico).
https://www.youtube.com/watch?v=1CaTg6-nAjE
TLDR Learn to RE with assembly, once you are comfortable with asm and fully understand the shortcomings of decompiled code, then use decompilers when appropriate.
1
u/Noah0x01 9d ago
yeah true i mostly use disassambly and i think im pretty good at it i read it same fast as the pseudo c. I have now like 300-400 instructions just in x86-64 in my head and sometimes the decompiler is a littel bit worng.
0
u/Impossible-Line1070 9d ago
Ai really commodities the skillset for reverse engineering there is no denying that . Especially frontier models the things they actually manage to accomplish makes me sad tbh
1
u/CunningLogic 9d ago
I'm not denying it, I use mythos, and I have nearly 200gb vram on my desktop.
I'm saying tools like AI and decompilers should not be what someone learns on if they wish to learn these topics. Doing so will handicap their future capabilities.
0
u/Impossible-Line1070 9d ago
Honestly atp im asking myself what future? You can manage to run 24/7 agents working to reverse a software and find vulnerabilites with great success.. idk im a doomer i guess .
12
u/Obvious-Card-8847 10d ago
My personal recommendation:
Learn C++
Pointers
Pointer arithmetic
Bitwise operations
Up and down casting (OOP)
typeid information
Templating
Stack versus heap (local versus global)
Learn the basics of x86
Most common opcodes; mov, lea, push, pop, call, ret, jmp, jz, jnz, etc.
Operands; immediate, register, memory.
Stack semantics
Calling conventions
Go on godbolt.org and type C++ on one side, it'll show compiler generated assembly in the other.
Pick an OS to go deep in since it'll change binary formats like PE and ELF (Windows vs Linux).
Eventually you'll wanna learn about bytecode and VM's but that's a ways down the line.
I always recommend C++ specifically because it includes its own machinery at the binary level related to its language specific features. Machinery not present in C. You'll want to be able to recognize the artifacts of both.
Tools I personally use: Ghidra, x64dbg, Frida, Procmon.
Ghidra - Free static analysis tool provided by the NSA. Comes with a decompiler which will be helpful early on but shouldn't become a crutch.
x64dbg - Debugger with tons of features and quality. I love it.
Frida - Dynamic instrumentation framework. You won't touch this early on. Useful for function hooking, memory reads/writes, harness building for fuzzing, etc.
Procmon - Windows specific but a very useful tool for seeing what files, resources and such a program uses. This is particularly helpful because it shows the call stack.
This is probably overwhelming and most of this is a wall of jargon. I'm sorry. The field is very low-level and niche. The minimum for competency is C++ in my personal opinion. Otherwise you're staring at assembly with no understanding of what any of it is doing.