Reverse engineering is a broad discipline that is used to solve many problems in areas like malware analysis, vulnerability discovery, protocal analysis and analysis of legacy systems. This course teaches the fundamental topics that make up reverse engineering and that are necessary for a complete grasp of the field. Following this course you will have a solid grasp of the fundamentals and be comfortable ready to advance to specialised fields such as vulnerbility analysis and exploitation, and malware analysis.
This course introduces reverse engineering from a first-principles approach and the first stage of the course is to understand how bits and bytes are used to represent data and code inside our computer systems. Secondly, the course covers x86-64 extensively and following this course the student will have a firm grasp on the assembly language itself and also how higher level languages manifest themselves in assembly language. Finally, the course will introduce how to use debuggers and disassemblers to reverse engineer binary applications.
This course is comprehensive and it covers a lot of knowledge and information. It takes a lot of effort to cover the foundations of a complex topic like reverse engineering, and to support this the course has more than 100 hands-on exercises that are tailor-made to optimise the learning experience.
- Understand how software is represented as data
- Understand the x86-64 architecture and language
- Be able to analyse binary applications using debuggers on both Linux and Windows
- Be able to analyse binary applications using disassemblers and decompilers, focusing on the Ghidra disassembler
This is an introductory course with a limited amount of prerequisites. We expect minor exposure to C programming, but this can also be learned during the course as we do not expect much more than being able to write a hello-world program.
Who should attend?This course is for people interested in getting started with reverse engineering and progressing in careers, e.g.
- Incident responders
- Threat analysts
- Malware analysts
- Vulnerability hunters
- Security engineers
- Any others who need to understand applications at the binary level