Skip to content

LLVM-based compiler to create artificial software diversity to protect software from code-reuse attacks.

License

Notifications You must be signed in to change notification settings

project-imas/multicompiler

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLVM Multicompiler Patches

This repo is based off the official LLVM git mirror: http://llvm.org/git/llvm.git. We have added passes which randomize the implementation details of the code to combat code-reuse attacks.

Installation

Follow the LLVM instructions from http://llvm.org/docs/GettingStarted.html#git-mirror but substitute this repo for the llvm.git repo and https://github.com/securesystemslab/multicompiler-clang for the clang.git repo.

Options

General Options

-fdiversify - Enable diversity. This is a shortcut for -Xclang -nop-insertion and -mllvm -sched-randomize.

-frandom-seed=S - Set the random seed to some 64-bit unsigned int S. Set this whenever using diversity options.

NOP Insertion

-Xclang -nop-insertion - Enable the NOP insertion pass.

-mllvm -nop-insertion-percentage=X - Insert NOPs before X% of instructions (default 50%).

-mllvm -max-nops-per-instruction=X - Insert at most X NOPs each time (default 1).

Schedule randomization

-mllvm -sched-randomize - Enable schedule randomization.

-mllvm -sched-randomize-percentage=X - Randomize X% of the instruction schedule (default 50%).

About

LLVM-based compiler to create artificial software diversity to protect software from code-reuse attacks.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 76.9%
  • Assembly 14.3%
  • C 4.1%
  • Objective-C 2.6%
  • Python 0.9%
  • OCaml 0.8%
  • Other 0.4%