This course will cover a wide range of topics in the area of Systems Security. A computer system is composed by software, hardware, policies, and practices. Systems security involves both designing and building secure systems, as well as improving and evaluating the security of existing systems. This course is giving a particular emphasis into providing hands-on experience to students through building, attacking, and securing systems. The class is programming intensive. Those who take the class should be skilled programmers and should have some experience with the C programming language and programming on a Linux environment. It is recommended that students are also familiar with the assembly language and with network and operating system basics.
Detailed information about the course can be found in the syllabus.
Course Schedule and Readings
9/7/20 No class (Labor day)
9/14/20 How software executes
- Computer Science from the Bottom Up - The Toolchain
- Computer Science from the Bottom Up - Behind the process
- Executable and Linkable Format 101 - Part 1 Sections and Segments
- Anatomy of a Program in Memory
- The Memory Layout of a 64-bit Linux Process
9/21/20 Assembly, Call Stack, and Stack Smashing