Coder Social home page Coder Social logo

portersrc / griffin-trace Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tjandhisstudents/griffin-trace

0.0 1.0 0.0 144.43 MB

A version of Griffin used to provide program traces

License: Other

Makefile 0.29% C 95.82% Assembly 1.87% C++ 1.30% Objective-C 0.35% Shell 0.06% Perl 0.13% Awk 0.01% Python 0.11% GDB 0.01% Yacc 0.02% Lex 0.01% UnrealScript 0.01% Scilab 0.01% Gherkin 0.01% XS 0.01% Perl 6 0.01% Roff 0.01% C# 0.01% Java 0.01%

griffin-trace's Introduction

GRIFFIN TRACE

Griffin Trace is an application of the Griffin Control-Flow Integrity (CFI) monitor. Griffin Trace watches a program during runtime and records traces during specific triggers. Right now, Griffin Trace can report the traces at Forward Edge and Shadow Stack violations, at the conclusion of a program run (either naturally or by an exception), at system calls, and at specific addresses.

WARNING

Griffin Trace uses a technique to reconstruct the control flow of a program in realtime in order to watch for forward-edge and shadow stack violations, and to identify specific address triggers. These require the use of mirror pages in user space memory, which currently requires disabling of SMAP protections that limit kernel access to user-space memory. No one should use this feature on deployment systems at this time, but rather restrict usage only to software testing environments.

Requirements

Griffin is a kernel patch that relies on specific Intel Processor Trace (PT) hardware. The Griffin kernel will only work on an Intel processor that includes Processor Trace. Modern Intel processors, such as Intel Xeon include this hardware.

Installation & Usage

To build and install the Griffin Trace kernel on your system, check out our Wiki pages for the latest documentation: Griffin Trace Wiki.

Reviewing the Trace

To read over the trace, you can run the PT trace tool provided in our Griffin kernel patch. The tool is located in ./tools/pt/ subfolder within the Griffin kernel.

  1. Compile the tool: $ make /path/to/griffin/tools/pt/
  2. Then provide the PT log generated by Griffin Trace: $ /path/to/griffin/tools/pt/pt /path/to/pt.log

This will produce a fairly large trace depending on the program, so you may want to feed the output into another file.

Trace Analysis Tools

Function & CFI Annotation

The Griffin Trace Annotator is included in the ./griffin-tests/ folder in this repository. The Annotator adds information to the PT log generated by Griffin Trace, and annotates any instructions used as entrypoints to functions, all system calls, and forward-edge and shadow stack CFI violations.

View the Griffin Trace Annotator for more information.

griffin-trace's People

Contributors

cybourgeoisie avatar mitthu avatar carter-yagemann avatar

Watchers

Chris Porter 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.