Vector35 / Vector35/binaryninja-api

Variable Slices

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

Nobody has claimed this yet.

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

Description

I think that #1974 faces a similar problem; wanting to know what happens to a variable during its lifetime in a function.

I think that a more expressive/informative version of that would be variable slices; showing a reduced version of HLIL/MLIL that contains only the expressions that affect a variable: assignments, reads, and the control-flow to get to those points, but not the instructions that solve/affect the control-flow conditions.

Sorta like this, but with the empty basic blocks removed:
image

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

Read issue #1974 alongside the HLIL and MLIL concepts described here, then define how a variable slice should represent assignments, reads, and the control flow reaching them. Done should include an agreed slice representation and behavior for removing empty basic blocks without including instructions that only compute control-flow conditions.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
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.