angr
A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries
What it is and what it does
angr is a Python framework for analyzing compiled binaries without source code. It combines multiple analysis techniques—symbolic execution (exploring program paths with symbolic values), static analysis (control flow and data dependency tracking), and intermediate-representation lifting (translating machine code to a platform-independent form)—to understand binary behavior. The framework is commonly used in security research, CTF competitions, and vulnerability discovery.
The package wraps complex binary analysis operations into a Python API, letting you load a binary, hook functions, explore execution paths, and extract information like flag values or program properties. It depends on specialized libraries for disassembly (capstone), constraint solving (claripy), and intermediate representation (pyvex), plus data structures and utilities (networkx, sympy, lmdb). Installation requires Python 3.12+ and brings in 25 runtime dependencies; pre-built wheels reduce compilation friction on common platforms.
Use it for:
- Solve CTF (Capture The Flag) challenges by symbolically executing a binary to find flag values or bypass checks
- Discover vulnerabilities by analyzing control flow and data dependencies in compiled code without source
- Instrument and hook binary functions to intercept or modify behavior during dynamic analysis
- Lift and analyze firmware or embedded binaries across architectures (ARM, x86, MIPS, etc.)
- Perform value-set analysis to understand which values a variable can hold at any program point
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
angr is a binary analysis framework that performs symbolic execution, disassembly, control-flow analysis, and decompilation on binaries across multiple architectures.
Yes, if you do binary security research, CTF challenges, or reverse engineering. The framework is actively maintained, well-documented, and widely used in the security community. Install friction is moderate due to compiled dependencies, but pre-built wheels mitigate this on common platforms. No known vulnerabilities. Requires Python 3.12+, so check your environment first.
Install
angr on PyPI
pip
pip install angruv
uv add angrpoetry
poetry add angrInstalling angr
Before you install
Medium install friction with 25 runtime dependencies including compiled components (cffi, capstone, pyvex). Active maintenance—last commit 2026-08-14, released 9 days ago. Requires Python 3.12+. Pre-built wheels available for major platforms (macOS arm64, Linux x86_64/aarch64, Windows).
License in practice
BSD-2-Clause (permissive) allows commercial and private use with minimal restrictions; attribution and license notice required in distributions.
Quickstart
pip install angr
import angr
project = angr.Project('/path/to/binary', auto_load_libs=False)
state = project.factory.entry_state()
simgr = project.factory.simgr(state)
Requires Python 3.12 or later; binary analysis operations are computationally intensive and may require significant memory and CPU time.
Verify before relying
- Performance characteristics and memory footprint for large binaries or long symbolic execution runs
- Supported binary formats beyond common ELF/PE (e.g., Mach-O, raw firmware)
- Extent of decompilation capabilities and accuracy compared to dedicated decompilers
Package facts
| License | BSD-2-Clause (permissive) |
| Python support | supports the current Python release (>=3.12) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 25 — cxxheaderparser, GitPython, angr-data, archinfo, cachetools, capstone, cffi, claripy, cle, lmdb, msgspec, mulpyplexer, networkx, protobuf, psutil, pycparser, platformdirs, pydemumble, pypcode, pyvex, rich, sortedcontainers, sympy, typing-extensions, colorama |
| Maintenance | actively maintained — 9 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,112,993/month — #4,352 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: angr-9.3.2-cp312-abi3-macosx_11_0_arm64.whl; angr-9.3.2-cp312-abi3-manylinux_2_28_aarch64.whl; angr-9.3.2-cp312-abi3-manylinux_2_28_x86_64.whl; angr-9.3.2-cp312-abi3-musllinux_1_2_aarch64.whl; angr-9.3.2-cp312-abi3-musllinux_1_2_x86_64.whl; angr-9.3.2-cp312-abi3-win_amd64.whl
Tags
More Security packages
Provides Python bindings to the FreeDesktop.org…
permissive · top 1,000 on PyPI
msalMSAL for Python handles OAuth2 and OpenID…
permissive · top 1,000 on PyPI
joserfcjoserfc implements JOSE standards (JWS, JWE,…
permissive · top 1,000 on PyPI
AuthlibAuthlib provides a complete implementation of…
permissive · top 1,000 on PyPI
argon2-cffi-bindingsProvides low-level CFFI bindings to the…
permissive · top 1,000 on PyPI
adalADAL for Python authenticates applications with…
permissive · top 1,000 on PyPI
ailmentAILment provides the intermediate language (IL)…
permissive · top 15,000 on PyPI
angr-dataProvides bundled data files—function and type…
permissive · top 15,000 on PyPI
archinfoProvides architecture-specific metadata and…
permissive · top 5,000 on PyPI
pwntoolsPwntools is a CTF framework and exploit…
permissive · top 5,000 on PyPI
viv-utilsProvides utility functions and helpers for…
permissive · top 15,000 on PyPI
ethereum-dasmDisassembles Ethereum EVM bytecode into…
copyleft · top 15,000 on PyPI
vivisectVivisect is a pure-Python disassembler,…
permissive · top 15,000 on PyPI
barectfbarectf generates ANSI C tracers that output…
permissive · top 15,000 on PyPI
smdaSMDA is a recursive disassembler library that…
permissive · top 15,000 on PyPI
capstoneCapstone is a disassembly engine that decodes…
permissive · top 5,000 on PyPI