Tutorial: LLVM for Security Practitioners

At the 2022 IEEE Secure Development Conference (SecDev 2022)
1:30 PM - 5:00 PM, Tuesday, October 18
Room: Salon 1

John Criswell, Ethan Johnson, and Colin Pronovost
University of Rochester, Department of Computer Science

→ Click here for tutorial slides ←

In this tutorial session, you will learn how to write a pass in LLVM to instrument loads and stores during compilation of a program.

You will need:

1) A computer on which you can run a virtual machine during the tutorial session

2) Some familiarity with the C++ programing language

LLVM is written in modern C++, and C++ is the primary language used for writing passes and other software that works with LLVM. Bindings existing for using LLVM in other languages, but the native C++ interface is the most flexible and well-maintained, so we will be using that in this tutorial.

To get the most out of this tutorial, you should:

3) A development environment for writing LLVM passes

Getting a development environment set up for writing your own LLVM passes isn't too hard in theory, but it can take a fair amount of time (LLVM+Clang is a large codebase and can take over an hour to compile from source) and might be a bit daunting for those unfamiliar with the LLVM ecosystem. Since we'll be walking you through working with LLVM during the live tutorial, we've prepared a pre-canned Linux-based virtual machine image with a ready-to-go development environment for you to participate in the tutorial.

→ You can download the virtual machine image and read instructions on how to use it here. ←
(Note: the instructions and VM say "2019" on them since they are unchanged from earlier versions of the tutorial. This is the correct version to use for the 2022 tutorial.)

Page © 2019-2022 Ethan Johnson