Git Product home page Git Product logo

mambo-v's Introduction

MAMBO-V: Dynamic Side-Channel Leakage Analysis on RISC-V

Source code for our RISC-V dynamic binary instrumentation tool based on the ARM MAMBO framework.

MAMBO-V is a lightweight dynamic binary instrumentation tool for 64-bit RISC-V systems. The microwalk-tracer plugin creates application traces that can be used for side-channel leakage analysis with Microwalk.

Make sure to also checkout the Microwalk main repository!

Publications

Build

RISC-V (cross compilation): Prerequisites :

    cd mambo
    CROSS_PREFIX=riscv64-unknown-linux-gnu- make

Usage

To launch an application under MAMBO-V, run:

./dbm <path_to_executable> [application's command line arguments]

For example to run ls -a under MAMBO-V, execute:

./dbm /bin/ls -a

Tip: When an application running under MAMBO exits, the string We're done; exiting with status: <APPLICATION'S EXIT CODE> will be printed to stderr.

Plugin API

The plugin API is event-driven. Plugins should use a init function with __attribute__((constructor)) to register themselves using mambo_register_plugin(). Once a plugin is registered, it can install callbacks for various events using the mambo_register_*_cb() functions. Callback-related functions are listed in api/plugin_support.h. Code generation functions are listed in api/emit_<INST SET>.h and code generation helpers are listed in api/helpers.h. You can also inspect the sample plugin in the plugins/ directory.

To build MAMBO/MAMBO-V with plugin support, uncomment the -DPLUGINS_NEW CFLAG in the makefile. Then, the source code or object file(s) of the plugin you're trying to build must be added to the PLUGINS= line in the makefile. Note that multiple plugins can be enabled at the same time (and will work correctly if properly designed). For performance reasons, it is recommended to remove unused plugins from the PLUGINS= list.

mambo-v's People

Contributors

alirazeen avatar guillermocallaghan avatar lgeek avatar manouchehri avatar mastercaution avatar umarcor 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.