Introduction to Reverse Engineering

Date: 2024-11-27

Difficulty: Beginner to Advanced

Delivered By: Dan Hoang

Overview

Getting programs to misbehave is the basis of offensive security (and malicious threats). Unfortunately, we don't typically have access to the source code of said programs. Thus: reverse engineering. This is the act of looking at a compiled program, and attempting to understand how it functions, as well as attempting to recreate something close to the original source code.

Once we know how a program functions, we move on to binary exploitation. This is the act of using carefully crafted inputs to cause a program to do something it wasn't intended to; the most basic of such attacks being a buffer overflow. We will be covering tools and techniques for both, as well as how to spot vulnerable code.

Prerequisites

A Kali VM is recommended for this session. The following script will install the necessary tools for this session, it can also be found at https://go.sucss.org/binexptools.

To install the tools, run the following commands in your terminal:

curl -sSL https://go.sucss.org/binexptoolsraw | tr -d "\r" | tee "install.sh" | sh
source ~/.zsh/path

Challenges

There are 2 sets of challenges for this session:

  • Reverse engineering challenges located here (these are generally easier, so we recommend starting with these)
  • Binary exploitation challenges located here