Vector35 / Vector35/binaryninja-api

Ability to hide VFT member of class when calling member functions

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

Nobody has claimed this yet.

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

Description

I appreciate the current implementation, which displays the VFT member itself when accessing member functions of the class, as demonstrated in the example below:

However, I prefer this behavior only if I haven't fully understood the class that I'm reversing. When I feel confident in my understanding of the class, I prefer not to see calls to member functions through the VFT member (e.g. cat_vtable). Instead, I would like to see member function calls directly on the class itself. For example, instead of cat->cat_vtable->introduce(cat), I want to see cat->introduce(cat). This provides a clearer and more concise representation of the code so saving space.

Perhaps we could inform BN to hide the VFT member with an option, or we could adopt a similar approach to IDA. If I remember correctly, IDA hides it when we name the VFT pointer and VFT name according to certain rules. Personally, I would prefer this approach.

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 how Binary Ninja renders member-function calls through a VFT member, using the cat_vtable example in the issue as the expected comparison. Investigate whether the behavior should be controlled by an option or by naming rules like IDA; done means confidently identified behavior and an agreed implementation scope for hiding the VFT member.

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
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.