S2E/guest-tools

Name: guest-tools

Owner: S2E

Description: Tools that run inside the guest

Created: 2017-04-06 17:02:37.0

Updated: 2017-11-07 04:29:45.0

Pushed: 2018-01-15 13:12:33.0

Homepage: null

Size: 249

Language: C

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

S2E Guest Tools

This repository contains various tools to be installed and run in the guest OS in order to improve symbolic execution performance. These tools are optional, but simplify many of the common tasks such as transfering files between the host and the guest while running in S2E mode, monitoring guest OS events (e.g., process loads, program crashes, etc.), and injecting symbolic values in programs.

Windows

Contains Windows drivers and utilities to run symbolic execution. See README.md in that subfolder for more information.

Linux

Contains Linux-specifc guest tools. The most important is a shared library called `s2e.so` that can be LD_PRELOADed in the program under analysis. This library takes care of symbolic command line arguments, function models, etc.

Common

These are tools that can be used both on Windows and Linux. CMake requires MINGW64 in order to cross-compile for Windows. There are three important tools:

In addition to these tools, the `include` folder contains S2E header files for use by guest testing infrastructure. These headers expose the S2E engine API and plugin functionality to the guest.

S2E BIOS

This contains basic infrastructure code to run pieces of code on bare metal, without any operating system, programs, devices, or even BIOS interfering with execution. This is especially useful when debugging and testing the execution engine. The S2E BIOS provides a well-defined and reproducible starting environment where you can run your tests.

Building Guest Tools

Create a directory, run cmake followed by make. By default, 64-bit versions of the tools are built.

r guest-tools64
uest-tools64
e ..

If you need 32-bit guest tools:

r guest-tools32
uest-tools32
e -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-linux-i686.cmake ..

If you want to cross compile for Windows:

r guest-tools64
uest-tools64
e -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-windows-x86_64.cmake

Likewise for 32-bit Windows use the Toolchain-windows-i686.cmake file.

Note: this will not build Windows-specific tools (such as the driver), which require a Windows setup with Visual Studio 2015.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.