A basic 2.5h workshop to demystify what x86 assembly does.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lessons
.gitignore
README.md

README.md

Basic Reverse Engineering Course (for Sprout 2018)

A basic 2h workshop on Reverse Engineering, created for Sprout for NUSHS 2018. As this is a basic introduction, no advanced concepts would be covered. This workshop would not cover pwn topics, just basic reverse engineering. More advanced topics could be found under @nn_amon's linux-exploitation-course.

Pre-Requisites

A computing background would help with the initial understanding, however it is not mandatory as the basics of programming in C has been covered in chapter 0.

A working copy of IDA-PRO could be downloaded for free. This would aid in the reverse engineering process. Pen and paper x86 code would be given out on the day itself for student who wants to decompile code by hand.

Online Tools

Alternatively, several free online decompilers are also available. I would highly recommend onlinedisassembler as a simple starting point. Their graph view allows code to the traced very easily.

At the same time, an online C compiler would be useful as well, and for that I highly recommend repl.it. It allows for very speedy compilation and prototyping.

Lastly, for the best of both worlds which shows you the disassembly at the same time as you're typing it, I highly recommend godbolt. They even colour code the pieces of code to show you which bits of code gets turned into which bits of machine language.

Syllabus

  1. An Intoduction to C
  2. Reading x86
  3. Functions
  4. Loops and recursion in x86
  5. Final Exercise