Vector35 / Vector35/binaryninja-api
PDB has incomplete vtable definition for type with subclasses
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 1.3k
- Forks
- 298
- Avg merge
- 5d 5h
- Merged PRs (30d)
- 19
Description
Version and Platform (required):
- Binary Ninja Version: 4.1.5167-dev
- OS: macOS
- OS Version: 14
- CPU Architecture: M1
Bug Description:
One of the VTables in my pdb was loaded missing a member, causing the size and subclasses to be slightly wrong. Upon further investigation in the pdb itself, this type actually had multiple definitions, leading to warnings being printed about them conflicting.
Steps To Reproduce:
- Open Archive.zip
- Observe warnings for "[Default warn] Found two types both named
Animal, only one will be used." - Observe Animal::VTable type
- Observe it does not have __vecDelDtor like many of the other VTable types
- Observe symbol at 0x409bc0 clearly showing that missing member in the VTable
Expected Behavior:
I expected __vecDelDtor to be on the vtable type considering it is present when the VTables are defined in code. I'm not sure what I expected in regards to the multiple copies of a type being defined, maybe some sort of deduplication?
Additional Information:
Not strictly a binja bug, that pdb has like 4 definitions of Animal and some of them legitimately do / do not have that function listed as a virtual member
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by opening the supplied Archive.zip and inspecting the conflicting Animal definitions, the generated Animal::VTable type, and the symbol at 0x409bc0. Compare how the four definitions represent __vecDelDtor and determine what behavior should apply when they conflict; done means the resulting vtable and subclass information match the relevant PDB definition without losing valid members.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- reverse-engineering
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100