
Triton — это библиотека динамического анализа бинарного кода. Создавайте собственные инструменты анализа программ, автоматизируйте реверс-инжиниринг, выполняйте верификацию программного обеспечения или просто эмулируйте код.

Triton — это библиотека динамического анализа бинарного кода. Она предоставляет внутренние компоненты, которые позволяют создавать инструменты анализа программ, автоматизировать обратную разработку, выполнять верификацию программного обеспечения или просто эмулировать код.
Поскольку Triton является своего рода проектом, ведущимся в свободное время, пожалуйста, не вините нас, если он не полностью надежен. Открытые вопросы или пул-реквесты всегда лучше троллинга =). Однако вы можете следить за разработкой в 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'
## Установка с помощью pip
Triton можно установить с помощью `pip`:```console
pip install triton-library
Triton зависит от следующих зависимостей:```
### Linux и MacOS```console
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install
По умолчанию LLVM и Bitwuzla не компилируются. Если вы хотите использовать всю мощь Triton, команда cmake для компиляции:```console $ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH=$(llvm-config --prefix) -DBITWUZLA_INTERFACE=ON ..
#### Примечание для MacOS M1:
В случае, если вы получите ошибки компиляции, такие как:```
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
Попробуйте указать PYTHON_EXECUTABLE, PYTHON_LIBRARIES и PYTHON_INCLUDE_DIRS для вашей конкретной версии 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/
..
Эту информацию вы можете получить из этого фрагмента:```python
from sysconfig import get_paths
info = get_paths()
print(info)
Если автодополнение Python не работает, выполните следующие шаги:
/usr/lib/python3.13/).Ваша IDE должна поддерживать разбор файлов .pyi.
Вы можете использовать cmake для генерации .sln файла 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" ..
Вы можете использовать setup.py для создания отладочной версии triton.pyd в 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*)