rudrasingh99 / program-analysis-note

Note on Program Analysis and other topics

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Program Analysis Note

Tool

Here are some tools 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

  • Infer: Source code static analysis based on OCaml
  • BAP based
  • LLVM based
    • Klee: Symbolic Execution based on LLVM
    • SVF: Program Analysis Framework based on LLVM

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.

A telegram channel related to PA: aHR0cHM6Ly90Lm1lL2JhYnliYWJ5cHdu.

Courses

  • Static Analysis:

    • UW CSE 501: Personally recommend, the contents are more compacted.
    • CMU CS17-355: Some slides are missing. And the contents focus on security stuff more. Recommend to use notes here and slides from UW
    • IOWA CS513X: The topic is about staitc analysis but slighlty more depth.
    • MIT 16.399: Abstract Interpretation, in a more math way.
  • Program Synthesis and Model Checking

  • 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.

General Analysis

Binary Analysis

Related Stuff

SMT Solver

Some Unuseful Cutting-edge Research

About

Note on Program Analysis and other topics