Schedule

The schedule will change as the course progresses, in part based on student interests. If you are particularly interested in some topic not covered here, send mail to the course staff.

MondayTuesday WednesdayThursday Friday
Aug 24 Aug 25
LEC 1: Course Intro & Preliminary Rev. Engineering #1 lec01.pptx
Preparation: What really happened on Mars Rover Pathfinder?
Preparation: Nearly 3 Years Later, SolarWinds CISO Shares 3 Lessons From the Infamous Attack
Resource: class onboarding
First day of the class
Aug 26 Aug 27
LEC 2: Code compilation and binary generation; system architecture basic; calling conventions and binary ABI lec01-x86-assembly.pptx lec01-tools.pptx
Preparation: Smashing The Stack For Fun And Profit
Resource: x86 Assembly Guide
Resource: Intel Code Table
Resource: Assembly-HOWTO
Resource: Intel vs AT&T format
Resource: Linux assemblers: A comparison of GAS and NASM
Assigned: Unit 1
Aug 28
Aug 31 Sep 1
LEC 3: x86 assembly I; intro to debugging & reversing toolchains PPTX
Resource: Intel® 64 and IA-32 Architectures Software Developer’s Manual
Resource: x86 and amd64 instruction reference
Resource: GDB tutorials gdb1, gdb2
Resource: pwndbg, gef
Resource: List of useful tools for the class
Sep 2 Sep 3
LEC 4: x86 assembly II; calling conventions; data encoding
TUT 1: pwntools tut-pwntools.md
Preparation: Read Where the top of the stack is on x86
Preparation: Read Stack frame layout on x86-64
Resource: Radare2 resources
Resource: how debugger works (part1) (part2) (part3)
Sep 4
Sep 7 Sep 8
LEC 5: Basic system and binary attacks; ELF format; loading and dynamic linking programs
Resource: ELF loading and linking
Sep 9 Sep 10
LEC 6: x86 shellcoding; how system call works; basic system defenses PPTX
Preparation: Read Anatomy of a system call Part1, Part2
DUE: Unit 1
Resource: shellcoding tutorial
Resource: shellcode-template.tar.bz2
Resource: Shellcodes database
Resource: Inline assembly
Assigned: Unit 2
Sep 11
Sep 14 Sep 15
LEC 7: Program loading and process instantiation lec04.pptx
Sep 16 Sep 17
LEC 8: Code hijacking attacks I; stack overflow attack; shellcoding attack
Resource: vimrc, .gdbinit, .tmux.conf .pythonrc.py
Resource: x86 (32-bit) syscall table
Resource: x86 (64-bit) syscall table
Resource: Core dump
Sep 18
Sep 21 Sep 22
LEC 9: Code hijacking attacks II; system mitigations
TOPIC 2: Stack canaries
TOPIC 3: DEP/NX
TOPIC 4: ASLR intro
Assigned: Unit 2-2
Sep 23 Sep 24
LEC 10: Code encoding and binary disassmebly challenges
Preparation: The Anatomy of an Executable, The ELF Object File Format by Dissection
Sep 25
Sep 28 Sep 29
LEC 11: System security mitigation
DUE: Unit2
Resource: Linux x86 Program Start Up
Resource: How to get run ELF binary, How programs get run
Resource: Anatomy of a Program in Memory
Assigned: Unit3 Defense Part Description
Sep 30 Oct 1
LEC 12: ASLR defenses; ROP attacks and defenses lec05-process-start
TUT 5: inscounts example tutorial
Resource: LiveOverflow: Weird ROP
Resource: Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation
Resource: Pintool tutorial
Resource: PIN User guide
Oct 2
Oct 5 Oct 6
LEC 13: Binary Instrumentation with PIN lec07-pintools.pptx
Resource: The Performance Cost of Shadow Stacks and Stack Canaries
Oct 7 Oct 8
LEC 14: SR/AR/AW and Format String attacks lec07-fsv.pptx
Preparation: Weird Machine
Oct 9
Oct 12
Mid-term week
Oct 13
Mid-term week
Oct 14
Mid-term week
Oct 15
Mid-term week
Oct 16
Mid-term week
Oct 19 Oct 20
LEC 15: Binary instrumentation and binary translators I
DUE: Unit3
Assigned: Unit4
Oct 21 Oct 22
LEC 16: Inline reference monitors
Preparation: Inline reference monitors
Preparation: libdft
DUE: Unit4 Part1
Oct 23
Oct 26 Oct 27
LEC 17: Inline reference monitors II
Oct 28 Oct 29
LEC 18: Virtualization basics and principles I
Oct 30
Nov 2 Nov 3
LEC 19: Virtualization basics and principles II
Nov 4 Nov 5
LEC 20: Code emulation and light-weighted virtualization (e.g., containers)
DUE: Unit4 Part2
Assigned: Unit 5
Nov 6
Nov 9 Nov 10
LEC 21: Special topic I --- HDL decompilation and security analysis
Preparation: PyLingual: Toward Perfect Decompilation of Evolving High-Level Languages
Nov 11 Nov 12
LEC 22: Static binary rewriting and decompilation I
Preparation: Reassembly is Hard: A Reflection on Challenges and Strategies
Nov 13
Nov 16 Nov 17
LEC 23: Static binary rewriting and decompilation II
Preparation: Read Running the “Reflections on Trusting Trust” Compiler
Preparation: Read Reflection on Trusting Trust by Ken Thompson, Turing Award lecture, 1984.
Nov 18 Nov 19
LEC 24: Speicial topic II -- Data-driven Analysis for Cybersecurity; Provenace-based ML Security
Nov 20
Nov 23
Thanks giving
Nov 24
Thanks giving
Nov 25
Thanks giving
Nov 26
Thanks giving
Nov 27
Thanks giving
Nov 30 Dec 1
LEC 25: Symbolic execution and program fuzzing
Preparation: angr: a platform for binary analysis
Dec 2 Dec 3
LEC 26: Hardware security issues and mitigations
DUE: Unit 5
Dec 4
Dec 7 Dec 8
LEC 27: Final project discussion
Dec 9 Dec 10
LEC 28: Final exam preparation and review
Dec 11
Final week
Dec 14
Final week
Dec 15
Final week
Dec 16
Final week
Dec 17
Final week
Dec 18
Final week