
Triton 是一个动态二进制分析库。它提供了内部组件,允许您构建程序分析工具, 自动化逆向工程、进行软件验证或仅仅是模拟代码。
由于 Triton 是一个兼职性质的项目,如果不完全可靠,请不要责怪我们。提出问题 或 提交拉取请求 总是比嘲讽更好 =)。不过,您可以在推特上关注开发进展 @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 自动补全不工作,请按照以下步骤操作:
/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" ..
你可以使用 setup.py 在 Windows 上生成调试版本的 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*)
然而,如果你更倾向于直接下载预编译的库,可以查看我们AppVeyor上的制品。 请注意,如果你使用AppVeyor的制品,可能需要安装用于Visual Studio 2012的Visual C++ Redistributable包。
vcpkg中的Triton端口由微软团队成员和社区贡献者保持最新。 vcpkg的网址是: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):Titan 是一个使用 Triton 的 VMProtect 反虚拟化工具。
### 论文与会议<ul dir="auto">
<li>
<b>Sydr-Fuzz:面向安全开发生命周期的持续混合模糊测试与动态分析</b><br />
<b>演讲地点</b>:Ivannikov ISP RAS 开放会议,俄罗斯莫斯科,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 纪念研讨会,俄罗斯喀山,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 中实现了所提出的方法。我们评估了强乐观策略、仅包含最后一个约束取反的乐观策略,以及它们的组合。结果表明,策略组合有助于提高代码覆盖率或每分钟正确反转分支的平均数量。与其他配置相比,同时应用这两种策略是最优的。</em>
</li><br/>
<li>
<b>灰盒程序合成:攻击数据流混淆的新方法</b><br />
<b>演讲地点</b>:Blackhat USA,美国内华达州拉斯维加斯,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,法国雷恩,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>本文提出了一种自动化软件测试过程的方法,从源代码到编译后程序的动态测试。具体来说,从指示源代码行报警的静态分析报告出发,它能够动态地覆盖这些行,并机会性地检查它们是否可能触发崩溃。结果是一个测试语料库,可以覆盖报警,并在报警为真阳性时触发它们。本文讨论了在编译后的二进制文件中跟踪报警的方法、测试引擎的选择过程,以及在嵌入式系统和物联网系统的 TCP/IP 协议栈实现上获得的结果。</em>
</li><br/>
<li>
<b>符号安全谓词:猎捕程序弱点</b><br />
<b>演讲地点</b>:Ivannikov ISP RAS 开放会议,俄罗斯莫斯科,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 来衡量动态漏洞检测工具的准确性。测试系统还验证生成的输入是否触发了 sanitizer。我们评估了 Sydr 在 Juliet 测试套件中 11 个 CWE 上的准确性。Sydr 总体准确率达到 95.59%。我们公开提供 Sydr 评估工件以促进结果可重复性。</em>
</li><br/>
<li>
<b>面向动态符号执行中的符号指针推理</b><br />
<b>演讲地点</b>:Ivannikov 纪念研讨会,俄罗斯下诺夫哥罗德,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,美国加利福尼亚州圣地亚哥,2020年。[<a href="publications/BAR2020-qsynth-robin-david.pdf">论文</a>]<br />
<b>作者</b>:Robin David、Luigi Coniglio、Mariano Ceccato<br />
<b>摘要</b>:<em>我们提出了一种通用方法,利用 DSE 和程序合成成功合成了用混合布尔算术、数据编码或虚拟化混淆的程序。所提出的合成算法是一种由自顶向下广度优先搜索引导的离线枚举综合原语。我们展示了它对抗最先进混淆器的有效性及其可扩展性,因为它超越了其他类似的基于合成的方法。我们还展示了它在复合混淆(多种技术的组合)存在下的有效性。这项正在进行的工作揭示了合成针对特定类型混淆的有效性,并为更鲁棒的算法和简化策略开辟了道路。</em>
</li><br/>
<li>
<b>Sydr:前沿动态符号执行</b><br />
<b>演讲地点</b>:Ivannikov ISP RAS 开放会议,俄罗斯莫斯科,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,法国巴黎-萨克雷,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>软件保护在过去十年中占据了重要位置,以保护合法软件免受逆向工程或篡改。虚拟化被认为是对抗此类攻击的最佳防御之一。我们提出了一种基于符号路径探索、污点和重新编译的通用方法,可以从虚拟化代码中恢复出与原始代码语义相同且大小相近的去虚拟化代码。我们定义了标准和度量,以评估反混淆结果在正确性和精确性方面的相关性。最后,我们提出了一个开源设置,允许针对多种虚拟化形式评估所提出的方法。</em>
</li><br/>
<li>
<b>基于 VM 的软件保护的反混淆</b><br />
<b>演讲地点</b>:SSTIC,法国雷恩,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,美国纽约州纽约市,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 框架,展示其组件并解释它们如何协同工作。然后,第二部分将演示如何使用污点分析、符号执行、SMT 简化和 LLVM-IR 优化来逆向基于虚拟机的保护。</em>
</li><br/>
<li>
<b>动态二进制分析与混淆代码</b><br />
<b>演讲地点</b>:St'Hack,法国波尔多,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 来破解某些东西,例如检测不透明谓词、重建控制流图、找到原始算法、隔离敏感数据等等……最后,我们将进行演示并简要介绍我们未来的工作。</em>
</li><br/>
<li>
<b>Triton 如何帮助分析混淆二进制文件</b><br />
<b>发表地点</b>:MISC 杂志 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,法国雷恩,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>本演讲是关于 Triton 的发布,一个基于 Pin 的具体符号执行框架。它提供了污点引擎、动态符号执行引擎、快照引擎、x64 指令到 SMT2 的翻译、用于求解约束的 Z3 接口以及 Python 绑定。基于这些组件,Triton 提供了构建工具以进行漏洞研究或辅助逆向工程的可能性。</em>
</li><br/>
<li>
<b>使用二进制插桩的动态行为分析</b><br />
<b>演讲地点</b>:St'Hack,法国波尔多,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 演讲的第二部分。在上一部分中,我们讨论了如何使用 DSE(动态符号执行)方法覆盖内存中的目标函数。覆盖一个函数(或其状态)并不意味着找到所有漏洞,有些漏洞不会导致程序崩溃。因此,我们必须实现特定的分析来发现特定的错误。这些分析基于二进制插桩和程序的运行时行为分析。在本演讲中,我们将看到如何发现以下类型的错误:off-by-one、栈/堆溢出、释放后使用、格式化字符串以及 {写, 读}-什么-哪里。</em>
</li><br/>
<li>
<b>使用动态符号执行方法覆盖函数</b><br />
<b>演讲地点</b>:Security Day,法国里尔,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},
}