Reverse Engineering & Low-Level Program Analysis

Reverse Engineering & Low-Level Program Analysis

Faculty of Engineering
Ph.D. Program In Electronic and Computer Engineering


Lecturer: Davide Maiorca - davide.maiorca[at]unica[dot]it

Language: English

Target students: Ph.D. Students

Goal of the course.
Reverse Engineering (RE) is a discipline that can be employed to analyze the functionality of programs without having the related source code. Thanks to RE, it is possible to understand the bugs of a program, to extract possible hidden functionalities and also to change the whole behavior of the program itself. This course will provide the basic tools to understand and analyze the low-level behavior of a program. In particular, we start by providing an overview of programs written in Assembly X86/64, as well as static and dynamic techniques for their analysis. Then, we will also analyze programs written in MIPS and ARM. The course will employ a game-based approach, where students will consolidate the topics through challenges taken from world of capture-the-flag (CTF).
  • 8 hours – Assembly X86/64 Basics - Static and Dynamic Analysis - Practice Exercises
  • 8 hours – Fundamentals of ARM and MIPS - Practice Exercises


Registrations for the course are open: To register please send a mail to with subject [REVERSE] Registration - NAME_SURNAME_PHD_YEAR

Update 05/09: The first lecture of the course will be on Tuesday, Sept 15th (Online only), from 10:00 to 14:00. A link to the lecture will be sent to those who registered the course

Detailed Table of Contents:
X86-64 Reverse Engineering:
- Structure of ELF files
- Process Structure in Memory
- Registers and Opcodes
- Conditional and control instructions
- Execution of functions and subroutine calls
- Disassembling and Decompilation tools
- Dynamic Analysis fundamentals
- Practice exercises
MIPS Reverse Engineering:
- Introduction to the MIPS architecture
- MIPS cross-compiling and execution
- Opcodes and registers
- Loading and storing
- Control instructions, branching and setting
- Calling functions - structure of the stack
- Practice exercises
ARM Reverse Engineering:
- Introduction to the ARM architecture
- ARM cross-compiling and execution
- ARM vs X86 registers
- ARM instructions
- Loading and storing
- Branches
- Function calls and stack
- Practice exercises
Credits:  2


Important Dates (2020):

The seminar will be held between September 15th and October 2nd 2020.