Giter VIP home page Giter VIP logo

binja-msvc's Introduction

binja-msvc's People

Contributors

couleeapps avatar dzervas avatar emesare avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

binja-msvc's Issues

Component support

With the components view now being stable enough to enable by default, we should add all symbols to their respective namespaces.

A better graph generation

Similar to #28 this focuses mainly on the fact that at ~40k links in the DOT file its never going to render. We need a better solution to visualize the class hierarchy.

Support both dev & stable

Now that stable binaryninja has supported APIs we can move binaryninja-api out of tree and have the CI build for multiple versions. This will likely involve us manually marking the ABI for each tagged version we pull from binaryninja-api. The python loader will also need to be updated to accommodate this by providing the correct build for the users ABI version.

ARM64 support

I recently realized (tried to load x64 binary on arm mac lol) that CI does not build for arm platforms. This should be easy to solve.

Dry run release action

Right now every test of the release action creates a patch commit that is... annoying. Would be nice to have a dry run version that doesn't actually do anything but pull the build artifacts and put it in a new artifact bundle, one that reflects the release bundle.

This is more so useful for people looking at this repository as a reference for building a native Binary Ninja plugin.

Tag virtual functions

Tagging virtual functions will allow later processes to identify a virtual function apart from its place in a virtual function table, further reducing the work required.

Automatic releases

Using github actions we can build the plugin for every supported binja platform and push to github releases for easy installation.

Fix 32bit support

Our CompleteObjectLocator scanner will skip COL_SIG_REV0 colocators, fixing this should allow scanning of 32bit binaries.

License

You may want to put a license on this repo so that others may use the code

Publish in plugin manager

This will require that we have a python frontend that can automate the process of locating and downloading the correct version of the native plugin for the respective version. We would also need to ensure that those releases are not tampered with, possibly checking to make sure that the release artifact was published by a GitHub action, ensuring that binary's code is of the checked-out commit.

Identify heap constructors

Identifying heap constructors will greatly help in generating better class object types as member variables might be assigned in these functions.

Fixup RVA pointers

In case of COL_SIG_REV1, RTTI will store relative pointers, we should add the appropriate cross references for these.

GraphViz generation

Generate a graph for constructors as well as for vtables, in case of no RTTI the vtable graph should group together all vtables which share a virtual function.

Support C++ exceptions

Using our RTTI information we can identify and symbolize both the throw metadata and the attached catch routine. This should be done in two passes. First pass should symbolize the throw metadata and the second pass should rewrite callsite to illustrate the branching, possibly with an xref to the catch routine and for the non-catch routine we should just be able to make the throw function returnable.

The end result should look something like this, the throw is highlighted orange to illustrate it could jump to the catch routine instead of continuing. Not sure how "correct" this is.

image

Support RTTI stripped binaries

Currently RTTI must exist in the binary for vtables to be defined, however we should add the ability to atleast manually create a vtable and possibly scan the entire binary for possible vtables automatically.

This isn't hard however accompanying this we should really cleanup the code so that we are not so dependent on previously ran commands.

Remove bundled LLVM demangler

The built-in binary ninja MS demangler has improved recently and it now demangles all necessary names. Removing the need for the bundled LLVM demangler.

Fix lock contention in VirtualFunction::IsUnique

There is major lock contention happening inside the callee VirtualFunctionTable::GetCOLocator, this is the reason analysis has been slow ever since class types creation was moved to the first pass.

Example: of the ~23 seconds profiled 91% of that time is spend in VirtualFunction::IsUnique.

image

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.