Vector35 / Vector35/binaryninja-api

Offer plugins a way to add serialized data into the database

Open
#6,545 3 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component: Core Effort: Low Impact: Medium
Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Description

We should offer a plugin a callback or some other mechanism to add data into the database during the serialization process. This allows them to more efficient store and retrieve analysis related data.

A potential use case is like a plugin deals control-flow flattening, and it works by first analyzing the function, figuring out the mapping relationship of the basic blocks, and then use a workflow to rewrite the IL. Since the analysis and calculation can be expensive, so it cannot be redo every time the workflow runs, it must be somehow cached. And this cached information needs to be saved into the database as well. And the ability to write data into the database during the serialization process gives the plugin the same capacity to persist the data as the analysis done in the core

An alternative to this is to support function-level metadata (right now we only support binary view level), but I believe that is inferior to directly allow a plugin to do serialization

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or entry points are named. Start by reading the existing serialization and binary-view metadata mechanisms, then determine how a plugin could persist analysis data during serialization; done means a documented, usable plugin mechanism for storing and retrieving that data.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
databases, reverse-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.