Reverse Engineering 2023/2024

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: f552@ua.pt), João Paulo Barraca (email: jpbarraca@ua.pt), and José Luis Azevedo (email: jla@ua.pt). Teaching staff will be available by email and Discord, especially during the allocated tutoring slots. The use of the Teams platform for direct communication between students and with professors is highly recommended. Official course contents will be available on this page, while grades will be available through the University Elearning platform (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 or Portuguese according to the student preference.

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

Important Dates

  • Final Exam: June 24th, 10h

  • Assignment 1 - March 21st, 23:59

  • Assignment 2 - May 9th, 23:59

  • Assignment 3 - June 16th, 23:59

  • Return of PCB Board and remaining equipment until June 18th 18:00 at IEETA.

  • Recoursal - Practical Assignments: July 7th 23.59

  • Recoursal - Exam: July 10th, 10:00

Planning

According to the UA academic schedule, classes will be lectured from February 14th, until June 5th. 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 February 16 Intro to Reverse Engineering File Types
2 February 23 Android Static Analysis
3 March 1 Android Binary and Web Apps
4 March 8 Android Dynamic Analysis
5 March 15 Binary objects - decompilation
6 March 22 Static analysis and data structures
7 April 5 Dynamic Analysis and emulation
8 April 12 Dynamic Analysis and emulation
9 April 19 Obfuscation techniques
10 April 26 Decomposition of hardware devices
11 May 10 Communication interfaces
12 May 17 Serial and JTAG interfaces
13 May 24 I2C and SPI
14 May 31 TBD

References

Software

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

A Reverse Engineering Box will be kept in github: https://github.com/jpbarraca/revbox/tree/main

Android

Binary Analysis

Debuggers

Decompilers/Disassemblers

File Manipulation

Hex Editors

Instrumentation and Emulation

Websites

Books

Videos

Next