# Triton **Repository Path**: baohongyu/Triton ## Basic Information - **Project Name**: Triton - **Description**: No description available - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-05 - **Last Updated**: 2025-10-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

**Triton** is a dynamic binary analysis library. It provides internal components that allow you to build your program analysis tools, automate reverse engineering, perform software verification or just emulate code. * Dynamic **symbolic** execution * Dynamic **taint** analysis * AST representation of the **x86**, **x86-64**, **ARM32**, **AArch64** and **RISC-V 32/64** ISA semantic * Expressions **synthesis** * SMT **simplification** passes * **Lifting** to **LLVM** as well as **Z3** and back * **SMT solver** interface to **Z3** and **Bitwuzla** * **C++** and **Python** API


As **Triton** is a kind of a part-time project, please, **don't blame us** if it is not fully reliable. [Open issues](https://github.com/JonathanSalwan/Triton/issues) or [pull requests](https://github.com/JonathanSalwan/Triton/pulls) are always better than trolling =). However, you can follow the development on twitter [@qb_triton](https://twitter.com/qb_triton).

      Codecov      

# Quick start * [Installation](#install) * [Python API](https://triton-library.github.io/documentation/doxygen/py_triton_page.html) * [C++ API](https://triton-library.github.io/documentation/doxygen/annotated.html) * [Python Examples](https://github.com/JonathanSalwan/Triton/tree/master/src/examples/python) * [They already used Triton](#they-already-used-triton) ## Getting started ```python from triton import * >>> # Create the Triton context with a defined architecture >>> ctx = TritonContext(ARCH.X86_64) >>> # Define concrete values (optional) >>> ctx.setConcreteRegisterValue(ctx.registers.rip, 0x40000) >>> # Symbolize data (optional) >>> ctx.symbolizeRegister(ctx.registers.rax, 'my_rax') >>> # Execute instructions >>> ctx.processing(Instruction(b"\x48\x35\x34\x12\x00\x00")) # xor rax, 0x1234 >>> ctx.processing(Instruction(b"\x48\x89\xc1")) # mov rcx, rax >>> # Get the symbolic expression >>> rcx_expr = ctx.getSymbolicRegister(ctx.registers.rcx) >>> print(rcx_expr) (define-fun ref!8 () (_ BitVec 64) ref!1) ; MOV operation - 0x40006: mov rcx, rax >>> # Solve constraint >>> ctx.getModel(rcx_expr.getAst() == 0xdead) {0: my_rax:64 = 0xcc99} >>> # 0xcc99 XOR 0x1234 is indeed equal to 0xdead >>> hex(0xcc99 ^ 0x1234) '0xdead' ``` ## Install using pip Triton can be installed using `pip`: ```console pip install triton-library ``` ## Install from source Triton relies on the following dependencies: ``` * libcapstone >= 5.0.x https://github.com/capstone-engine/capstone * libboost (optional) >= 1.68 * libpython (optional) >= 3.6 * libz3 (optional) >= 4.6.0 https://github.com/Z3Prover/z3 * libbitwuzla (optional) >= 0.4.x https://github.com/bitwuzla/bitwuzla * llvm (optional) >= 12 ``` ### Linux and MacOS ```console $ git clone https://github.com/JonathanSalwan/Triton $ cd Triton $ mkdir build ; cd build $ cmake .. $ make -j3 $ sudo make install ``` By default, LLVM and Bitwuzla are not compiled. If you want to enjoy the full power of Triton, the cmake compile is: ```console $ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH=$(llvm-config --prefix) -DBITWUZLA_INTERFACE=ON .. ``` #### MacOS M1 Note: In case if you get compilation errors like: ``` Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) ``` Try to specify `PYTHON_EXECUTABLE`, `PYTHON_LIBRARIES` and `PYTHON_INCLUDE_DIRS` for your specific Python version: ```console cmake -DCMAKE_INSTALL_PREFIX=/opt/homebrew/ \ -DPYTHON_EXECUTABLE=/opt/homebrew/bin/python3 \ -DPYTHON_LIBRARIES=/opt/homebrew/Cellar/python@3.10/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/libpython3.10.dylib \ -DPYTHON_INCLUDE_DIRS=/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/include/python3.10/ \ .. ``` This information you can get out from this snippet: ```python from sysconfig import get_paths info = get_paths() print(info) ``` #### Python Autocompletion If Python autocompletion is not working, follow these steps: 1. Execute the [script](doc/autocomplete/generate_autocomplete.py) 2. Place the generated triton.pyi file in the same directory as the Triton shared object you want to provide hints for (for example, `/usr/lib/python3.13/`). Your IDE must support parsing .pyi files. ### Windows You can use cmake to generate the .sln file of libTriton. ```console > git clone https://github.com/JonathanSalwan/Triton.git > cd Triton > mkdir build > cd build > cmake -G "Visual Studio 14 2015 Win64" \ -DBOOST_ROOT="C:/Users/jonathan/Works/Tools/boost_1_61_0" \ -DPYTHON_INCLUDE_DIRS="C:/Python36/include" \ -DPYTHON_LIBRARIES="C:/Python36/libs/python36.lib" \ -DZ3_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/include" \ -DZ3_LIBRARIES="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/bin/libz3.lib" \ -DCAPSTONE_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/include" \ -DCAPSTONE_LIBRARIES="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/capstone.lib" .. ``` However, if you prefer to directly download the precompiled library, check out our AppVeyor's [artefacts](https://ci.appveyor.com/project/JonathanSalwan/triton/history). Note that if you use AppVeyor's artefacts, you probably have to install the [Visual C++ Redistributable](https://www.microsoft.com/en-US/download/details.aspx?id=30679) packages for Visual Studio 2012. ### Installing from vcpkg The Triton port in vcpkg is kept up to date by Microsoft team members and community contributors. The url of vcpkg is: https://github.com/Microsoft/vcpkg. You can download and install Triton using the vcpkg dependency manager: ```console $ git clone https://github.com/Microsoft/vcpkg.git $ cd vcpkg $ ./bootstrap-vcpkg.sh # ./bootstrap-vcpkg.bat for Windows $ ./vcpkg integrate install $ ./vcpkg install triton ``` If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. # Contributors * [**Alberto Garcia Illera**](https://twitter.com/algillera) - Cruise Automation * [**Alexey Vishnyakov**](https://vishnya.xyz/) - ISP RAS * [**Black Binary**](https://github.com/black-binary) - n/a * [**Christian Heitman**](https://github.com/cnheitman) - Quarkslab * [**Daniil Kuts**](https://github.com/apach301) - ISP RAS * [**Jessy Campos**](https://github.com/ek0) - n/a * [**Matteo F.**](https://twitter.com/fvrmatteo) - n/a * [**Pierrick Brunet**](https://github.com/pbrunet) - Quarkslab * [**PixelRick**](https://github.com/PixelRick) - n/a * [**Romain Thomas**](https://twitter.com/rh0main) - Quarkslab * [**And many more**](https://github.com/JonathanSalwan/Triton/graphs/contributors) ## They already used Triton ### Tools * [Exrop](https://github.com/d4em0n/exrop): Automatic ROPChain Generation. * [Pimp](https://github.com/kamou/pimp): Triton based R2 plugin for concolic execution and total control. * [Ponce](https://github.com/illera88/Ponce): IDA 2016 plugin contest winner! Symbolic Execution just one-click away! * [QSynthesis](https://github.com/quarkslab/qsynthesis): Greybox Synthesizer geared for deobfuscation of assembly instructions. * [TritonDSE](https://github.com/quarkslab/tritondse): Triton-based DSE library with loading and exploration capabilities. * [Titan](https://github.com/archercreat/titan): Titan is a VMProtect devirtualizer using Triton. ### Papers and conference ## Cite Triton ```latex @inproceedings{SSTIC2015-Saudel-Salwan, author = {Saudel, Florent and Salwan, Jonathan}, title = {Triton: A Dynamic Symbolic Execution Framework}, booktitle = {Symposium sur la s{\'{e}}curit{\'{e}} des technologies de l'information et des communications}, series = {SSTIC}, pages = {31--54}, address = {Rennes, France}, month = jun, year = {2015}, } ```