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 25 First day of the class |
Aug 26 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 |
Aug 27 | Aug 28 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 |
Aug 29 |
Sep 1 | Sep 2 LEC 3: x86 assembly I; intro to debugging & reversing toolchains 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 Resource: GNU Make Manual Resource: Intel vs. AT&T syntax Assigned: Unit 1 |
Sep 3 | Sep 4 LEC 4: x86 assembly II; calling conventions; data encoding 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 5 |
Sep 8 | Sep 9 LEC 5: Basic system and binary attacks; ELF format; loading and dynamic linking programs PPTX Resource: ELF loading and linking |
Sep 10 | Sep 11 LEC 6: x86 shellcoding; how system call works; basic system defenses DUE: Unit 1 Assigned: Unit 2 |
Sep 12 |
Sep 15 | Sep 16 LEC 7: Program loading and process instantiation Preparation: Read Anatomy of a system call Part1, Part2 Resource: shellcoding tutorial Resource: shellcode-template.tar.bz2 Resource: Shellcodes database Resource: Online assembler/disassembler Resource: Inline assembly Resource: shellcode-template-arm.tar.bz2 |
Sep 17 | Sep 18 LEC 8: Code hijacking attacks I; stack overflow attack; shellcoding attack |
Sep 19 |
Sep 22 | Sep 23 LEC 9: Code hijacking attacks II; system mitigations DUE: Unit2 Assigned: Unit3 |
Sep 24 | Sep 25 LEC 10: Code encoding and binary disassmebly challenges Resource: ARM architecture reference manual Resource: ARMv7 cheatsheet Resource: ARM reference Resource: ARM thumb |
Sep 26 |
Sep 29 | Sep 30 LEC 11: System security mitigation Resource: Linux mov is Turing-complete |
Oct 1 | Oct 2 LEC 12: ASLR defenses; ROP attacks and defenses Resource: Weird Machine Resource: The Anatomy of an Executable, The ELF Object File Format by Dissection Resource: Linux x86 Program Start Up Resource: How to get run ELF binary, How programs get run Resource: Anatomy of a Program in Memory |
Oct 3 |
Oct 6 | Oct 7 LEC 13: ROP and Format String attacks DUE: Unit3 Resource: Reflection on Trusting Trust Resource: Running the “Reflections on Trusting Trust” Compiler |
Oct 8 | Oct 9 LEC 14: Binary Instrumentation with PIN TUT 1: inscounts example tutorial Resource: LiveOverflow: Global Offset Table (GOT) and Procedure Linkage Table (PLT) - bin 0x12 Resource: Read Pin - A Dynamic Binary Instrumentation Tool Resource: Pintool tutorial Resource: PIN User guide Resource: inscounts.tar.gz |
Oct 10 |
Oct 13 Mid-term week |
Oct 14 Mid-term week |
Oct 15 Mid-term week |
Oct 16 Mid-term week |
Oct 17 Mid-term week |
Oct 20 | Oct 21 LEC 15: HDL Bytecodes |
Oct 22 | Oct 23 LEC 16: PYC decompilation challenges Resource: libdft |
Oct 24 |
Oct 27 | Oct 28 LEC 17: Virtualization and code instrumentation |
Oct 29 | Oct 30 LEC 18: Code emulation and light-weighted virtualization |
Oct 31 |
Nov 3 | Nov 4 LEC 19: Latest development on system security defenses |
Nov 5 | Nov 6 LEC 20: Secure enclaves, CFI, shadow stacks |
Nov 7 |
Nov 10 | Nov 11 LEC 21: Binary instrumentation and binary translators I Resource: libdft Resource: SoK: Using Dynamic Binary Instrumentation for Security |
Nov 12 | Nov 13 LEC 22: Binary instrumentation and binary translators II |
Nov 14 |
Nov 17 | Nov 18 LEC 23: Advanced topic I -- Computing in Space |
Nov 19 | Nov 20 LEC 24: Advanced topic II -- Computing in Space |
Nov 21 |
Nov 24 Thanks giving |
Nov 25 Thanks giving |
Nov 26 Thanks giving |
Nov 27 Thanks giving |
Nov 28 Thanks giving |
Dec 1 | Dec 2 LEC 25: Advanced topic III -- Graph analysis for Cybersecurity; Provenace-based ML detectors |
Dec 3 | Dec 4 LEC 26: Class overview and summary (Last day of class) |
Dec 5 |