# Analyses

Name Description
CFGFast Constructs a fast Control Flow Graph of the program
CFGEmulated Constructs an accurate Control Flow Graph of the program
VFG Performs VSA on every function of the program, creating a Value Flow Graph and detecting stack variables
DDG Calculates a Data Dependency Graph, allowing one to determine what statements a given value depends on
BackwardSlice Computes a Backward Slice of a program with respect to a certain target
Identifier Identifies common library functions in CGC binaries
More! angr has quite a few analyses, most of which work! If you’d like to know how to use one, please submit an issue requesting documentation.

# examples/CSCI-4968-MBE/challenges/crackme0x04

check():

# CFG

angr-doc中写道的CFG只有两类:CFGFastCFGEmulated，大概这是稍过时的文档。

help(cfg)中可以首先看到如下一段描述：

CFG is just a wrapper around CFGFast for compatibility issues. It will be fully replaced by CFGFast in future releases. Feel free to use CFG if you intend to use CFGFast. Please use CFGEmulated if you have to use the old, slow, dynamically-generated version of CFG.
For multiple historical reasons, angr’s CFG is accurate but slow, which does not meet what most people expect. We developed CFGFast for light-speed CFG recovery, and renamed the old CFG class to CFGEmulated. For compability concerns, CFG was kept as an alias to CFGEmulated.
However, so many new users of angr would load up a binary and generate a CFG immediately after running “pip install angr”, and draw the conclusion that “angr’s CFG is so slow - angr must be unusable!” Therefore, we made the hard decision: CFG will be an alias to CFGFast, instead of CFGEmulated.

1. angr一直致力于优化CFGFast，而将老版本的CFG重命名为CFGEmulated
2. 曾经的CFG是作为CFGEmulated的别称存在的
3. 很多用户都是直接安装angr后就开始使用CFG而不是CFGFast，这使得很多用户错误地认为angr的CFG相当的慢
4. 出于无奈，angr选择将CFG改为CFGFast的别名