Vector35 / Vector35/binaryninja-api

Wrap and document BNPrepareToCopy APIs

Open
#4,373 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

What is the feature you'd like to have?
The core API functions BNPrepareToCopyLowLevelILFunction and BNPrepareToCopyLowLevelILBasicBlock are currently completely undocumented, despite being necessary for the official inliner example. Additionally, no wrapper is exposed to Python, so even when you know what they are for, you can't call them without manually using the core API.

Are any alternative solutions acceptable?
If these APIs could be automatically handled when necessary, that would be great. Unfortunately, I'm not entirely clear on their use or necessity, other than the fact that they are used by the inliner.

Additional Information:
This is the description I got on the Slack:

The short of it is that they end up copying the labels for the targets of outcoming edges of blocks.

Unfortunately, I don't quite understand what that means...

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

Start with examples/workflows/inliner/inliner.cpp at the linked use of BNPrepareToCopyLowLevelILFunction and trace both named core APIs to understand how outgoing-edge labels are copied. Done means documenting both APIs and exposing Python wrappers, with the inliner use case providing the available behavior to verify.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
backend-api-design, reverse-engineering
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.