Matt Suiche 0c9e8df91c Add 'Security Research and Development with LLVM - Andrew Reiter/' from commit '0605b5174c2bc286d3e95d6c0df620800bef96c7'
git-subtree-dir: Security Research and Development with LLVM - Andrew Reiter
git-subtree-mainline: aa7a9fc1e16c3c5be7ba312c4b4e37775e005101
git-subtree-split: 0605b5174c2bc286d3e95d6c0df620800bef96c7
2017-04-29 17:11:06 +04:00

1.0 KiB

Comminute

The code here is intended to be some basics that help with learning the LLVM API. The points dealt with here are:

  • Pass manager use
  • Pass dependency
  • Some basic IR instruction and value analysis
  • Use/User API

It is not meant to be a some great bug hunting tool. It is meant to help get you to the point where you can start to think about interprocedural and other analyses. Once you get the feel you should start to look at other code, like SVF, to get into things. You should look at building CFGs so you can evaluate globals better. You should look at some extended interprocedural SSA or perhaps using Andersen's Alias Analysis for analyzing pointers. There is a lot to doing good static analysis and that's where the meat of the research is!

I repeat... Just a learning tool.

Multiple potentially dangerous examples

The potent-danger examples are there to illustrate you can do the thing a few different ways. Essentially, depending on your design needs and end goals, you may want to implement one methodology or another...