General Information¶
Course description¶
Concepts, techniques, and tools to capture the structure, format, and representation of binary code, and transform them for higher level analysis. Use of static analysis including data-flow analysis, point-to analysis, and shape analysis to reason about the abstractions inside binary code. Use of dynamic binary instrumentation to trace the instruction level behavior of both benign and malicious programs. Use of virtual machine (VM) hypervisors to observe the whole system level behavior including OS kernels.
- Prerequisites:
Intermediate or higher level of C programming (CS3377)
Assembly language basics and computer architecture knowledge (CS3340)
OS Kernel and program loading procedure (CS4348)
Linux system basics
- Optional Courses:
Cybersecurity Attack and Defense Lab (CS4301 offered every Spring semester)
Compiler Design (CS4386)
Advanced Operating Systems (CS6378)
Who should take CS 6332.001?¶
CS 6332.001 is primarily mainly intended for both senior-level undergraduate and graduate students who are interested in obtaining skill sets required to thwart cyberattacks in the wild.
Over the course of lab exercises, students will become confident in competing in Capture-the-Flag (CTF) contests, conducting real-world bug hunting and getting bug bounty awards, and contributing to open-source projects by sending their patches via pull-requests.
Prerequisite Courses and Skills (Recommended)¶
- Courses
Computer Architecture and Assembly Language (cs2340) or equivalent
Data Structures and Introduction to Algorithmic Analysis (cs3345) or equivalent
Operating Systems (cs3377)
- Skills
Intermediary experience on Linux / Unix-based systems
Familiarity with C and memory operation (pointer)
x86 assembly
Class meetings¶
When: Tuesday, Thursday 4:00 - 5:15 PM
Where: In person ECSW 1.365
Office hours and recitation¶
Instructor will hold weekly office hours from 3:00 PM to 4:00 PM every Wednesday.
Meeting time may change at the instructor’s discretion with a prior announcement.
Class logistics¶
Class attendance policy: Students are expected to attend all classes on time and actively participate hands-on labs. We will penalize students’ absence or tardiness without a proper reason.
Online Discussion¶
Online discussion is strongly encouraged, and it will help you a lot in solving lab problems.
The class uses Discord channels as a main communication channel to share class materials. You can post your questions, ideas and thoughts and have discussions with mentors and other students. We sent the invitation via class emails or you can contact the instructor or one of TAs to join the Discord channel.
Misconduct Policy¶
CS6332.001 strictly follow the plagiarism policy (read UTD’s Student Conduct CODE).
Important
Cheating vs. collaboration
The collaboration is a desirable thing. Whereas the cheating is considered a very serious offense and is prosecuted. Vigorous prosecution requires that you be advised of the cheating policy of the course before the offending act. The following are examples how the class will define for the cheating and collaboration.
- The policy is simple: don’t cheat:
Never share code or text on the project.
Never use someone else’s code or text in your solutions.
Never consult potential solutions on the Internet.
- On the other hand, for this class, you are strongly encouraged to:
Share ideas.
Explain your code to someone to see if they know why it doesn’t work.
Help someone else debug if they’ve run into a wall.
If you obtain help of any kind, always write the name(s) of your sources.
Staffs¶
Instructor: Kangkook Jee
- TAs:
Joshua D. Wiedemeier
Takemaru Kadoi