LLVM is a modular compiler infrastructure that is used to write security-aware compilers, sophisticated fuzzers, large-scale vulnerability discovery tools, symbolic executors and much more. This course introduces LLVM with a focus on security tool development.
The course is centred around two core parts. First, it will cover the internals of LLVM and how to write applications that use LLVM to solve program analysis problems. Second, it will introduce the student to several state-of-the-art security tools that use LLVM. We will study these tools from both a black box perspepctive by using and applying them on software, as well as study their internals by reading and extending their source code.
This course is not for beginners, and you should feel comfortable with programming in C/C++, including programming up against large code bases, and reading assembly language to do this course.
Understanding LLVM internals including LLVM Intermediate Represenation
Writing program analysis and program transformation tools to solve software security issues.
Understanding how LLVM is used by several state-of-the-art research tools.
Apply your knowledge in a pragmatic way to develop your own tools.
Good understanding of computer systems and assembly-level reasoning. The course is heavily focused on development and exposure to C/C++ coding is a must. Experience with assembly language is assumed but deeper knowledge about compiler internals is not required.
Any others who need to develop automated techniques to reason and instrument assembly-level code.
The course is divided in the following main sections. Each section is composed of a myriad of videos, notes, exercises, assignments and other forms of interactive learning.
Hands-on exercises of varying difficulty
24/7 access to platform and self-paced course
6 months subscription to online training platform
Instructor support throughout entire course
Course updates during subscription period
Get in touch today with any questions that you might have.Contact Us