Simple learning plan for IDA + assembly when starting from zero (no C)

Hey everyone,

I’m 17 and just starting to learn reverse engineering with IDA. I have zero experience in C, but I’m really interested in assembly (x86/x64) — I love understanding exactly what each instruction does at a low level.

Is it okay to start learning reverse engineering and assembly directly with IDA without knowing C first? Or is it better to learn some C before diving into ASM?

I’d love to hear your advice or personal experience. Thanks!

Hi @Boubgflop,

One of the IDA developers here, ex reverse engineer, though I am posting based on my experience, which does not necessarily reflect the view of the entire company.

The answer really depends on what you want to achieve. I assume you have some experience with other programming languages different than C.

If reverse engineering is a hobby, and you’re just interested to look at assembly instructions, without even using the decompiler, then I would suggest to just have fun and stop caring so much about C or other prerequisites, jump in and enjoy the ride! It is okay to start learning reverse engineering like that, if you’re doing it for fun.

However, if you see yourself doing this long-term, or perhaps at a CTF level, then it is advisable to familiarize yourself with a couple of C concepts, such as pointers, loops, if statements, switch jump tables, calling conventions. Reverse engineering involves much more than just being able to understand individual assembly instructions. Actually, a lot of folks around here might tell you to use the decompiler, which produces a C-like pseudocode. Truth be told, even if you avoid C in the beginning, there’s a big chance you’ll naturally bump into these concepts over and over again, until you become somewhat familiar with C without even planning to. I had a good understanding of C and C++ before I started reverse engineering, and it has helped me tremendously.

I wish you good luck with your learning experience!

1 Like

Hi,

I initially started with a form of Basic when I was 15 (yeah… mid 80…), moved to 8085 assembler, 9900 assembler with the TI 99/4a with Basic and then over to 680x0. At that time I also started my electrical engineering study and I learned C on a OS-9/68k. Later moved on to HP-UX.
It has always been a combination of both assembler and C. Later C++ came in the picture. The advantage of C is that you are programming relately close to the iron and yet be able to you high level concepts like pointers, loops etc. as mentioned by @apetenchea .

I think personally a dual track when starting reverse engineering: learn about assembler and C/C++ as well. If you have any interest in hardware as well then this combination is golden. Also, check at a certain point other types of processors as well. Btw, exploring the x86/x64 using an actual debugger will even more enrich the experience.

Go and explore, especially at you age take the red pill and dive deep into the rabbit hole! And maybe we can convert you to turn to the Dark Side :grinning_face:

Enjoy!

1 Like