Analysis Manager
The Analysis Manager (angrmanagement/logic/analysis_manager.py:26) orchestrates all automated analyses and manages their execution through the job system.
Available Analyses
angr Management supports the following analysis types:CFG Recovery
Control-Flow Graph generation to understand program structure
Variable Recovery
Identify local variables and function parameters
Calling Convention Analysis
Recover function signatures and calling conventions
FLIRT Signatures
Recognize library functions using FLIRT signatures
String Deobfuscation
Identify and decode obfuscated strings
API Deobfuscation
Detect obfuscated API calls
Control-Flow Graph (CFG) Recovery
CFG analysis builds a graph representation of the program’s control flow, identifying basic blocks, functions, and their relationships.Configuration Options
CFG analysis provides extensive configuration (angrmanagement/data/jobs/cfg_generation.py:38):
Scanning Modes
CFG recovery supports three scanning modes (angrmanagement/data/jobs/cfg_generation.py:28):
- Disabled: Standard CFG recovery without additional scanning
- Smart Scan: Intelligently scan to maximize identified code blocks
- Complete Scan: Exhaustive scanning of all possible code regions
Running CFG Analysis
angrmanagement/data/jobs/cfg_generation.py:156) provides progress callbacks and incremental updates:
Variable Recovery
Variable recovery identifies local variables, function parameters, and their types through static analysis.Configuration
Variable recovery can be configured for different binary sizes (angrmanagement/data/jobs/variable_recovery.py:17):
Parallel Processing
Variable recovery supports multi-core processing:- Workers: Number of parallel workers (0 to disable)
- Automatically defaults to available cores minus one
- Optimized for different platforms (Windows, macOS, Linux)
Function Prioritization
You can prioritize analysis of specific functions (angrmanagement/data/jobs/variable_recovery.py:105):
Calling Convention Recovery
Calling convention analysis identifies how functions receive parameters and return values.Features
- Automatic detection of calling conventions (cdecl, stdcall, fastcall, etc.)
- Recovery of function prototypes
- Integration with variable recovery
- Function prioritization support
Configuration
Configured throughCallingConventionRecoveryConfiguration (angrmanagement/data/jobs/calling_convention_recovery.py):
Deobfuscation Analyses
angr Management includes specialized analyses for handling obfuscated code.API Deobfuscation
Detects and deobfuscates hidden API calls (angrmanagement/data/jobs/deobfuscation.py:16):
String Deobfuscation
Identifies and decodes obfuscated strings (angrmanagement/data/jobs/deobfuscation.py:29):
FLIRT Signature Recognition
FLIRT (Fast Library Identification and Recognition Technology) analysis identifies library functions by matching against signature databases.Features
- Automatic recognition of standard library functions
- Prototype recovery for matched functions
- Reduces analysis time by skipping known library code
Usage
Code Tagging
Code tagging analysis categorizes and labels code regions for better organization:Analysis Workflow
The typical analysis workflow (angrmanagement/logic/analysis_manager.py:59):
Job System
All analyses run as background jobs managed by the JobManager (angrmanagement/logic/jobmanager.py):
- Non-blocking: Analyses run in background threads
- Progress tracking: Real-time progress updates
- Cancellable: Jobs can be cancelled mid-execution
- Prioritization: Important functions can be analyzed first
Analysis Events
The Analysis Manager emits signals when analyses complete (angrmanagement/logic/analysis_manager.py:31):
Best Practices
For Small Binaries
For Small Binaries
- Enable all analyses including variable recovery
- Use single-threaded mode to avoid overhead
- Enable cross-reference analysis for detailed results
For Large Binaries
For Large Binaries
- Disable automatic variable recovery
- Use parallel workers for faster processing
- Enable Smart Scan mode for CFG
- Manually analyze individual functions as needed
For Obfuscated Code
For Obfuscated Code
- Enable deobfuscation analyses
- Use Complete Scan mode for CFG
- Disable function prologue detection if heavily obfuscated
Custom Analysis Configuration
You can create custom analysis configurations by subclassingAnalysisConfiguration:
See Also
- Plugin System - Extend analyses with custom plugins
- Architecture Overview - Understanding the architecture
- Development Setup - Set up for development