binaryninja-api
binaryninja-api copied to clipboard
Project and Session Support
Including:
- current selection
- current view
- window settings
- other preferences?
- ?
Other features: if opening from other users, don't load the workspace by default, but ask.
- Multi-binary
- Workspace-only Plugins ~* Script snip-its~ (snippets plugin is in the plugin manager)
Container support is probably a pre-req #133
A hierarchical text editor for notes
Initial support for project level settings added in build 2.1.2398-dev
. Project settings reside at <your project folder>/.binaryninja/settings.json
. Project settings override the User settings.
Create New Project Settings
- Open a file or BNDB in BinaryNinja
- Navigate to SettingsView and select "Project"
- Modify settings for the project
- Save the existing, or create a new BNDB. The project directory and settings file is created in the containing folder of your BNDB.
Application of Project Settings Project settings are gratuitously applied to files or BNDBs opened in the same folder as an existing project and settings file.
As several tickets are somehow related to my feature request, I will use this ticket to collect what my dream feature set would look like and will link the corresponding tickets I found below.
Multi-Binary / Container Support / Projects
All these things seem to be somehow related or could benefit from a joint implementation (tracked in #133). I often encounter projects that require analyzing multiple files together to understand the data flow and workflow. So, a binary that imports several functions from multiple (closed-source) libraries requires reverse engineering them to reconstruct types and understand what the functions should accomplish. Currently, I use a REST server that syncs types between different BNDBs using a plugin, but an integrated solution as described below would certainly be better.
Feature Request
Implement a set of features to provide the user with the ability to:
- import multiple binaries into one "project" BNDB (like Ghidra Projects)
- double-clicking imported functions should "jump" to the corresponding BNDB (#3272)
- have BinaryNinja API functions to query which BNDBs import a function, etc.
- essentially doing cross binary analysis (or at least getting a reference back that the function is imported in these other BNDBs)
- enable easy sharing of types between these linked binaries (#3271)
- Ghidra has that feature, but it is poorly implemented as you need to sync the types manually, which is very cumbersome
- provide the ability to view all binaries in a single memory layout (this may require that the user provides the memory layout manually if it cannot be inferred by the PE/ELF file; e.g., if it is a raw (memory) dump) (#133)
I'm unsure if a "single" BNDB is the best option or if using the "Project Settings" would be better. Using the "Project Settings" (all BNDBs in the same folder) would provide for the flexibility to dynamically add files quickly, but also to only "share" (copy) a single BNDB or back them up separately.
If this comment doesn't fit here, just move/remove it, I just wanted to collect my requirements as I know you are working on a solution internally and wanted to provide early "feedback".
Several features that are required for this ticket are now complete. See both #3375, and #624 for details.
Another small note -- don't know if the current implementation changes window title to include project name or other indication that the current tab is a project but it should.
The bulk of the requests here are added in 3.6.4784-dev
. Remaining improvements will be put in their own tickets.