binaryninja-api icon indicating copy to clipboard operation
binaryninja-api copied to clipboard

Project and Session Support

Open psifertex opened this issue 8 years ago • 4 comments

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.

psifertex avatar Apr 14 '16 20:04 psifertex

  • Multi-binary
  • Workspace-only Plugins ~* Script snip-its~ (snippets plugin is in the plugin manager)

Container support is probably a pre-req #133

plafosse avatar Jul 24 '18 15:07 plafosse

A hierarchical text editor for notes

withzombies avatar Jul 24 '18 15:07 withzombies

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

  1. Open a file or BNDB in BinaryNinja
  2. Navigate to SettingsView and select "Project"
  3. Modify settings for the project
  4. 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.

bpotchik avatar Oct 01 '20 18:10 bpotchik

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

marpie avatar Jul 14 '22 17:07 marpie

Several features that are required for this ticket are now complete. See both #3375, and #624 for details.

bpotchik avatar Aug 11 '22 15:08 bpotchik

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.

psifertex avatar Feb 27 '23 16:02 psifertex

The bulk of the requests here are added in 3.6.4784-dev. Remaining improvements will be put in their own tickets.

negasora avatar Jan 23 '24 16:01 negasora