Overview
angr Management provides a rich set of UI components built on PySide6 (Qt6) for creating interactive binary analysis interfaces. The UI framework is located inangrmanagement/ui/ and includes widgets, dialogs, views, and specialized graphics components.
Core Widget Categories
Base Graphics Components
All custom graphics items inherit fromQCachedGraphicsItem, which provides caching and performance optimizations:
clear_cache()- Invalidate cached bounding rectanglerecalculate_size()- Force recalculation of sizeboundingRect()- Get cached bounding rectangle
Block Components
Blocks represent code sections in the disassembly view. The base class isQBlock (angrmanagement/ui/widgets/qblock.py).
QBlock
Base class for displaying code blocks:addr- Block addresscfg_nodes- CFG nodes contained in blockobjects- Instructions and labels in the blockaddr_to_insns- Mapping of addresses to instruction widgetsaddr_to_labels- Mapping of addresses to label widgets
refresh()- Refresh block displayreload()- Reload block contentsinstruction_position(insn_addr)- Get position of instruction
Graph Components
QZoomableDraggableGraphicsView
Provides zooming and panning functionality:zoom(out=False, at=None, reset=False, restore=False, factor=1.25)- Zoom the viewwheelEvent(event)- Handle mouse wheel zoom (Ctrl+Wheel)keyPressEvent(event)- Handle keyboard zoom (Ctrl+Plus/Minus/0)
Input Widgets
QAddressInput
Specialized input field for addresses and function names:- Accepts hexadecimal addresses (e.g., “0x401000” or “401000”)
- Accepts function names (resolves from knowledge base)
- Returns
Nonefor invalid input
QStateComboBox
Combobox for selecting simulation states:Table Widgets
QFunctionTable
Displays function information in a table:Dialog Components
All dialogs inherit fromQDialog and follow a consistent pattern.
InputPromptDialog
Generic text input dialog:Dialog Structure Pattern
Specialized Widgets
Icon Components
Feature Map
Annotation Widgets
Display annotations on instructions:Graph Visualization
QDisassemblyGraph
Main graph widget for function visualization:QSymExecGraph
Symbolic execution state graph:Widget Configuration
Access global configuration throughConf:
Best Practices
Performance Optimization
- Use Caching: Inherit from
QCachedGraphicsItemfor graphics items - Lazy Loading: Load data only when visible
- Level of Detail: Hide complex rendering when zoomed out
Widget Lifecycle
Signal/Slot Connections
Common Imports
Next Steps
- Learn about Views and Widgets
- Customize appearance with Theming
- Explore the API Reference