/program-analysis-note

Unfortunately I don't have time to read stuff I put...

Program Analysis Note

Reading Notes

I have included my notes under note folder. My interpretation might be wrong so isseus and PR are welcome.

Framework

Here are some frameworks for program analysis. I strongly recommend you to implement algorithms on them.

  • LLVM: the Clang Static Analyzer is a awesome tool to analyze C/C++ from AST level. And LLVM Pass provides a more low-level IR to analyze.
  • Soot: tools for Java program anlysis and optimization
  • BAP: Binary Analysis Platform. Written in OCaml. We can inspect customize IR BIL to analyze different binary.
  • Angr: Binary Analysis and Symbolic Exectuion

Project

Intro

Normally, the basic parts include dataflow analysis frameword (reaching definition, interval analysis, …), pointer analysis (andreson and steensgaard), and abstract interpretation (sign analysis). You are also encouraged to learn discrete math to understand the notations in text books.

Courses

  • Static Analysis(Abstract Interpretation Based):
  • Program Synthesis and Model Checking
    • UW CSE599: Advanced Computer-Aided Reasoning for Software
    • CMU CS15-414: Model Checking
    • MIT 6.820: Focused on abstract interpreter and model checking.
  • SMT:
  • Books:
    • SPA Book: Personally recommend. This book is static analysis oriented. It also provied a toy language analyszer. The psedu-code and syntax are better the PPA.
    • Principle of Program Analysis: Old school book. The syntax is abstract. Might be too hard to understand.

Abstract Interpretation

Dataflow Analysis

Control Flow Analysis:

Pointer Analysis:

Heap:

Shape Analysis;

Porgram Slicing:

SSA:

Binary Analysis

Theorem Proving

Model Checking

Security

KRR & PA

Related Stuff

SMT Solver

Abstract Machine

Abstract Machine primarirly discuss about the exact execution of a program.

Others