Skip to main content
This guide will help you quickly get started with angr Management and perform your first binary analysis.

Prerequisites

Before you begin, ensure you have:
  • Python 3.10 or higher
  • A binary file to analyze (you can use any ELF, PE, or Mach-O executable)
  • Basic familiarity with reverse engineering concepts

Installation

1

Install angr Management

Install via pip:
pip install angr-management
Or download a pre-built release from GitHub Releases.
2

Launch the application

Run from the command line:
angr-management
Or use the shorter alias:
am

First Analysis

1

Load a binary

  1. Click File → Load Binary or press Ctrl+O
  2. Select your binary file
  3. Wait for the initial analysis to complete
angr Management automatically performs CFG (Control Flow Graph) recovery when you load a binary. This may take a few seconds to several minutes depending on the binary size.
2

Explore the disassembly

The Disassembly view opens automatically, showing the control flow graph of the entry point.Key features:
  • Graph view: Visual representation of control flow
  • Linear view: Traditional flat disassembly listing
  • Navigation: Double-click functions in the Functions view to jump to them
  • Search: Press G to go to a specific address
3

View the decompilation

Right-click a function and select Decompile or press F5.The Pseudocode view displays high-level C-like code:
// Example decompiled output
int64_t main(int64_t argc, char** argv) {
    int64_t rax = sub_401000();
    if (rax == 0) {
        puts("Hello, World!");
    }
    return rax;
}
Interact with the decompilation:
  • Press N to rename variables
  • Press Y to retype variables
  • Right-click for more options
4

Use the console

Open the Console view from View → Console or press Alt+4.The console provides an IPython environment with full access to the angr API:
# Access the project
>>> proj = workspace.main_instance.project.am_obj
>>> proj
<Project /path/to/binary>

# List all functions
>>> for func in proj.kb.functions.values():
...     print(hex(func.addr), func.name)

# Perform symbolic execution
>>> import angr
>>> state = proj.factory.entry_state()
>>> simgr = proj.factory.simulation_manager(state)
>>> simgr.explore(find=0x401234)

Common Workflows

  1. Open the Functions view (usually on the left sidebar)
  2. Search for your function by name or filter by address
  3. Double-click the function to jump to it in the disassembly
  4. Press F5 to decompile
  5. Press N on variables or function names to rename them
  6. Press Y on variables to change their types
  1. Open View → Strings or press Alt+8
  2. Browse the list of all strings found in the binary
  3. Double-click a string to see where it’s referenced
  4. Use the filter box to search for specific strings
  1. Right-click an instruction in the disassembly view
  2. Select Toggle Breakpoint or press F2
  3. Open View → Breakpoints to manage all breakpoints
  4. Use Run → Continue (F9) to start debugging
  5. Use Run → Step Into (F7) and Run → Step Over (F8) to step through code
  1. Right-click an instruction in the disassembly view
  2. Select Patch Instruction
  3. Enter new assembly code or hex bytes
  4. Open View → Patches to review all patches
  5. Click File → Export Patched Binary to save your changes

Keyboard Shortcuts

Here are the most useful keyboard shortcuts to get you started:
ShortcutAction
Ctrl+OOpen binary
Ctrl+SSave project
F5Decompile function
GGo to address
NRename variable/function
YRetype variable
XShow cross-references
F2Toggle breakpoint
F9Continue (debugging)
F7Step into
F8Step over
Ctrl+Shift+POpen command palette
Alt+1-9Switch between views
See the Keyboard Shortcuts reference for a complete list.

Next Steps

User Guide

Learn about all the views and features

Decompilation Guide

Master the interactive decompiler

Analysis Capabilities

Explore symbolic execution and advanced analyses

Plugin System

Extend angr Management with plugins

Getting Help

If you run into issues, check the Troubleshooting Guide or FAQ.
Join the angr community:

Build docs developers (and LLMs) love