Git Product home page Git Product logo

nehebn2's Introduction

Nehebn2

NEarlyHEadlessBinaryNinja(2)

The only thing better than completely headless.


(TL;DR at bottom)

A friend of mine threatened to use R2 so he wouldn't have to use a GUI, and on my honor as Binary Ninja in training (aka summer intern) I felt duty-bound to set out upon this mission... A couple weeks of my free time and roughly 800 lines of python3 later, we have this: a CLI for BinaryNinja: N2.

Though, any more of my free time would be kinda ridiculous for a private little gag, so I'm open sourcing N2...Most of the initial grunt-work is now complete, and we have:

  • Linear Disassembly View, with scroll up/down AND page up/down. WOW!
  • 6.5 xrefs! WOAH!
  • A scrollable list of functions, and the ability to jump to one at will, KAACHOW!!
  • Hex View with no visible horizontal cursor! Count me in!
  • A place holder for Control Flow Graphs! POW!
  • A main menu! Ding ding ding!
  • And customizable key-bindings KABLAM!
    (just go ahead and mentally render that like a comic book for me please)

Currently, if you didn't get this from the list above, N2 is seriously lacking... But I made sure to keep track and make a list of the most important things that need to be added, and if you're interested a quick grep -r "# TODO..." gives us:

# TODO...FIX the ugly main menu screen...seriously
# TODO...implement color themes with the new color theme format courtesy of peter
# TODO...implement disassembly options
# TODO...implement scroll bars on windows?, and the setting to disable them
# TODO...implement patching linear/cfg
# TODO...implement the ability to cursor into linear assembly lines.
# TODO...implement undo!  I think the API actually takes care of this for us nicely, but editing has to be implemented first and it'd be nice to snap the view back to whatever is being edited too
# TODO...Implement Wrap Around
# TODO...Implement Not Crashing On Moving Past Buffer
# TODO...implement xrefs window up/down, cursor, and selection mechanics
# TODO...FIX...stop clipping
# TODO...FIX...will currently jump to the top of a block, also skips down in some cases?
# TODO...make this for loop at least reasonably efficient...it's seriously just a clusterfuck right now
# TODO...implement parseInput_cfg_main
# TODO...FIX the lag induced by fetching the names of the functions (seems to take forever)
# TODO...get and render xrefs in a more elegant manner
# TODO...implement render_cfg (still need to render actual graphs..)
# TODO...seperate views into different functions
# TODO...add some settings to the settings view
# TODO...implement live-refreshing the settings.json during run (add the key-binding and check for it here in the global input loop)
# TODO...support multi-key presses? Not sure if this already works or not

As you can see, there is plenty left to do and I am eager to do them, but I want to know what you think!:

Demo

To be clear, this is built using the BinaryNinjaAPI and python3. To use this, you will need to have a headless license from Vector35...though you might also be able to run it in the script console as well.

TL;DR:
If you're interested in this thumbs up on GitHub issue #1 and if there's enough interest I'll keep working on this rather than moving on to another project. If you want to contribute, I'll be happy to accept reasonably well-done pull requests.

I hope you like what you see, and I hope you let me know so I can keep working on this...but until then, try to keep your head on straight!

nehebn2's People

Contributors

kylemiles 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.