Reverse Engineering

This course focuses on software reverse engineering. It presents the fundamental concepts of static program analysis (basic blocks, call graphs, inter-procedural analysis, etc.) and dynamic program analysis (dynamic instrumentation, execution environment, etc.). The course also discusses program analysis challenges such as code obfuscation. The course describes multiple reverse engineering applications such as malware analysis, patch analysis to identify vulnerabilities and analysis of an embedded system’s firmware.