Git Product home page Git Product logo

program-analysis-note's Introduction

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

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

Intro

Normally, the basic parts include dataflow analysis frameword (reachiing 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:

    • 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
    • CMU CS15-414: Model checking related
    • IOWA CS513X: The topic is about staitc analysis but slighlty more depth.
  • 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

program-analysis-note's People

Contributors

erupmi avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.