Code Monkey home page Code Monkey logo

binja_sensei's Introduction

binja_sensei

Educational tools for Binary Ninja

This plugin provides resources for beginners to learn reverse engineering using Binary Ninja. It automatically installs several other plugins, and provides examples that showcase the features of these plugins.

NOTICE:

As of 07/18/2018, the Binary Ninja Repository Manager that this plugin uses to install other plugins has been temporary disabled. You'll need to install the plugins manually by cloning them into your plugins directory.

Origins

This project is a product of NCC Group's 2017 summer internship program. Further updates will be tracked at https://github.com/ehennenfent/binja_sensei (That's this repo). NCC Group is not responsible for any further changes made to the repository after August 18th, 2017.

Setup

Plugin Manager

For the sake of futureproofing, Binja Sensei installs plugins via the yet-incomplete Plugin Manager API. Since the plugin manager does not currently have a GUI, installation must be accomplished by running the following snippet at the Binary Ninja script console (Accessed via Ctrl+`).

manager = RepositoryManager()

manager.enable_plugin('binja_sensei', install=True)

Note: Depending on when you installed Binja, you may need to run manager.check_for_updates() and restart Binja for this plugin to show up. I strongly recommend installing on a fresh VM.

If you're running this before August 31st, 2017, you'll need to be using the development version of Binary Ninja, as dependency installation relies on b0778fc and 326253a.

Next, restart Binary Ninja. When loaded, Sensei will update all the bundled plugins to the latest version, and install any python dependencies for each plugin. It won't automatically run install scripts, so if you're on Ubuntu and intend to set up binja_dynamics, you'll need to navigate to ~/.binaryninja/repositories/default/plugins/binja_dynamics and run ./install.sh.

Manual Installation

If any of the plugin installations fail, you may have more success performing a manual installation. Pending Issue #753, some plugins that reply on absolute file paths may not work unless manually installed. To manually install, copy the relevant repository links below, and clone them inside of your plugins directory.

https://github.com/carstein/Annotator.git
https://github.com/ehennenfent/binja_arch_ref.git
https://github.com/ehennenfent/binja_dynamics.git
https://github.com/ehennenfent/binja_explain_instruction.git
https://github.com/carstein/Syscaller.git

Bundled Tools

Please note that the bundled tools remain property of their respective authors. While this plugin is offered under an MIT License, that license does not extend to any of the plugins below.

Writeups

To demonstrate potential use cases for these plugins, solutions for the five overflow challenges from PicoCTF 2013 are included. Please note that minor changes in terms of functionality, color scheme, and bugfixes may have been implemented since the creation of the writeups.

Examples

Annotator uses a virtual stack to annotate calls to libc functions with argument prototypes. annotator screenshot

This plugin displays a cheat sheet with Binary Ninja's internal information on the architecture. arch-ref screenshot

This plugin adds a Qt frontend to Binjatron, including highlights intended to help beginners spot important memory locations. binja-dynamics screenshot

Adds a popup window that explains in simple English what an assembly instruction does. binja-explain-instruction screenshot

Annotates system calls with arguments. syscaller screenshot

binja_sensei's People

Contributors

ehennenfent avatar

Stargazers

Luke avatar  avatar Benjamin Hyo-keun Oh avatar Ryan Villarreal avatar Mohamed Saher avatar brainiac avatar Vasilij Schneidermann avatar Josh Hawkins avatar  avatar Lun avatar  avatar  avatar Tristan Hume avatar Simon Brakhane avatar Chip Christian avatar cloud avatar Phil avatar defunct avatar Vuong Hoang avatar Dan Guido avatar

Watchers

James Cloos avatar  avatar Josh Hawkins avatar

Forkers

elix0r

binja_sensei's Issues

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.