All Projects → JonathanSalwan → Triton

JonathanSalwan / Triton

Licence: apache-2.0
Triton is a Dynamic Binary Analysis (DBA) framework. It provides internal components like a Dynamic Symbolic Execution (DSE) engine, a dynamic taint engine, AST representations of the x86, x86-64, ARM32 and AArch64 Instructions Set Architecture (ISA), SMT simplification passes, an SMT solver interface and, the last but not least, Python bindings.

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects
ruby
36898 projects - #4 most used programming language
SMT
39 projects

Projects that are alternatives of or similar to Triton

Bap
Binary Analysis Platform
Stars: ✭ 1,385 (-28.39%)
Mutual labels:  binary-analysis, program-analysis, symbolic-execution, reverse-engineering
Manticore
Symbolic execution tool
Stars: ✭ 2,599 (+34.38%)
Mutual labels:  binary-analysis, program-analysis, symbolic-execution, smt
instrumentation
Assorted pintools
Stars: ✭ 24 (-98.76%)
Mutual labels:  binary-analysis, program-analysis, taint-analysis
Die Engine
DIE engine
Stars: ✭ 648 (-66.49%)
Mutual labels:  binary-analysis, program-analysis, reverse-engineering
Detect It Easy
Program for determining types of files for Windows, Linux and MacOS.
Stars: ✭ 2,982 (+54.19%)
Mutual labels:  binary-analysis, program-analysis, reverse-engineering
binary-decompilation
Extracting high level semantic information from binary code
Stars: ✭ 55 (-97.16%)
Mutual labels:  symbolic-execution, binary-analysis, program-analysis
Cwe checker
cwe_checker finds vulnerable patterns in binary executables
Stars: ✭ 372 (-80.77%)
Mutual labels:  binary-analysis, program-analysis, reverse-engineering
Andromeda
Andromeda - Interactive Reverse Engineering Tool for Android Applications
Stars: ✭ 627 (-67.58%)
Mutual labels:  binary-analysis, reverse-engineering
Rizin
UNIX-like reverse engineering framework and command-line toolset.
Stars: ✭ 673 (-65.2%)
Mutual labels:  program-analysis, reverse-engineering
Macbook issues
《macOS软件安全与逆向分析》勘误
Stars: ✭ 11 (-99.43%)
Mutual labels:  binary-analysis, reverse-engineering
Redasm
The OpenSource Disassembler
Stars: ✭ 1,042 (-46.12%)
Mutual labels:  binary-analysis, reverse-engineering
Pyre Check
Performant type-checking for python.
Stars: ✭ 5,716 (+195.55%)
Mutual labels:  program-analysis, taint-analysis
Goblin
An impish, cross-platform binary parsing crate, written in Rust
Stars: ✭ 591 (-69.44%)
Mutual labels:  binary-analysis, reverse-engineering
Tigress protection
Playing with the Tigress binary protection. Break some of its protections and solve some of its challenges. Automatic deobfuscation using symbolic execution, taint analysis and LLVM.
Stars: ✭ 550 (-71.56%)
Mutual labels:  symbolic-execution, reverse-engineering
Kam1n0 Community
The Kam1n0 Assembly Analysis Platform
Stars: ✭ 467 (-75.85%)
Mutual labels:  binary-analysis, reverse-engineering
Medusa
An open source interactive disassembler
Stars: ✭ 946 (-51.09%)
Mutual labels:  symbolic-execution, reverse-engineering
Barf Project
BARF : A multiplatform open source Binary Analysis and Reverse engineering Framework
Stars: ✭ 1,280 (-33.82%)
Mutual labels:  binary-analysis, reverse-engineering
Pharos
Automated static analysis tools for binary programs
Stars: ✭ 955 (-50.62%)
Mutual labels:  binary-analysis, reverse-engineering
Kiewtai
A port of Kaitai to the Hiew hex editor
Stars: ✭ 108 (-94.42%)
Mutual labels:  binary-analysis, reverse-engineering
Sojobo
A binary analysis framework
Stars: ✭ 116 (-94%)
Mutual labels:  program-analysis, reverse-engineering

Triton is a dynamic binary analysis (DBA) framework. It provides internal components like a Dynamic Symbolic Execution (DSE) engine, a dynamic taint engine, AST representations of the x86, x86-64, ARM32 and AArch64 Instructions Set Architecture (ISA), SMT simplification passes, an SMT solver interface and, the last but not least, Python bindings. Based on these components, you are able to build program analysis tools, automate reverse engineering and perform software verification.


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

      Codecov

Quick start

Getting started

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")) # xor 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'

Authors

  • Jonathan Salwan - Lead dev, Quarkslab
  • Christian Heitman - Core dev, Quarkslab
  • Pierrick Brunet - Core dev, Quarkslab
  • Romain Thomas - Core dev, Quarkslab
  • Florent Saudel - Core dev, Bordeaux University

Cite Triton

@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},
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].