Introduction to Software Reverse Engineering

Prerequisites: Students are expected to have a familiarity with programming, assembly, and enjoy problem solving. Prior experience programming in an imperative langage (e.g. C, C++, Java, Python, etc.). Knowledge of C and x86 assembly is desirable but not required.  ISTD students who have completed terms 4 and 5 will be well prepared for this class. Others will find it challenging. Those with an A in Digital World but have not completed terms 4 and 5 should be able to handle the challenges. We will not be programming assembly but we will be looking at programs and their disassembly. No previous reverse engineering experience is expected.

Load: Daily 4-hour sessions over 1 week

Time Outside Class: None

Software reverse engineering (RE) is the process of discovering undocumented internals in computer programs. RE is a critical activity in cyber operations not just in the government sector, but also in industry, finance, and anywhere that computer programs and information need to be protected. It is also fun and challenging! This course will provide a brief, hands-on, immersive introduction to RE.

The course will driven by hands-on labs with theory and visual aids as needed. On days one through four, students will cover static and dynamic analysis of programs. The class will then culminate on the fifth day, with students tackling a single large RE challenge.