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 & Master Degree Students in Computer Engineering, CyberSecurity and Artificial Intelligence

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 MIPS reversing - Practice Exercises
  • 8 hours – Fundamentals of ARM reversing - Practice Exercises


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:  3 for Ph.D. Students and 2 for Master Degree Students


Registrations for the seminar are open, and the course will start on July 12th, 2021. To register please send fill in this form by July 10th 2021.

Important Dates and Seminar Schedule (2021):

The seminar will be held in the following days of July:

July 12th, July 16th, July 19th, July 23th, July 26th and July 30th

Time: 10 to 14 (4 hours lecture/day)