Giter Site home page Giter Site logo

linbin0107 / guest-tools Goto Github PK

View Code? Open in Web Editor NEW

This project forked from s2e/guest-tools

0.0 1.0 0.0 366 KB

Tools that run inside the guest

CMake 3.27% C 52.81% C++ 27.04% Shell 0.76% Makefile 0.46% Assembly 9.49% Batchfile 0.11% Python 4.91% Smarty 1.16%

guest-tools's Introduction

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:

  • s2eget: downloads files from the host into the guest. It can be used in scenarios where there is no real network, as is often the case during symbolic execution. This is similar to the concept of "shared folders" in other virtual machine environments.

  • s2eput: uploads files from the guest to the host. This is useful to save per-path data, such as core dumps, bug reports, and other experimental results.

  • s2ecmd: contains various commands that are useful in shell scripts. Among them, creating symbolic files and fetching seeds from the host.

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.

mkdir guest-tools64
cd guest-tools64
cmake ..
make

If you need 32-bit guest tools:

mkdir guest-tools32
cd guest-tools32
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-linux-i686.cmake ..
make

If you want to cross compile for Windows:

mkdir guest-tools64
cd guest-tools64
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-windows-x86_64.cmake
make

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.

guest-tools's People

Contributors

vitaly-cyberhaven avatar vitalych avatar adrianherrera avatar linbin0107 avatar borzacchiello avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.