
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バージョンに対して、PYTHON_EXECUTABLE、PYTHON_LIBRARIES、PYTHON_INCLUDE_DIRSを指定してみてください。```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 のオートコンプリートが機能しない場合は、以下の手順に従ってください。
triton.pyi ファイルを、Triton 共有オブジェクトと同じディレクトリに配置します(例: /usr/lib/python3.13/ など)。IDE が .pyi ファイルの解析をサポートしている必要があります。
cmake を使用して libTriton の .sln ファイルを生成できます。```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" ..
Windows上でsetup.pyを使用して、triton.pydのデバッグバージョンを生成できます。```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*)
However, if you prefer to directly download the precompiled library, check out our AppVeyor's artefacts. Note that if you use AppVeyor's artefacts, you probably have to install the Visual C++ Redistributable packages for Visual Studio 2012.
vcpkgのTritonポートは、Microsoftのチームメンバーとコミュニティの貢献者によって最新の状態に保たれています。 vcpkgのURLは次のとおりです: https://github.com/Microsoft/vcpkg。vcpkg依存関係マネージャーを使用してTritonをダウンロードおよびインストールできます:```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
バージョンが古い場合は、vcpkg リポジトリで [issue または pull request を作成](https://github.com/Microsoft/vcpkg) してください。
# 貢献者
* [**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
* [**その他多数**](https://github.com/JonathanSalwan/Triton/graphs/contributors)
## Triton を既に使用しているもの
### ツール
* [Exrop](https://github.com/d4em0n/exrop): 自動 ROP チェーン生成。
* [Pimp](https://github.com/kamou/pimp): コンコリック実行と完全制御のための Triton ベース R2 プラグイン。
* [Ponce](https://github.com/illera88/Ponce): IDA 2016 プラグインコンテスト優勝!シンボリック実行がワンクリックで!
* [QSynthesis](https://github.com/quarkslab/qsynthesis): アセンブリ命令の難読化解除を目的としたグレーボックスシンセサイザー。
* [TritonDSE](https://github.com/quarkslab/tritondse): ロードおよび探索機能を備えた Triton ベースの DSE ライブラリ。
* [Titan](https://github.com/archercreat/titan): Triton を使用した VMProtect 動的脱仮想化ツール。
### 論文とカンファレンス<ul dir="auto">
<li>
<b>Sydr-Fuzz: セキュリティ開発ライフサイクルのための継続的ハイブリッドファジングと動的解析</b><br />
<b>発表先</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2022. [<a href="publications/ISPOPEN2022-sydr-fuzz.pdf">論文</a>] [<a href="publications/ISPOPEN2022-slide-sydr-fuzz-vishnyakov.pdf">スライド</a>]<br />
<b>著者</b>: Vishnyakov A., Kuts D., Logunova V., Parygina D., Kobrin E., Savidov G., Fedotov A.<br />
<b>概要</b>: <em>現在、継続的テストのための自動化された動的解析フレームワークは、ソフトウェアの安全性を確保し、セキュリティ開発ライフサイクル(SDL)の要件を満たすために高い需要があります。最先端のハイブリッドファジング技術によるセキュリティバグ発見の効率は、広く利用されているカバレッジガイドファジングを上回ります。我々は、ハイブリッドファジングに基づく自動バグ検出の生産性を活用するための強化された動的解析パイプラインを提案します。提案されたパイプラインを、ハイブリッドファジングオーケストレーターを搭載した継続的ファジングツールセットSydr-Fuzzに実装し、我々のDSEツールSydrをlibFuzzerやAFL++と統合します。Sydr-Fuzzには、セキュリティ述語チェッカー、クラッシュトリアージツールCasr、およびコーパスの最小化とカバレッジ収集のためのユーティリティも含まれています。我々のハイブリッドファジングツールを他の最先端ソリューションとベンチマークした結果、カバレッジガイドファジングよりも優れていることが示され、高度なハイブリッドファジングツールと同等のレベルを維持しています。さらに、OSS-Sydr-Fuzzプロジェクト内で85件の新しい実世界のソフトウェア欠陥を発見することで、我々のアプローチの妥当性を確認しました。最後に、既存のクラッシュの調査を容易にするために、Casrのソースコードをコミュニティに公開します。</em>
</li><br/>
<li>
<b>動的シンボリック実行のための強気楽観的求解</b><br />
<b>発表先</b>: Ivannikov Memorial Workshop, Kazan, Russia, 2022. [<a href="publications/IVMEM2022-strong-optimistic-parygina.pdf">論文</a>] [<a href="publications/IVMEM2022-slide-strong-optimistic-parygina.pdf">スライド</a>]<br />
<b>著者</b>: Parygina D., Vishnyakov A., Fedotov A.<br />
<b>概要</b>: <em>動的シンボリック実行(DSE)は、自動プログラムテストとバグ検出のための効果的な手法です。ハイブリッドファジング中の複雑な分岐の探索により、コードカバレッジを向上させます。DSEツールは、ある実行経路に沿った分岐を反転させ、ファジングが以前は利用できなかったプログラム部分を調査するのに役立ちます。DSEはしばしば過剰制約問題と過小制約問題に直面します。前者は解析を大幅に複雑にし、後者は不正確なシンボリック実行を引き起こします。
我々は、ターゲット分岐反転のために無関係なパス述語制約を排除する強気楽観的求解法を提案します。ターゲット分岐が制御依存しないようなシンボリック制約を排除します。さらに、return、goto、breakなど、親分岐のスコープを超えて制御を渡すネストされた制御転送命令を持つシンボリック分岐を個別に処理します。提案手法を動的シンボリック実行ツールSydrに実装します。
強気楽観的戦略、最後の制約否定のみを含む楽観的戦略、およびそれらの組み合わせを評価します。結果は、戦略の組み合わせが、コードカバレッジまたは1分あたりの正しく反転された分岐の平均数を増加させるのに役立つことを示しています。他の設定と比較して、両方の戦略を一緒に適用することが最適です。</em>
</li><br/>
<li>
<b>グレイボックスプログラム合成: データフロー難読化への新しいアプローチ</b><br />
<b>発表先</b>: Blackhat USA, Las Vegas, Nevada, 2021. [<a href="publications/BHUSA2021-David-Greybox-Program-Synthesis.pdf">スライド</a>]<br />
<b>著者</b>: Robin David<br />
<b>概要</b>: <em>このトークでは、難読化解除に適用されるプログラム合成の最新の進歩を紹介します。この解析手法がどのように難読化に対して実践できるかを示すことで、その理解を容易にすることを目的としています。特に、このトークでリリースされた実装Qsynthesisは、アセンブリ命令を最適化された(難読化解除された)命令に戻し、バイナリに再アセンブルするための完全なエンドツーエンドのワークフローを示しています。</em>
</li><br/>
<li>
<b>ソースコードからクラッシュテストケースへ: ソフトウェアテスト自動化を通じて</b><br />
<b>発表先</b>: C&ESAR, Rennes, France, 2021. [<a href="publications/CESAR2021_robin-david-paper.pdf">論文</a>] [<a href="publications/CESAR2021_robin-david-slide.pdf">スライド</a>]<br />
<b>著者</b>: Robin David, Jonathan Salwan, Justin Bourroux<br />
<b>概要</b>: <em>本論文は、ソースコードからコンパイルされたプログラムの動的テストまで、ソフトウェアテストプロセスを自動化するアプローチを提示します。具体的には、ソース行のアラートを示す静的解析レポートから、テストがこれらの行を動的にカバーし、それらがクラッシュを引き起こすかどうかを日和見的にチェックできるようにします。その結果、アラートをカバーし、それらが真陽性である場合にトリガーできるテストコーパスが得られます。本論文では、コンパイルされたバイナリ内のアラートを追跡するために採用された方法論、テストエンジンの選択プロセス、および組み込みシステムおよびIoTシステム向けのTCP/IPスタック実装で得られた結果について議論します。</em>
</li><br/>
<li>
<b>シンボリックセキュリティ述語: プログラムの弱点を追跡する</b><br />
<b>発表先</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2021. [<a href="publications/ISPOPEN2021-security-predicates-vishnyakov.pdf">論文</a>] [<a href="publications/ISPOPEN2021-slide-security-predicates-vishnyakov.pdf">スライド</a>]<br />
<b>著者</b>: A.Vishnyakov, V.Logunova, E.Kobrin, D.Kuts, D.Parygina, A.Fedotov<br />
<b>概要</b>: <em>動的シンボリック実行(DSE)は、ハイブリッドファジング中のパス探索と自動バグ検出のための強力な手法です。我々は、未定義動作やメモリアクセス違反エラーを効果的に検出するためのセキュリティ述語を提案します。最初に、エラーをトリガーしないパスに沿ってプログラムをシンボリック実行します(ハイブリッドファジングはこれらのパスを探索する可能性があります)。次に、シンボリックセキュリティ述語を構築して、何らかのエラー条件を検証します。これにより、ヌルポインタ参照、ゼロ除算、範囲外アクセス、整数オーバーフローの弱点を引き起こすようにプログラムのデータフローを変更できます。静的解析とは異なり、動的シンボリック実行はエラーを報告するだけでなく、それらを再現するための新しい入力データも生成します。さらに、一般的なC/C++標準ライブラリ関数の関数セマンティクスモデリングを導入します。関数内の制御フローを単一のシンボリック式でモデル化することを目的としています。これはバグ検出を支援し、パス探索を高速化し、パス述語の過剰制約を克服します。提案手法を動的シンボリック実行ツールSydrに実装します。これにより、無関係な制約を排除するパス述語スライシングなどのSydrの強力な手法を活用します。
動的バグ検出ツールの精度を測定するためのJuliet Dynamicを提案します。テストシステムは、生成された入力がサニタイザーをトリガーすることも検証します。Julietテストスイートの11のCWEに対するSydrの精度を評価します。Sydrは95.59%の総合精度を示しています。結果の再現性を容易にするために、Sydr評価アーティファクトを公開します。</em>
</li><br/>
<li>
<b>動的シンボリック実行におけるシンボリックポインタ推論に向けて</b><br />
<b>発表先</b>: Ivannikov Memorial Workshop, Nizhny Novgorod, Russia, 2021. [<a href="publications/IVMEM2021-symbolic-pointers-kuts.pdf">論文</a>] [<a href="publications/IVMEM2021-slide-symbolic-pointers-kuts.pdf">スライド</a>]<br />
<b>著者</b>: Daniil Kuts<br />
<b>概要</b>: <em>動的シンボリック実行は、実行パスの探索とプログラムエラーの検出のために設計された、自動ソフトウェアテストで広く使用される手法です。最近、シンボリック実行の主な目的がファザーのプログラムカバレッジ向上を支援することであるハイブリッドアプローチが普及しています。シンボリックエグゼキュータが反転できる分岐が多いほど、ファザーにとって有用です。プログラムの制御フローは、多くの場合、ユーザー入力からアドレスインデックスを計算して取得されるメモリ値に依存します。しかし、ほとんどのDSEツールはそのような依存関係をサポートしていないため、いくつかの望ましいプログラム分岐を見逃します。我々は、動的シンボリック実行ツールSydrにおいて、メモリ読み取りに関するシンボリックアドレス推論を実装します。可能なメモリアクセス領域は、メモリアドレスのシンボリック式を解析するか、SMTソルバーを用いたバイナリサーチによって決定されます。メモリアクセスモデリングのための強化された線形化手法を提案します。さまざまなメモリモデリング手法を一連のプログラムで比較します。評価により、シンボリックアドレス処理により、新しいシンボリック分岐を発見し、プログラムカバレッジを向上できることが示されています。</em>
</li><br/>
<li>
<b>QSynth: バイナリコード難読化解除のためのプログラム合成ベースのアプローチ</b><br />
<b>発表先</b>: BAR, San Diego, California, 2020. [<a href="publications/BAR2020-qsynth-robin-david.pdf">論文</a>]<br />
<b>著者</b>: Robin David, Luigi Coniglio, Mariano Ceccato<br />
<b>概要</b>: <em>我々は、DSEとプログラム合成の両方を活用して、Mixed-Boolean-Arithmetic、データエンコーディング、仮想化で難読化されたプログラムを正常に合成する汎用的なアプローチを提案します。提案された合成アルゴリズムは、トップダウンの幅優先探索によってガイドされるオフラインの列挙合成プリミティブです。最先端の難読化ツールに対するその有効性と、合成に基づく他の同様のアプローチを凌駕するスケーラビリティを示します。また、複合難読化(さまざまな手法の組み合わせ)がある場合の有効性も示します。この進行中の研究は、特定の種類の難読化をターゲットにする合成の有効性を明らかにし、より堅牢なアルゴリズムと単純化戦略への道を開きます。</em>
</li><br/>
<li>
<b>Sydr: 最先端の動的シンボリック実行</b><br />
<b>発表先</b>: Ivannikov ISP RAS Open Conference, Moscow, Russia, 2020. [<a href="publications/ISPRAS2020-sydr.pdf">論文</a>] [<a href="publications/ISPOPEN2020-slide-sydr-vishnyakov.pdf">スライド</a>] [<a href="https://www.ispras.ru/conf/2020/video/compiler-technology-11-december.mp4#t=6021">ビデオ</a>]<br />
<b>著者</b>: A.Vishnyakov, A.Fedotov, D.Kuts, A.Novikov, D.Parygina, E.Kobrin, V.Logunova, P.Belecky, S.Kurmangaleev<br />
<b>概要</b>: <em>動的シンボリック実行(DSE)は、コンピュータセキュリティ(ファジング、脆弱性発見、リバースエンジニアリングなど)に膨大な応用があります。我々は、動的シンボリック実行のためのいくつかのパフォーマンスと精度の改善を提案します。非シンボリック命令のスキップにより、パス述語の構築を1.2~3.5倍高速化できます。シンボリックエンジンは、シンボリック実行中に数式を簡略化します。パス述語スライシングにより、ソルバークエリから無関係な連言項を排除します。各ジャンプテーブル(switch文)を複数の分岐として扱い、マルチスレッドプログラムのシンボリック実行方法を説明します。提案されたソリューションはSydrツールに実装されました。Sydrはパス述語の分岐反転を実行します。SydrはDynamoRIO動的バイナリ計測ツールとTritonシンボリックエンジンを組み合わせています。</em>
</li><br/>
<li>
<b>シンボリック難読化解除: 仮想化コードからオリジナルへ</b><br />
<b>発表先</b>: DIMVA, Paris-Saclay, France, 2018. [<a href="publications/DIMVA2018-deobfuscation-salwan-bardin-potet.pdf">論文</a>] [<a href="publications/DIMVA2018-slide-deobfuscation-salwan-bardin-potet.pdf">スライド</a>]<br />
<b>著者</b>: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet<br />
<b>概要</b>: <em>ソフトウェア保護は、正規のソフトウェアをリバースエンジニアリングや改ざんから保護するために、過去10年間で重要な位置を占めてきました。仮想化は、このような攻撃に対する最良の防御の1つと見なされています。我々は、シンボリックパス探索、テイント、再コンパイルに基づく汎用的なアプローチを提案し、仮想化コードから、元のコードと意味的に同一でサイズも近い非仮想化コードを復元できるようにします。難読化解除結果の正しさと精度の観点からの関連性を評価するための基準と指標を定義します。最後に、提案されたアプローチをいくつかの形式の仮想化に対して評価できるオープンソースのセットアップを提案します。</em>
</li><br/>
<li>
<b>VMベースのソフトウェア保護の難読化解除</b><br />
<b>発表先</b>: SSTIC, Rennes, France, 2017. [<a href="publications/SSTIC2017-French-Article-desobfuscation_binaire_reconstruction_de_fonctions_virtualisees-salwan_potet_bardin.pdf">フランス語論文</a>] [<a href="publications/SSTIC2017_Deobfuscation_of_VM_based_software_protection.pdf">英語スライド</a>] [<a href="https://static.sstic.org/videos2017/SSTIC_2017-06-07_P08.mp4">フランス語ビデオ</a>]<br />
<b>著者</b>: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet<br />
<b>概要</b>: <em>この発表では、仮想マシンベースのソフトウェア保護を自動的に解析し、そのような保護なしでバイナリの新しいバージョンを再コンパイルするアプローチについて説明します。この自動化アプローチは、テイント解析といくつかの具体化ポリシーによってガイドされたシンボリック実行、次にLLVM遷移を使用したバイナリ書き換えに依存しています。</em>
</li><br/>
<li>
<b>Tritonが仮想マシンベースのソフトウェア保護のリバースエンジニアリングにどのように役立つか</b><br />
<b>発表先</b>: CSAW SOS, NYC, New York, 2016. [<a href="publications/CSAW2016-SOS-Virtual-Machine-Deobfuscation-RThomas_JSalwan.pdf">スライド</a>]<br />
<b>著者</b>: Jonathan Salwan, Romain Thomas<br />
<b>概要</b>: <em>トークの最初の部分では、Tritonフレームワークの紹介を行い、そのコンポーネントを説明し、それらがどのように連携するかを解説します。次に、2番目の部分では、テイント解析、シンボリック実行、SMT単純化、LLVM-IR最適化を使用して、仮想マシンベースの保護をリバースエンジニアリングすることがどのように可能かを実演します。</em>
</li><br/>
<li>
<b>動的バイナリ解析と難読化コード</b><br />
<b>発表先</b>: St'Hack, Bordeaux, France, 2016. [<a href="publications/StHack2016_Dynamic_Binary_Analysis_and_Obfuscated_Codes_RThomas_JSalwan.pdf">スライド</a>]<br />
<b>著者</b>: Jonathan Salwan, Romain Thomas<br />
<b>概要</b>: <em>この発表では、DBA(動的バイナリ解析)がリバースエンジニアが難読化コードをリバースするのにどのように役立つかについて説明します。まず、いくつかの基本的な難読化手法を紹介し、次に(オープンソースのDBAフレームワークであるTritonを使用して)不透明述語の検出、CFGの再構築、元のアルゴリズムの発見、機密データの分離など、いくつかのものを突破する方法を説明します。その後、デモと今後の研究についての一言で締めくくります。</em>
</li><br/>
<li>
<b>Tritonが難読化バイナリの解析にどのように役立つか</b><br />
<b>掲載誌</b>: MISC magazine 82, 2015. [<a href="publications/MISC-82_French_Paper_How_Triton_may_help_to_analyse_obfuscated_binaries_RThomas_JSalwan.pdf">フランス語記事</a>]<br />
<b>著者</b>: Jonathan Salwan, Romain Thomas<br />
<b>概要</b>: <em>バイナリ難読化は、ソフトウェアの知的財産を保護するために使用されます。さまざまな種類の難読化が存在しますが、大まかに言えば、同じセマンティクスを保持しながら、バイナリ構造を別のバイナリ構造に変換します。難読化の目的は、元の情報を無用な情報に「埋もれさせ」、リバースエンジニアリングを困難にすることです。この記事では、Tritonフレームワークを使用して難読化されたプログラムを解析し、いくつかの難読化を破る方法を示します。</em>
</li><br/>
<li>
<b>Triton: コンコリック実行フレームワーク</b><br />
<b>発表先</b>: SSTIC, Rennes, France, 2015. [<a href="publications/SSTIC2015_French_Paper_Triton_Framework_dexecution_Concolique_FSaudel_JSalwan.pdf">フランス語論文</a>] [<a href="publications/SSTIC2015_English_slide_detailed_version_Triton_Concolic_Execution_FrameWork_FSaudel_JSalwan.pdf">詳細英語スライド</a>] <br />
<b>著者</b>: Jonathan Salwan, Florent Saudel<br />
<b>概要</b>: <em>このトークは、Pinに基づくコンコリック実行フレームワークであるTritonのリリースに関するものです。テイントエンジン、動的シンボリック実行エンジン、スナップショットエンジン、x64命令のSMT2への変換、制約を解くためのZ3インターフェース、Pythonバインディングなどのコンポーネントを提供します。これらのコンポーネントに基づいて、Tritonは脆弱性研究やリバースエンジニアリング支援のためのツールを構築する可能性を提供します。</em>
</li><br/>
<li>
<b>バイナリ計測を使用した動的動作解析</b><br />
<b>発表先</b>: St'Hack, Bordeaux, France, 2015. [<a href="publications/StHack2015_Dynamic_Behavior_Analysis_using_Binary_Instrumentation_Jonathan_Salwan.pdf">スライド</a>]<br />
<b>著者</b>: Jonathan Salwan<br />
<b>概要</b>: <em>このトークは、SecurityDayでのトークのパート2と考えることができます。前のパートでは、DSE(動的シンボリック実行)アプローチを使用して、メモリ内のターゲット関数をカバーする方法について説明しました。関数(またはその状態)をカバーすることは、すべての脆弱性を見つけることを意味するわけではありません。一部の脆弱性はプログラムをクラッシュさせません。そのため、特定のバグを見つけるために特定の分析を実装する必要があります。これらの分析は、バイナリ計測とプログラムのランタイム動作解析に基づいています。このトークでは、off-by-one、スタック/ヒープオーバーフロー、use-after-free、書式文字列、{write, read}-what-whereといったバグを見つける方法を説明します。</em>
</li><br/>
<li>
<b>動的シンボリック実行アプローチを使用した関数のカバレッジ</b><br />
<b>発表先</b>: Security Day, Lille, France, 2015. [<a href="publications/SecurityDay2015_dynamic_symbolic_execution_Jonathan_Salwan.pdf">スライド</a>]<br />
<b>著者</b>: Jonathan Salwan<br />
<b>概要</b>: <em>このトークは、バイナリ解析と計測に関するものです。特定の関数をターゲットにし、その関数の前にコンテキストメモリ/レジスタをスナップショットし、計測を中間表現に変換し、このIRに基づいてテイント解析を適用し、動的シンボリック実行(DSE)のための数式を構築/保持し、特定のパスを通過するための具体的な値を生成し、コンテキストメモリ/レジスタを復元して別のパスを通過するための別の具体的な値を生成し、ターゲット関数がカバーされるまでこの操作を繰り返す方法について説明します。</em>
</li>
</ul>
## 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},
}