Outline: Introduction to the course Crash course in x86 assembly language Crash course in using IDA * Hands-on session introducing attendees to the basic features of IDA The "syntax" unit Compilation of C * Compilation of functions, function calls, etc * * Exercises * Compilation of basic types * * Exercises in type reconstruction * Compilation of arithmetic operations * * Exercises in decompilation of arithmetic, basic types, etc * Complex bitwise/linear arithmetic * * Exercises in comprehending complex arithmetic * Compilation of conditional statements * * Exercises in decompiling conditionals * Compilation of compound conditionals * * Exercises in decompiling compound conditionals * Compilation of if-statements, etc. * * Exercises in decompiling if-statements, etc. * Compilation of loops * * Exercises in decompiling loops * Compilation of switch statements * Compilation of nested conditionals * * Exercises in decompiling nested conditionals * Compilation of structures Linkers and loaders Compiler optimizations * Exercises in recognizing compiler optimizations? C++ * Hands-on sessions showing the analysis of C++ code The "semantics" unit Introduction to manual analysis * Lengthy hands-on session showing attendees how to analyze code statically Finding interesting locations in binaries * Exercises Deducing information by reading code * Exercises Inferring information from context * Exercises Putting it all together Exercises in analyzing entire binaries