Reverse Engineering 2021/2022

Subject lectured to the 1st year of the Masters in Cybersecurity, providing an entry into reverse engineering processes, tools and methodologies.

This edition will be lectured by professors Bernardo Cunha (email:, João Paulo Barraca (email:, and José Luis Azevedo (email: Teaching staff will be available by email and MS Teams, especially during the allocated tutoring slots. The use of the MS Teams platform for direct communication is highly recommended. Official course information will be available in this page, while grades will be available through restricted areas (Elearning).

Classes will be lectured in the Portuguese language, unless there is a foreign student attending. In this case English will be used. All lecture notes and laboratory guides will be made available in English. Examinations will be made available in either English and Portuguese.

Prospecting students should be aware that this subject requires some knowledge and comprehension of several topics in the areas of networking, software and operating systems, such as: x86/AMD64 assembly, Java, Android, Linux, Python, Virtual Machines, basic electronics. Although lacking specific knowledge is not critical, the tasks proposed expect you to have some base knowledge on those topics.

Important Dates

  • Final Exam: July 1st, 10h

  • Assignment 1 - April 17th, 23:59

  • Assignment 2 - May 27th, 23:59

  • Assignment 3 - June 30th, 23:59


According to the UA academic schedule, classes will be lectured from March 7th, until June 23rd. The subject is composed by a 3 hours of theoretical/practical lectures, and 1 hour of optional tutoring, making a total of 4 hours per week of contact hours. It is expected that students spend an additional 2-3 hours per week exploring the concepts presented during the lectures and preparing the assignments. It is also expected them to make use of the tutoring times if they have questions or require some assistance. Please also use this times to validate the execution of the assignments.

The topics lectured in each class should be as presented in the following table. Changes may happen, so please check it frequently.

# Date Topic
1 March 11 Course Guidelines
2 March 18 File structure and Polyglots
3 March 25 Android Application Structure
4 April 1 Android Static Analysis
5 April 8 Android Dynamic Analysis
6 Abril 12 Binary objects - decompilation
7 April 22 Static analysis and data structures
8 May 6 Dynamic Analysis and emulation
9 May 13 Obfuscation techniques
10 May 20 Decomposition of hardware devices
11 May 27 Communication interfaces
12 June 3 Serial and JTAG interfaces
13 June 17 I2C, SPI and CAN



The following list presents useful software for Reverse Engineering. There is no affiliation with any of the tools presented. Other curated lists software lists can be found here


Binary Analysis



File Manipulation

Hex Editors

Instrumentation and Emulation