European Master in Software Engineering

Code obfuscation -- a Hacking view on program analysis and understanding


The course will introduce the theory and practice of code protection technologies with particular emphasis in the relation between program analysis and code obfuscation. The former is devoted to understand programs while the latter is devoted to make this understanding hard if not even impossible.


  1. Obfuscation: informal definition, the battleground in the large, code protection technologies, examples in malware & IP/key protection. The market: economic & sociological impact
  2. Theory of Compilers: Ordered structures, complete lattices, fix-points, Semantics, Interpreters, Specializers. Futamura projections. Examples in Scheme
  3. Theory of code obfuscation: PTM, one-way functions, point functions, VBB, possibility and impossibility results
  4. Abstract interpretation based program analysis. Soundness and completeness
  5. Constraining attackers in an abstract interpreter. Examples: tracing & collecting, data/control-flow, profiling, monitoring, intervals, octagons, Karr's linear constraints
  6. Obscuring code: hacking an abstract interpreter. Some theory & hands-on: Imp vs Interproc
  7. Obscuring code: twisting a concrete interpreter to hack an abstract interpreter: code flattening, anti program slicing & anti monitoring
  8. Hands-on: Scheme/C-Tigress
  9. Challenges & open problems

Assessment Method

Exam will be made in a final contest where students will have to produce obscured code out of some plain code.





Students will need to have a laptop/computer to install tools and perform practical exercises.

Recommended Reading


Lecture Theatre


Tuition Language