Should I Learn x86-64 Assembly or Focus on C/C++ for Reverse Engineering?

0
5
Asked By MellowOrbit7 On

I'm interested in reverse engineering and want to know how much assembly I really need. I studied 8086 assembly at university, so I already understand the basic concepts. For x86 reverse engineering, should I mainly learn the differences in 32-bit and 64-bit registers, calling conventions, and newer instructions before moving on to C/C++? Or is it better to study x86 and x86-64 assembly in more depth first? I'm also wondering how important C and C++ are when working with decompilers, debuggers, optimized code, and cases where the decompiled output is inaccurate.

3 Answers

Answered By VectorTurtle9 On

C is extremely useful because decompilers often present something close to C, and understanding that reconstructed code helps you follow the program’s higher-level logic. However, decompiled output is only an interpretation. When types, control flow, optimization, or compiler transformations make the output confusing, you need assembly to verify what the machine is actually doing. Optimized and vectorized code can be difficult, so being comfortable switching between C and assembly is the practical approach.

MellowOrbit7 -

I was thinking the same thing. Decompiled code is easier to read, but I’ll need assembly when the output is incomplete or misleading.

Answered By GraniteMango3 On

Assembly is important when debugging existing software, stepping through instructions, examining calling conventions, and understanding behavior that a decompiler cannot represent exactly. C and C++ are also valuable, especially for recognizing common compiler patterns and writing your own analysis or debugging tools. You don’t have to choose one language: learn enough C/C++ to understand program structure and enough x86-64 assembly to validate the low-level details.

Answered By CopperLynx42 On

Learn both, but you don’t need to master every instruction before starting. Your 8086 background gives you the basic mental model, and x86-64 mainly adds more registers, a different calling convention, and newer instruction sets. Focus on registers, memory access, stack frames, function calls, control flow, and how data is passed between functions. Then practice with real binaries and debuggers.

MellowOrbit7 -

That makes sense. I’ll review x86-64 fundamentals and then learn by working through actual programs instead of waiting until I know every instruction.

Related Questions

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.