Tool
Triton
C++ library with Python bindings for dynamic binary analysis of x86, x86-64, ARM32, AArch64 and RISC-V 32/64 code. Callers process instructions one at a time, optionally with concrete register and memory values; Triton builds symbolic expressions from each instruction's semantics, tracks taint and solves path constraints through Z3 or Bitwuzla. It also synthesizes and simplifies expressions and lifts them to LLVM IR or Z3 and back, for building analysis tools, automating reverse engineering, software verification or emulating code.
Requirements and limitations
- The README calls Triton a part-time project that may not be fully reliable. The newest GitHub release is v0.9 from 2022-02-09, with Windows builds only; PyPI's triton-library 1.0.0rc4, first uploaded 2024-05-22 with wheels added through 2026-02-23, provides CPython 3.8–3.14 wheels for x86_64 Linux (manylinux 2.31/2.34), macOS 12 and Windows. The reviewed master commit declares version 1.0, and the dev-v1.0 branch was 22 commits ahead.
- Source builds use CMake 3.20+ and need Capstone 5+. Z3 4.6+ is the default solver; Bitwuzla 0.4+, LLVM 12+ for lifting, Boost 1.68+ and libpython 3.6+ for the Python bindings are optional, and LLVM and Bitwuzla are off by default. The README also covers Windows builds and a vcpkg port maintained outside the project.
- The README example processes raw instruction bytes against caller-set registers; some bundled examples load executables with LIEF and hook libc functions themselves, and the examples include CTF write-ups with their challenge binaries. CTest runs Python unit tests and per-architecture scripts that compare Triton's semantics with the Unicorn emulator; the x86 script notes that Unicorn 2.1.1 lacks some tested instructions.
- Apache-2.0; Capstone, Z3, Bitwuzla, LLVM and Boost keep their own licenses. Symbolic results describe only the executed instructions and modeled state. No binaries were analyzed.
About this entry
- Type
- Tool
- Category
- Binary analysis libraries
- Relationship
- Foundation tool
- Targets
- Binary
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · JonathanSalwan/Triton · Revision bc84cf7
- README.md#L102-L130 GitHub · JonathanSalwan/Triton · Revision bc84cf7
- CMakeLists.txt#L9-L38 GitHub · JonathanSalwan/Triton · Revision bc84cf7
- src/testers/CMakeLists.txt GitHub · JonathanSalwan/Triton · Revision bc84cf7
- src/testers/x86/unicorn_test_x86.py#L19-L21 GitHub · JonathanSalwan/Triton · Revision bc84cf7
- src/examples/python GitHub · JonathanSalwan/Triton · Revision bc84cf7
- LICENSE.txt GitHub · JonathanSalwan/Triton · Revision bc84cf7
- https://github.com/JonathanSalwan/Triton/releases/tag/v0.9
- https://pypi.org/project/triton-library/1.0.0rc4/