Reverse Engineering 2: Assembly

by Jason An

We'll be diving into x86_64/amd64 assembly this week. Being the dominant architecture in laptops, being able to reverse x86 executables is a crucial skill in reverse engineering, and still has many transferrable skills to reversing other architectures. For this week, we'll cover basic x86 instructions, and how to read and work with assembly.

Slides

Challenges

A set of challenges with increasing difficulty are deployed to platform.acmcyber.com to practice the concepts covered in the slides. You can filter for them on the platform by checking "rev" under "Categories", and "week 3" under "week". They are:

  • rev/bomb
  • rev/bobomb
  • rev/bomb2
  • rev/jabeglnz
  • rev/galfrekcehc

Resources

The following resources are great tools for some of the reversing challenges:

  • objdump command: A command that lets you disassemble an executable to extract the assembly
  • x86 reference: An HTML rendering of the Intel handbook containing details on every x86 instruction