Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Triton — Triton è una libreria di analisi binaria dinamica. Costruisci i tuoi strumenti di analisi dei programmi, automatizza il reverse engineering, esegui la verifica del software o semplicemente emula codice. | Kitploit
Strumenti/GitHubGitHub/jonathansalwan/triton
Analisi Dinamica (Sandboxing)Reverse EngineeringFuzzingAnalisi di Binari
GitHubjonathansalwan/triton

Triton

Triton è una libreria di analisi binaria dinamica. Costruisci i tuoi strumenti di analisi dei programmi, automatizza il reverse engineering, esegui la verifica del software o semplicemente emula codice.

Vedi Repository
4.3k5903 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

Triton è una libreria di analisi binaria dinamica. Fornisce componenti interni che ti permettono di costruire i tuoi strumenti di analisi dei programmi, automatizzare il reverse engineering, eseguire la verifica del software o semplicemente emulare codice.

  • Esecuzione simbolica dinamica
  • Analisi taint dinamica
  • Rappresentazione AST della semantica ISA di x86, x86-64, ARM32, AArch64 e RISC-V 32/64
  • Sintesi delle espressioni
  • Passi di semplificazione SMT
  • Lifting verso LLVM, Z3 e ritorno
  • Interfaccia solver SMT per Z3 e Bitwuzla
  • API C++ e Python


Poiché Triton è una specie di progetto part-time, per favore, non incolparci se non è completamente affidabile. Aprire issue o pull request è sempre meglio che trollare =). Comunque, puoi seguire lo sviluppo su Twitter @qb_triton.

      Codecov      

Avvio rapido

  • Installazione
  • API Python
  • API C++
  • Esempi Python
  • Chi ha già usato Triton

Per iniziare```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'

root@kitploit:~
## Installazione tramite pip

Triton può essere installato usando `pip`:```console
pip install triton-library

Installazione dal sorgente

Triton dipende dalle seguenti dipendenze:```

  • 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
root@kitploit:~
### Linux e MacOS```console
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install

Per impostazione predefinita, LLVM e Bitwuzla non vengono compilati. Se vuoi godere appieno della potenza di Triton, la compilazione cmake è:```console $ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH=$(llvm-config --prefix) -DBITWUZLA_INTERFACE=ON ..

root@kitploit:~
#### Nota per MacOS M1:

Nel caso in cui si riscontrino errori di compilazione come:```
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)

Prova a specificare PYTHON_EXECUTABLE, PYTHON_LIBRARIES e PYTHON_INCLUDE_DIRS per la tua versione specifica di 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/
..

root@kitploit:~
Puoi ottenere queste informazioni da questo snippet:```python
from sysconfig import get_paths
info = get_paths()
print(info)

Auto completamento Python

Se l'auto completamento di Python non funziona, segui questi passaggi:

  1. Esegui lo script
  2. Posiziona il file triton.pyi generato nella stessa directory dell'oggetto condiviso di Triton per cui desideri fornire suggerimenti (ad esempio, /usr/lib/python3.13/).

Il tuo IDE deve supportare il parsing dei file .pyi.

Windows

Puoi utilizzare cmake per generare il file .sln di 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" ..

root@kitploit:~
È possibile utilizzare setup.py per generare la versione debug di triton.pyd su 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*)

Tuttavia, se preferisci scaricare direttamente la libreria precompilata, dai un'occhiata ai nostri artefatti di AppVeyor. Nota che se utilizzi gli artefatti di AppVeyor, probabilmente devi installare i pacchetti Visual C++ Redistributable per Visual Studio 2012.

Installazione da vcpkg

La porta di Triton in vcpkg è tenuta aggiornata dai membri del team Microsoft e dai contributori della community. L'url di vcpkg è: https://github.com/Microsoft/vcpkg. Puoi scaricare e installare Triton usando il gestore di dipendenze vcpkg:```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

