Vector35 / Vector35/binaryninja-api

Improve recognition of which constants are pointers.

Open
#4,399 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

There are two ways in which we're failing to recognize and coerce constants as pointers.

  1. https://github.com/Vector35/binaryninja-api/issues/4140
  2. There are some heuristics we can leverage which we aren't.
    3. First we must explicitly exclude temporaries which aren't ever used as Architectures like PPC/MIPS do their pointer loads in two steps. We don't want to coerce the page/align pointer to a real pointer as it can have some negative effects on xrefs. With those excluded we can search for DataVariables/Symbols/Functions which exist at the target and coerce those remaining to Pointers.

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 reviewing issue #4140 and the pointer-recognition behavior for PPC and MIPS loads. Investigate how temporaries, DataVariables, Symbols, and Functions are handled at a target address; done means excluding temporary page/alignment pointers while coercing remaining matching constants to pointers.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.