Introduction

In the first part of this course we will learn how to "crack" programs, i.e. how hackers break into software to extract secrets, remove license checks, etc. In the second part we will use this knowledge to learn how to defend against such attacks.

Learning about this type of computer security is important because many current systems are vulnerable to cracking attacks. This includes computer games, the national power grid, military systems, medical systems, etc.

To follow this course you need to know C and Unix. Some understanding of assembly code, cryptography, and compilers is also useful, but not necessary.

The course will have practical homework exercises where you will crack small programs, and use tools to protect against cracking.

The course will be given in English.


 

Lectures


 

Assignment 1


 

Assignment 2


 

Assignment 3/Final Exam