root@kitploit:~
Se la versione non è aggiornata, per favore [crea un issue o una pull request](https://github.com/Microsoft/vcpkg) sul repository vcpkg.


# 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)


## Hanno già usato Triton

### Strumenti

* [Exrop](https://github.com/d4em0n/exrop): Generazione automatica di ROPChain.
* [Pimp](https://github.com/kamou/pimp): Plugin R2 basato su Triton per esecuzione concolica e controllo totale.
* [Ponce](https://github.com/illera88/Ponce): Vincitore del contest plugin IDA 2016! Esecuzione simbolica a un solo clic!
* [QSynthesis](https://github.com/quarkslab/qsynthesis): Sintetizzatore Greybox orientato alla deoffuscazione delle istruzioni assembly.
* [TritonDSE](https://github.com/quarkslab/tritondse): Libreria DSE basata su Triton con capacità di caricamento ed esplorazione.
* [Titan](https://github.com/archercreat/titan): Titan è un devirtualizzatore VMProtect che utilizza Triton.

### Articoli e conferenze<ul dir="auto">
<li>
<b>Sydr-Fuzz: Hybrid Fuzzing Continuo e Analisi Dinamica per il Ciclo di Vita dello Sviluppo della Sicurezza</b><br />
 <b>Talk at</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2022. [<a href="publications/ISPOPEN2022-sydr-fuzz.pdf">paper</a>] [<a href="publications/ISPOPEN2022-slide-sydr-fuzz-vishnyakov.pdf">slide</a>]<br />
 <b>Autori</b>: Vishnyakov A., Kuts D., Logunova V., Parygina D., Kobrin E., Savidov G., Fedotov A.<br />
 <b>Abstract</b>: <em>Oggigiorno i framework di analisi dinamica automatizzata per
 test continui sono molto richiesti per garantire la sicurezza del software e soddisfare i
 requisiti del ciclo di vita dello sviluppo della sicurezza (SDL). L'efficienza della caccia ai bug di sicurezza
 delle tecniche di hybrid fuzzing all'avanguardia supera ampiamente
 i fuzzing guidati dalla copertura. Proponiamo una pipeline di analisi dinamica
 migliorata per sfruttare la produttività del rilevamento automatico dei bug basato su hybrid
 fuzzing. Implementiamo la pipeline proposta nel toolset di fuzzing continuo
 Sydr-Fuzz, basato sull'orchestratore di hybrid fuzzing, che integra il nostro strumento DSE
 Sydr con libFuzzer e AFL++. Sydr-Fuzz incorpora anche controllori di predicati di sicurezza,
 lo strumento di triage dei crash Casr e utility per la minimizzazione del corpus
 e la raccolta della copertura. Il benchmarking del nostro hybrid fuzzer
 rispetto ad altre soluzioni all'avanguardia dimostra la sua superiorità
 rispetto ai fuzzer guidati dalla copertura, rimanendo allo stesso livello degli avanzati
 hybrid fuzzer. Inoltre, approviamo la rilevanza del nostro approccio
 scoprendo 85 nuovi difetti software reali all'interno del progetto OSS-Sydr-Fuzz.
 Infine, apriamo il codice sorgente di Casr alla comunità per facilitare l'esame di
 crash esistenti.</em>
</li><br/>
<li>
<b>Strong Optimistic Solving for Dynamic Symbolic Execution</b><br />
 <b>Talk at</b>: Ivannikov Memorial Workshop, Kazan, Russia, 2022. [<a href="publications/IVMEM2022-strong-optimistic-parygina.pdf">paper</a>] [<a href="publications/IVMEM2022-slide-strong-optimistic-parygina.pdf">slide</a>]<br />
 <b>Autori</b>: Parygina D., Vishnyakov A., Fedotov A.<br />
 <b>Abstract</b>: <em>L'esecuzione simbolica dinamica (DSE) è un metodo efficace
 per il test automatico dei programmi e il rilevamento dei bug. Aumenta la
 copertura del codice esplorando rami complessi durante l'hybrid fuzzing. Gli strumenti DSE
 invertono i rami lungo un percorso di esecuzione e aiutano il fuzzer a esaminare
 parti del programma precedentemente non disponibili. La DSE affronta spesso problemi di sovra- e
 sottovincolo. Il primo porta a una significativa complicazione dell'analisi, mentre il
 secondo causa un'esecuzione simbolica imprecisa.
 Proponiamo un metodo di risoluzione forte ottimistico che elimina i vincoli del predicato di percorso
 irrilevanti per l'inversione del ramo target. Eliminiamo quei vincoli simbolici
 da cui il ramo target non dipende a livello di controllo. Inoltre, gestiamo
 separatamente i rami simbolici che hanno istruzioni di trasferimento del controllo annidate
 che passano il controllo al di là dell'ambito del ramo genitore, ad esempio return,
 goto, break, ecc. Implementiamo il metodo proposto nel nostro strumento di esecuzione simbolica
 dinamica Sydr.
 Valutiamo la strategia forte ottimistica, la strategia ottimistica che
 contiene solo la negazione dell'ultimo vincolo, e la loro combinazione. I risultati
 mostrano che la combinazione delle strategie aiuta ad aumentare sia la copertura del codice che
 il numero medio di rami correttamente invertiti al minuto. È ottimale
 applicare entrambe le strategie insieme in contrasto con altre configurazioni.</em>
</li><br/>
<li>
<b>Greybox Program Synthesis: A New Approach to Attack Dataflow Obfuscation</b><br />
 <b>Talk at</b>: Blackhat USA, Las Vegas, Nevada, 2021. [<a href="publications/BHUSA2021-David-Greybox-Program-Synthesis.pdf">slide</a>]<br />
 <b>Autori</b>: Robin David<br />
 <b>Abstract</b>: <em>Questo talk presenta i più recenti progressi nella sintesi di programmi applicata alla deoffuscazione. Mira a demistificare questa tecnica di analisi,
 mostrando come può essere messa in azione sull'offuscazione. In particolare, l'implementazione Qsynthesis rilasciata per questo talk mostra un flusso di lavoro completo
 end-to-end per deoffuscare istruzioni assembly in istruzioni ottimizzate (deoffuscate) riassemblate nel binario.</em>
</li><br/>
<li>
<b>Dal codice sorgente al test-case di crash attraverso l'automazione del test software</b><br />
 <b>Talk at</b>: C&ESAR, Rennes, France, 2021. [<a href="publications/CESAR2021_robin-david-paper.pdf">paper</a>] [<a href="publications/CESAR2021_robin-david-slide.pdf">slide</a>]<br />
 <b>Autori</b>: Robin David, Jonathan Salwan, Justin Bourroux<br />
 <b>Abstract</b>: <em>Questo articolo presenta un approccio che automatizza il processo di test software dal codice sorgente al test dinamico del programma compilato. Più specificamente, da un
 rapporto di analisi statica che indica allarmi su righe di codice sorgente, consente di testare per coprire dinamicamente queste righe e verificare opportunisticamente se possono o meno innescare
 un crash. Il risultato è un corpus di test che permette di coprire gli allarmi e di innescarli se si rivelano veri positivi. Questo articolo discute la metodologia impiegata per tracciare
 gli allarmi nel binario compilato, il processo di selezione dei motori di test e i risultati ottenuti su un'implementazione dello stack TCP/IP per sistemi embedded e IoT.</em>
</li><br/>
<li>
<b>Predicati di Sicurezza Simbolici: Caccia alle Debolezze del Programma</b><br />
 <b>Talk at</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2021. [<a href="publications/ISPOPEN2021-security-predicates-vishnyakov.pdf">paper</a>] [<a href="publications/ISPOPEN2021-slide-security-predicates-vishnyakov.pdf">slide</a>]<br />
 <b>Autori</b>: A.Vishnyakov, V.Logunova, E.Kobrin, D.Kuts, D.Parygina, A.Fedotov<br />
 <b>Abstract</b>: <em>L'esecuzione simbolica dinamica (DSE) è un potente metodo per
 l'esplorazione dei percorsi durante l'hybrid fuzzing e il rilevamento automatico dei bug. Proponiamo
 predicati di sicurezza per rilevare efficacemente comportamento indefinito ed errori di accesso alla memoria.
 Inizialmente, eseguiamo simbolicamente il programma su percorsi che non innescano alcun errore (l'hybrid fuzzing può esplorare questi percorsi). Poi
 costruiamo un predicato di sicurezza simbolico per verificare qualche condizione di errore. Così,
 possiamo modificare il flusso di dati del programma per provocare dereferenze di puntatore nullo, divisioni
 per zero, accessi fuori dai limiti o overflow di interi. A differenza dell'analisi
 statica, l'esecuzione simbolica dinamica non solo segnala errori ma genera anche nuovi dati di input per riprodurli.
 Inoltre, introduciamo la modellazione della semantica delle funzioni per funzioni comuni della libreria standard C/C++. Miriamo a modellare
 il flusso di controllo all'interno di una funzione con una singola formula simbolica. Questo aiuta
 il rilevamento dei bug, accelera l'esplorazione dei percorsi e supera i sovra-vincoli nel
 predicato di percorso. Implementiamo le tecniche proposte nel nostro strumento di esecuzione simbolica
 dinamica Sydr. Così, utilizziamo metodi potenti da Sydr come lo slicing del predicato di percorso
 che elimina i vincoli irrilevanti.
 Presentiamo Juliet Dynamic per misurare l'accuratezza degli strumenti di rilevamento dinamico dei bug. Il
 sistema di test verifica anche che gli input generati inneschino i sanitizer. Valutiamo
 l'accuratezza di Sydr per 11 CWE dalla suite di test Juliet. Sydr mostra un'accuratezza complessiva del 95,59%.
 Mettiamo a disposizione pubblicamente gli artefatti di valutazione di Sydr per facilitare la riproducibilità dei risultati.</em>
</li><br/>
<li>
<b>Verso il Ragionamento sui Puntatori Simbolici nell'Esecuzione Simbolica Dinamica</b><br />
 <b>Talk at</b>: Ivannikov Memorial Workshop, Nizhny Novgorod, Russia, 2021. [<a href="publications/IVMEM2021-symbolic-pointers-kuts.pdf">paper</a>] [<a href="publications/IVMEM2021-slide-symbolic-pointers-kuts.pdf">slide</a>]<br />
 <b>Autori</b>: Daniil Kuts<br />
 <b>Abstract</b>: <em>L'esecuzione simbolica dinamica è una tecnica ampiamente utilizzata per
 il test automatico del software, progettata per l'esplorazione dei percorsi di esecuzione e il
 rilevamento degli errori del programma. Un approccio ibrido è recentemente diventato diffuso,
 quando l'obiettivo principale dell'esecuzione simbolica è aiutare il fuzzer ad aumentare la copertura del programma. Più rami l'esecutore simbolico può invertire, più è utile
 per il fuzzer. Il flusso di controllo di un programma spesso dipende dai valori di memoria, che vengono
 ottenuti calcolando indici di indirizzo dall'input dell'utente. Tuttavia, la maggior parte degli strumenti DSE
 non supporta tali dipendenze, quindi perdono alcuni rami del programma desiderati. Implementiamo
 il ragionamento sugli indirizzi simbolici nelle letture di memoria nel nostro strumento di esecuzione simbolica
 dinamica Sydr. Le possibili regioni di accesso alla memoria sono determinate
 analizzando le espressioni simboliche dell'indirizzo di memoria o mediante ricerca binaria con
 SMT-solver. Proponiamo una tecnica di linearizzazione migliorata per modellare gli accessi
 alla memoria. Diversi metodi di modellazione della memoria vengono confrontati su un insieme di
 programmi. La nostra valutazione mostra che la gestione degli indirizzi simbolici permette di
 scoprire nuovi rami simbolici e aumentare la copertura del programma.</em>
</li><br/>
<li>
<b>QSynth: Un Approccio basato sulla Sintesi di Programmi per la Deoffuscazione del Codice Binario</b><br />
 <b>Talk at</b>: BAR, San Diego, California, 2020. [<a href="publications/BAR2020-qsynth-robin-david.pdf">paper</a>]<br />
 <b>Autori</b>: Robin David, Luigi Coniglio, Mariano Ceccato<br />
 <b>Abstract</b>: <em>Presentiamo un approccio generico che sfrutta sia la DSE che la sintesi di programmi per sintetizzare con successo programmi offuscati con Mixed-Boolean-Arithmetic, Data-Encoding
 o Virtualizzazione. L'algoritmo di sintesi proposto è una primitiva di sintesi enumerativa offline guidata da una ricerca breadth-first top-down. Mostriamo la sua efficacia
 contro un offuscatore all'avanguardia e la sua scalabilità poiché supera altri approcci simili basati sulla sintesi. Mostriamo anche la sua efficacia in presenza di
 offuscazione composita (combinazione di varie tecniche). Questo lavoro in corso illumina l'efficacia della sintesi nel colpire certi tipi di offuscazione e
 apre la strada ad algoritmi più robusti e strategie di semplificazione.</em>
</li><br/>
<li>
<b>Sydr: Esecuzione Simbolica Dinamica all'Avanguardia</b><br />
 <b>Talk at</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2020. [<a href="publications/ISPRAS2020-sydr.pdf">paper</a>] [<a href="publications/ISPOPEN2020-slide-sydr-vishnyakov.pdf">slide</a>] [<a href="https://www.ispras.ru/conf/2020/video/compiler-technology-11-december.mp4#t=6021">video</a>]<br />
 <b>Autori</b>: A.Vishnyakov, A.Fedotov, D.Kuts, A.Novikov, D.Parygina, E.Kobrin, V.Logunova, P.Belecky, S.Kurmangaleev<br />
 <b>Abstract</b>: <em>L'esecuzione simbolica dinamica (DSE) ha un'enorme quantità di applicazioni nella sicurezza informatica (fuzzing, scoperta di vulnerabilità, reverse engineering, ecc.). Proponiamo
 diversi miglioramenti delle prestazioni e dell'accuratezza per l'esecuzione simbolica dinamica. Saltare le istruzioni non simboliche permette di costruire un predicato di percorso 1,2–3,5 volte più velocemente.
 Il motore simbolico semplifica le formule durante l'esecuzione simbolica. Lo slicing del predicato di
 percorso elimina i congiunti irrilevanti dalle richieste del risolutore. Gestiamo ogni tabella di salto
 (istruzione switch) come rami multipli e descriviamo il metodo per l'esecuzione simbolica di programmi multi-thread. Le soluzioni proposte sono state implementate nello strumento Sydr.
 Sydr esegue l'inversione dei rami nel predicato di percorso. Sydr combina lo strumento di instrumentazione binaria dinamica DynamoRIO con il motore simbolico Triton.</em>
</li><br/>
<li>
<b>Deoffuscazione Simbolica: Dal Codice Virtualizzato di Nuovo all'Originale</b><br />
 <b>Talk at</b>: DIMVA, Paris-Saclay, France, 2018. [<a href="publications/DIMVA2018-deobfuscation-salwan-bardin-potet.pdf">paper</a>] [<a href="publications/DIMVA2018-slide-deobfuscation-salwan-bardin-potet.pdf">slide</a>]<br />
 <b>Autori</b>: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet<br />
 <b>Abstract</b>: <em>La protezione del software ha assunto un ruolo importante nell'ultimo decennio per proteggere il software legittimo dal reverse engineering o dalla manomissione.
 La virtualizzazione è considerata una delle migliori difese contro tali attacchi. Presentiamo un approccio generico basato su esplorazione simbolica del percorso, taint e
 ricompilazione che consente di recuperare, da un codice virtualizzato, un codice devirtualizzato semanticamente identico a quello originale e di dimensioni simili. Definiamo criteri
 e metriche per valutare la rilevanza dei risultati deoffuscati in termini di correttezza e precisione. Infine proponiamo un setup open-source che consente di valutare
 l'approccio proposto contro diverse forme di virtualizzazione.</em>
</li><br/>
<li>
<b>Deoffuscazione della protezione software basata su VM</b><br />
 <b>Talk at</b>: SSTIC, Rennes, France, 2017. [<a href="publications/SSTIC2017-French-Article-desobfuscation_binaire_reconstruction_de_fonctions_virtualisees-salwan_potet_bardin.pdf">paper francese</a>] [<a href="publications/SSTIC2017_Deobfuscation_of_VM_based_software_protection.pdf">slide inglese</a>] [<a href="https://static.sstic.org/videos2017/SSTIC_2017-06-07_P08.mp4">video francese</a>]<br />
 <b>Autori</b>: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet<br />
 <b>Abstract</b>: <em>In questa presentazione descriviamo un approccio che consiste nell'analizzare automaticamente le protezioni software basate su macchina virtuale e che ricompila una nuova
 versione del binario senza tali protezioni. Questo approccio automatizzato si basa su un'esecuzione simbolica guidata da un'analisi del taint e alcune politiche di concretizzazione, quindi
 su una riscrittura binaria utilizzando la transizione LLVM.</em>
</li><br/>
<li>
<b>Come Triton può aiutare a fare reverse engineering delle protezioni software basate su macchina virtuale</b><br />
 <b>Talk at</b>: CSAW SOS, NYC, New York, 2016. [<a href="publications/CSAW2016-SOS-Virtual-Machine-Deobfuscation-RThomas_JSalwan.pdf">slide</a>]<br />
 <b>Autori</b>: Jonathan Salwan, Romain Thomas<br />
 <b>Abstract</b>: <em>La prima parte del talk sarà un'introduzione al framework Triton per esporre i suoi componenti e spiegare come lavorano insieme.
 Poi, la seconda parte includerà dimostrazioni su come è possibile fare reverse engineering delle protezioni basate su macchina virtuale utilizzando analisi del taint, esecuzione simbolica, semplificazioni
 SMT e ottimizzazioni LLVM-IR.</em>
</li><br/>
<li>
<b>Analisi Binaria Dinamica e Codici Offuscati</b><br />
 <b>Talk at</b>: St'Hack, Bordeaux, France, 2016. [<a href="publications/StHack2016_Dynamic_Binary_Analysis_and_Obfuscated_Codes_RThomas_JSalwan.pdf">slide</a>]<br />
 <b>Autori</b>: Jonathan Salwan, Romain Thomas<br />
 <b>Abstract</b>: <em>In questa presentazione parleremo di come un DBA (Analisi Binaria Dinamica) può aiutare un reverse engineer a fare reverse engineering del codice offuscato. Per prima cosa
 introdurremo alcune tecniche di base di offuscazione e poi esporremo come sia possibile rompere alcune cose (usando il nostro framework DBA open-source - Triton) come rilevare
 predicati opachi, ricostruire il CFG, trovare l'algoritmo originale, isolare dati sensibili e molto altro... Poi, concluderemo con una demo e qualche parola sul nostro lavoro futuro.</em>
</li><br/>
<li>
<b>Come Triton può aiutare ad analizzare binari offuscati</b><br />
 <b>Pubblicazione su</b>: MISC magazine 82, 2015. [<a href="publications/MISC-82_French_Paper_How_Triton_may_help_to_analyse_obfuscated_binaries_RThomas_JSalwan.pdf">articolo francese</a>]<br />
 <b>Autori</b>: Jonathan Salwan, Romain Thomas<br />
 <b>Abstract</b>: <em>L'offuscazione binaria viene utilizzata per proteggere la proprietà intellettuale del software. Esistono diversi tipi di offuscazione ma, in generale, trasforma una struttura
 binaria in un'altra struttura binaria preservando la stessa semantica. Lo scopo dell'offuscazione è garantire che l'informazione originale sia "annegata" in informazioni inutili
 che renderanno più difficile il reverse engineering. In questo articolo mostreremo come possiamo analizzare un programma offuscato e rompere alcune offuscazioni usando il framework Triton.</em>
</li><br/>
<li>
<b>Triton: Un Framework di Esecuzione Concolica</b><br />
 <b>Talk at</b>: SSTIC, Rennes, France, 2015. [<a href="publications/SSTIC2015_French_Paper_Triton_Framework_dexecution_Concolique_FSaudel_JSalwan.pdf">paper francese</a>] [<a href="publications/SSTIC2015_English_slide_detailed_version_Triton_Concolic_Execution_FrameWork_FSaudel_JSalwan.pdf">slide inglese dettagliato</a>] <br />
 <b>Autori</b>: Jonathan Salwan, Florent Saudel<br />
 <b>Abstract</b>: <em>Questo talk riguarda il rilascio di Triton, un framework di esecuzione concolica basato su Pin. Fornisce componenti come un motore di taint, un motore di esecuzione simbolica dinamica,
 un motore di snapshot, traduzione delle istruzioni x64 in SMT2, un'interfaccia Z3 per risolvere vincoli e binding Python. Basato su questi componenti, Triton offre la possibilità
 di costruire strumenti per la ricerca di vulnerabilità o assistenza al reverse engineering.</em>
</li><br/>
<li>
<b>Analisi del Comportamento Dinamico tramite Instrumentazione Binaria</b><br />
 <b>Talk at</b>: St'Hack, Bordeaux, France, 2015. [<a href="publications/StHack2015_Dynamic_Behavior_Analysis_using_Binary_Instrumentation_Jonathan_Salwan.pdf">slide</a>]<br />
 <b>Autori</b>: Jonathan Salwan<br />
 <b>Abstract</b>: <em>Questo talk può essere considerato come la parte 2 del nostro talk a SecurityDay. Nella parte precedente, abbiamo parlato di come fosse possibile coprire una funzione target
 in memoria usando l'approccio DSE (Esecuzione Simbolica Dinamica). Coprire una funzione (o i suoi stati) non significa trovare tutte le vulnerabilità, alcune vulnerabilità non causano il crash del programma.
 Ecco perché dobbiamo implementare analisi specifiche per trovare bug specifici. Queste analisi si basano sull'instrumentazione binaria e sull'analisi del comportamento runtime del programma. In questo
 talk, vedremo come è possibile trovare questi tipi di bug: off-by-one, stack / heap overflow, use-after-free, format string e {write, read}-what-where.</em>
</li><br/>
<li>
<b>Coprire una funzione utilizzando un approccio di Esecuzione Simbolica Dinamica</b><br />
 <b>Talk at</b>: Security Day, Lille, France, 2015. [<a href="publications/SecurityDay2015_dynamic_symbolic_execution_Jonathan_Salwan.pdf">slide</a>]<br />
 <b>Autori</b>: Jonathan Salwan<br />
 <b>Abstract</b>: <em>Questo talk riguarda l'analisi binaria e l'instrumentazione. Vedremo come è possibile individuare una funzione specifica, fare snapshot del contesto memoria/registri prima della
 funzione, tradurre l'instrumentazione in una rappresentazione intermedia, applicare un'analisi del taint basata su questa IR, costruire/mantenere formule per un'Esecuzione Simbolica Dinamica (DSE), generare
 un valore concreto per percorrere un percorso specifico, ripristinare il contesto memoria/registri e generare un altro valore concreto per percorrere un altro percorso, poi ripetere questa operazione fino a
 quando la funzione target è coperta.</em>
</li>
</ul>


## Cita 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},
}
Scarica lo strumento