Vector35 / Vector35/binaryninja-api

[Rust API] Expose functions to map between IL levels

Open
#7,206 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Component: Rust API Effort: Low Impact: Medium
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 Rust API does not currently expose any way to map from an LLIL instruction to the corresponding MLIL instruction(s) or vice versa. Similarly absent are functions for MLIL <-> HLIL.

This would provide the equivalents of:

MediumLevelILFunction::GetLowLevelILInstructionIndex
MediumLevelILFunction::GetLowLevelILExprIndex
MediumLevelILFunction::GetLowLevelILExprIndexes

MediumLevelILFunction::GetHighLevelILInstructionIndex
MediumLevelILFunction::GetHighLevelILExprIndex
MediumLevelILFunction::GetHighLevelILExprIndexes

for each of the IL levels.

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 by locating the Rust API bindings for LLIL, MLIL, and HLIL, then compare them with the listed C++ methods: GetLowLevelILInstructionIndex, GetLowLevelILExprIndex, GetLowLevelILExprIndexes, and their high-level equivalents. Done means the Rust API exposes mappings in both directions between each adjacent IL level, including instruction, single-expression, and multiple-expression lookups.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, rust
Domain
api, reverse-engineering
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.