angr is a platform-agnostic binary analysis framework written in Python that enables disassembly, symbolic execution, control-flow analysis, decompilation, and other forms of program inspection and manipulation.
The framework addresses the need to programmatically analyze compiled binaries across different architectures and operating systems. It works by providing a suite of Python libraries that load a binary into a project object, exposing methods for intermediate-representation lifting, symbolic execution to explore program paths, data-dependency analysis, and value-set analysis. Users can interactively explore binaries and their properties through a Python interface, making it accessible for tasks ranging from vulnerability research to CTF challenge solving.
The tool suits security researchers, reverse engineers, and CTF competitors who need to automate binary analysis tasks. It is particularly valuable for symbolic execution workflows where you need to reason about program behavior under different input conditions. The framework's strength lies in its unified interface across multiple architectures and its integration of multiple analysis techniques within a single platform, rather than requiring separate tools for disassembly, lifting, and symbolic execution.
Development on the project shows sustained activity with regular updates to core analysis capabilities and ongoing refinement of the symbolic execution engine. The codebase receives contributions addressing both new features and stability improvements across its modular architecture. Documentation is actively maintained with examples demonstrating practical usage patterns, particularly for security research and CTF applications.