
Triton est une bibliothèque d'analyse binaire dynamique. Créez vos propres outils d'analyse de programmes, automatisez votre rétro-ingénierie, effectuez de la vérification logicielle ou émulez simplement du code.

Triton est une bibliothèque d'analyse binaire dynamique. Elle fournit des composants internes qui vous permettent de construire vos outils d'analyse de programmes, d'automatiser la rétro-ingénierie, d'effectuer de la vérification logicielle ou simplement d'émuler du code.
Comme Triton est une sorte de projet à temps partiel, s'il vous plaît, ne nous blâmez pas s'il n'est pas totalement fiable. Ouvrir des issues ou des pull requests est toujours mieux que de troller =). Cependant, vous pouvez suivre le développement sur Twitter @qb_triton.
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 via pip
Triton peut être installé via `pip` :```console
pip install triton-library
Triton dépend des dépendances suivantes :```
### Linux et MacOS```console
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install
Par défaut, LLVM et Bitwuzla ne sont pas compilés. Si vous voulez profiter de toute la puissance de Triton, la compilation cmake est :```console $ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH=$(llvm-config --prefix) -DBITWUZLA_INTERFACE=ON ..
#### Note pour MacOS M1 :
Dans le cas où vous obtenez des erreurs de compilation comme :```
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
Essayez de spécifier PYTHON_EXECUTABLE, PYTHON_LIBRARIES et PYTHON_INCLUDE_DIRS pour votre version spécifique de Python:```console
cmake -DCMAKE_INSTALL_PREFIX=/opt/homebrew/
-DPYTHON_EXECUTABLE=/opt/homebrew/bin/python3
-DPYTHON_LIBRARIES=/opt/homebrew/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/libpython3.10.dylib
-DPYTHON_INCLUDE_DIRS=/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.10/include/python3.10/
..
Ces informations que vous pouvez obtenir à partir de cet extrait :```python
from sysconfig import get_paths
info = get_paths()
print(info)
Si l'autocomplétion Python ne fonctionne pas, suivez ces étapes :
/usr/lib/python3.13/).Votre IDE doit prendre en charge l'analyse des fichiers .pyi.
Vous pouvez utiliser cmake pour générer le fichier .sln de 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" ..
Vous pouvez utiliser setup.py pour générer la version debug de triton.pyd sous Windows.```console
> git clone https://github.com/JonathanSalwan/Triton.git
> cd Triton
> $env:COMPILER_DIR="C:/deps/llvm/llvm2116r/bin"
> $env:CMAKE_PREFIX_PATH="C:/deps/llvm/llvm-project-21.1.6.src/install/lib/cmake/llvm;C:/code/cxx-common-cmake/build/install"
> python_d -m build --wheel
> python_d -m pip install (Get-ChildItem .\dist\triton_library*)