Getting Started Learning Reverse Engineering | Tips for Complete Beginners

Marcus Hutchins
6 May 202109:20

Summary

TLDRIn this video, the speaker discusses how to get started with reverse engineering, emphasizing that it's a blend of various skills, particularly programming and understanding assembly language. Drawing from personal experience, the speaker recommends learning assembly, particularly x86, and highlights the importance of having a background in programming languages like C. Resources for learning are suggested, with an emphasis on finding what works best for the individual. The speaker also advises learning high-level programming languages and using practical approaches like writing code and analyzing it with a disassembler to accelerate the reverse engineering learning process.

Takeaways

  • πŸ˜€ Reverse engineering is not a single skill, but a combination of different skills, with programming and software engineering being essential.
  • πŸ˜€ If you're a beginner, reverse engineering can be overwhelming because many tutorials assume you already understand assembly language.
  • πŸ˜€ Starting with assembly language tutorials is a good first step. You don't need to program in assembly; just learn to read it.
  • πŸ˜€ The type of assembly language to learn depends on the platform you are working with (e.g., ARM for mobile, MIPS for routers, x86/x64 for Windows).
  • πŸ˜€ Learning x86 assembly is a great starting point because it’s a foundation for understanding x64 assembly as well.
  • πŸ˜€ There is no single best resource to learn assembly. It’s important to try different formats, including written tutorials, videos, and practical exercises.
  • πŸ˜€ Learning comes in four categories: audio, visual, written, and practical. Experimenting with different methods will help you figure out which one works best for you.
  • πŸ˜€ Don’t disregard resources just because you don’t understand a single concept; seek out explanations for unfamiliar terms and continue learning.
  • πŸ˜€ Understanding a high-level programming language like C will help you interpret assembly more easily and better understand the software you are reverse engineering.
  • πŸ˜€ Writing your own code and analyzing it with a disassembler or debugger helps you understand how high-level code translates to assembly patterns.
  • πŸ˜€ Supporting content creators by liking and sharing videos helps boost their visibility, which benefits the entire learning community.

Q & A

  • Why is it difficult to get started in reverse engineering?

    -Reverse engineering is not a single skill but a collection of interconnected skills, primarily centered around programming and an understanding of software engineering. Without prior knowledge in these areas, reverse engineering can seem confusing and overwhelming.

  • What is the core skill needed to get into reverse engineering?

    -The core skill for reverse engineering is programming. A solid understanding of programming concepts and software engineering principles is essential, as most reverse engineering tutorials assume at least basic knowledge of assembly language.

  • What programming languages are recommended for someone starting in reverse engineering?

    -For beginners, it's recommended to learn assembly language and a high-level language like C. Understanding assembly helps in reading the machine-level code, and learning C helps in understanding high-level software structures, which is useful for reverse engineering.

  • Do I need to learn how to write assembly code to reverse engineer effectively?

    -No, you don't need to learn how to program in assembly. The goal is to understand how to read assembly code. You might find that a rudimentary understanding is enough to get started, and learning to program in assembly can be a gradual process.

  • What are the key differences between x86 and x64 assembly languages?

    -x86 assembly is 32-bit, while x64 assembly is 64-bit. The key difference is that x64 is an extension of x86, so learning x86 assembly can get you 99% of the way to understanding x64 assembly.

  • How can I learn assembly effectively?

    -The best way to learn assembly is through a mix of resources: reading tutorials, watching YouTube videos, and trying practical exercises. It’s important to explore different formats to find what works best for your learning style.

  • Why should I learn a high-level programming language like C before diving into reverse engineering?

    -Learning a high-level programming language like C helps you understand software structures and logic at a higher level, which will save you time during reverse engineering. It allows you to quickly identify patterns and understand how low-level assembly translates to more familiar programming constructs.

  • What role does open-source software play in reverse engineering?

    -Open-source software is often written in C, and by understanding C, you can reference existing open-source code when reverse engineering software. This allows you to recognize known patterns or libraries in the code, speeding up the reverse engineering process.

  • What is the benefit of debugging your own code when learning reverse engineering?

    -By debugging your own code, you already know what it does. Observing how your code is translated into assembly using a disassembler helps you understand the mapping between high-level instructions and assembly patterns, which aids in reverse engineering.

  • How can I identify useful resources when learning reverse engineering?

    -If you come across a resource that doesn't fully explain something, don't disregard it immediately. Instead, look up the specific term or concept you don't understand and return to the resource once you have the missing information. This will help you build a more comprehensive understanding over time.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Reverse EngineeringAssembly LanguageProgramming SkillsLearning TipsC ProgrammingDebugging ToolsMalware AnalysisCoding ResourcesTech EducationSoftware Engineering