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.
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?
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:
Sketches on format design:
bv://functions/1234/variables/stack/-12/typebv://comments/abcdMaybe integrate into the existing URI scheme?
binaryninja:/tmp/foo.bndb#functions/1234/return_typeAnalysis 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.