Vector35 / Vector35/binaryninja-api

Cannot set the return register on a call unless it is a call to an actual function

Open
#5,994 4 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Right now we cannot set the return register of a call if it is an indirect call or a call to a pointer in a data variable. This can be set if the call it is an actual function call (using the edit function properties dialog), but there is no way to specify that info only using the type of the call. Similarly we cannot set clobbered registers for the very same reason. Luckily, we can set the type of the call, including no-return, stack adjustment, etc.

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 the call type and the existing function-properties configuration described in the issue. Trace how indirect calls and calls through data-variable pointers are represented, then determine how return and clobbered registers could be specified without an actual function. Done means both register settings can be applied to those call types.

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
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.