Core Components
angr Management’s architecture is built around three primary components that work together to provide a complete binary analysis environment:MainWindow
TheMainWindow is the QMainWindow instance for the application. It serves as the top-level container and provides basic functions that correspond to top-level UI interactions.
Key Responsibilities:
- Loading binaries (both local files and URLs)
- Managing menus (File, View, Analyze, AI, Help, Plugin)
- Coordinating toolbars and status bar
- Handling welcome and preference dialogs
- Managing the dock system via Qt Advanced Docking System
angrmanagement/ui/main_window.py
Example - Creating a MainWindow:
Workspace
TheWorkspace is a lightweight object that coordinates UI elements and manages the tabbed environment. It provides access to all analysis-related GUI components.
Key Responsibilities:
- Managing views (Disassembly, Decompilation, Hex, Functions, etc.)
- Coordinating job execution via
JobManager - Managing plugins via
PluginManager - Handling analysis operations via
AnalysisManager - Providing command registration via
CommandManager
angrmanagement/ui/workspace.py
Default Views:
Instance
TheInstance is angr Management’s data model. It contains mechanisms for synchronizing components on shared data sources and manages long-running jobs.
Key Responsibilities:
- Storing the angr
Project,CFG, and other analyses - Managing ObjectContainers for reactive data updates
- Coordinating breakpoints via
BreakpointManager - Managing debuggers via
DebuggerManager - Handling FLIRT signatures via
SignatureManager - Logging application events
angrmanagement/data/instance.py
Core Containers:
Component Relationships
The three core components form a hierarchy:Accessing Components
ObjectContainer Pattern
angr Management uses anObjectContainer pattern for reactive data management. Containers emit events when their values change, allowing UI components to stay synchronized.
Location: angrmanagement/data/object_container.py
Usage:
Manager Components
JobManager
Manages background jobs and long-running analyses. Location:angrmanagement/logic/jobmanager.py
ViewManager
Manages all views and their dock widgets. Location:angrmanagement/ui/view_manager.py
AnalysisManager
Coordinates analysis operations like CFG generation, variable recovery, and decompilation. Location:angrmanagement/logic/analysis_manager.py
CommandManager
Manages registered commands for the command palette. Location:angrmanagement/logic/commands.py
PluginManager
Handles plugin loading and lifecycle. Location:angrmanagement/plugins/plugin_manager.py
Boot Process
The application boot process is defined inangrmanagement/__init__.py:17:
- Initialize Qt Application
- Load configuration from
Conf.attempt_importing_initial_config() - Set up fonts and theme
- Create
MainWindowinstance - Initialize
GlobalInforeferences - Load project if provided
- Show welcome dialog or start event loop
Key Paths
| Component | Path |
|---|---|
| MainWindow | angrmanagement/ui/main_window.py |
| Workspace | angrmanagement/ui/workspace.py |
| Instance | angrmanagement/data/instance.py |
| GlobalInfo | angrmanagement/logic/__init__.py |
| ObjectContainer | angrmanagement/data/object_container.py |
| Boot function | angrmanagement/__init__.py |
Next Steps
Setup Development Environment
Get your development environment ready
Contributing Guidelines
Learn how to contribute to angr Management