S2E: The Selective Symbolic Execution Platform
S2E is a platform for writing tools that analyze the properties and behavior of software systems. S2E comes as a modular library that gives virtual machines symbolic execution and program analysis capabilities. S2E runs unmodified x86, x86-64, or ARM software stacks, including programs, libraries, the kernel, and drivers. Symbolic execution then automatically explores hundreds of thousands of paths through the system, while analyzers check that the desired properties hold on these paths and selectors focus path exploration on components of interest.
This documentation explains in details how to set up S2E, how to symbolically execute programs, and how to find vulnerabilities in them. S2E is pronounced S two E.
- Automated Generation of Proofs of Vulnerability with S2E
- Using S2E to generate PoVs for Linux, Windows, and CGC binaries
- Combining Kaitai Struct and S2E for analyzing parsers [external]
- Analyzing trigger-based malware with S2E [external]
- Solving CTF challenges with S2E [external]
- Using SystemTap with S2E
- Analysis of Windows DLLs
- Testing Error Recovery Code in Windows Drivers with Multi-Path Fault Injection
- Analyzing Microsoft Office Documents
- Control Flow Integrity Checking with S2E
- Translating binaries to LLVM with Revgen
- Equivalence Testing
Publications
S2E: A Platform for In-Vivo Multi-Path Analysis of Software Systems. Vitaly Chipounov. EPFL PhD Thesis, July 2014
The S2E Platform: Design, Implementation, and Applications. Vitaly Chipounov, Volodymyr Kuznetsov, George Candea. ACM Transactions on Computer Systems (TOCS), 30(1), Special issue: Best papers of ASPLOS, February 2012.
Enabling Sophisticated Analysis of x86 Binaries with RevGen. Vitaly Chipounov and George Candea. 7th Workshop on Hot Topics in System Dependability (HotDep), Hong Kong, China, June 2011
S2E: A Platform for In Vivo Multi-Path Analysis of Software Systems. Vitaly Chipounov, Volodymyr Kuznetsov, George Candea. 16th Intl. Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), Newport Beach, CA, March 2011.
Testing Closed-Source Binary Device Drivers with DDT. Volodymyr Kuznetsov, Vitaly Chipounov, George Candea. USENIX Annual Technical Conference (USENIX), Boston, MA, June 2010.
Reverse Engineering of Binary Device Drivers with RevNIC. Vitaly Chipounov and George Candea. 5th ACM SIGOPS/EuroSys European Conference on Computer Systems (EuroSys), Paris, France, April 2010.
Selective Symbolic Execution. Vitaly Chipounov, Vlad Georgescu, Cristian Zamfir, George Candea. Proc. 5th Workshop on Hot Topics in System Dependability, Lisbon, Portugal, June 2009