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.
| Monday | Tuesday | Wednesday | Thursday | 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 |