Skip to content

URI format for addressing analysis objects #8308

Description

@CouleeApps

What is the feature you'd like to have?
I want a unified way to refer to analysis objects across the entire data model. This id format needs to uniquely identify a specific object, and ideally would be hierarchical so that we don't have to generate unique values for temporary / small objects.

Is your feature request related to a problem?

  • MCP could make good use of this, since it needs to refer to objects in a textual format
  • Merge resolution needs something like this for dependency resolution
  • Having the ability to navigate to or focus an object referred to by a string

Are any alternative solutions acceptable?
Previous solutions to these problems require writing a bunch of implementations for every analysis object class you can be bothered to write.

Additional Information:
The implementation of this has a couple of weird quirks:

  • Various analysis objects have confusing unique identifier characteristics (eg Symbols)
  • Various analysis objects aren't actually objects at all (eg Data Variables)
  • To know the path to an object, you need to know its parents recursively, so the function that returns the URI needs to know this hierarchy too.

Sketches on format design:
bv://functions/1234/variables/stack/-12/type
bv://comments/abcd

Maybe integrate into the existing URI scheme?
binaryninja:/tmp/foo.bndb#functions/1234/return_type

Analysis object hierarchy (v35 internal): Check the wiki page for Collaboration Conflict Resolution and the subsection on Analysis Data

Considered: have GUIDs generated for every object, so the lookup can be done in a flat namespace. This is likely not feasible since many analysis objects are small (eg Variables) and trying to shove a whole guid in there will be a massive memory regression.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions