Call Graph Toolbox

The Call Graph Toolbox project is a collection of Atlas native call graph construction implementations and utilities for navigating the resulting call graphs. This plugin implements 9 different call graph construction algorithms ranging from Class Hierarchy Analysis (CHA) to Rapid Type Analysis (RTA) to Variable Type Analysis (VTA).

Read More

Immutability Toolbox

The Immutability Toolbox seeks to answer the question: given code C and reference R, is the object O referenced by R mutated in the code C?. The toolbox contains robust implementations of two prominent approaches to immutability analysis. The first approach leverages a precise points-to analysis computed by the Points-to Toolbox to resolve aliasing relationships and compute object immutability. The second approach is a scalable type inference based approach.

Read More

Path Counter

The Path Counter project provides efficient software graph path counting capabilities without enumeration.

Read More

Projected Control Graph (PCG) Toolbox

The goal of path-sensitive analysis is to achieve accuracy by accounting precisely for the execution behavior along each path of a control flow graph (CFG). A practical adoption of PSA is hampered by two roadblocks: (a) the exponential growth of the number of CFG paths, and (b) the exponential complexity of a path feasibility check. We introduce projected control graph (PCG) as an optimal mathematical abstraction to address these roadblocks.

Read More

SIDIS Toolbox

The SIDIS Toolbox project provides statically-informed dynamic (SID) analysis and dynamically-informed static (DIS) analysis capabilities to the Atlas program analysis framework.

Read More

Slicing Toolbox

The Slicing Toolbox project provides Atlas native Program Dependence Graph (PDG) based program slicing. The PDG is a combination of analysis on control and data flow graphs that makes the both control and data flow dependencies explicit.

Read More

Toolbox Commons Collection

The Toolbox Commons project is a collection of common utilities useful for program analysis with Atlas. The project has resulted in a generic toolbox of common utilities agnostic of the programming language as well as three language specific toolboxes for Java, Jimple (JVM Bytecode), and C.

Read More