Vector35 / Vector35/binaryninja-api

UI Display Showing Symbols That Couldn't Be Demangled

Open
#3,887 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

What is the feature you'd like to have?
I'd like a list of all symbols that were unable to be demangled similar to how Ghidra displays it's failures and presents a dialog with the mangled symbols it failed to demangle.

This could be checked by comparing against tools available on the users path such as undname.exe (which may not be the best example since it's not a cross platform tool) or by checking if the mangled name and demangled name are the same after the demangler processes it. There are of course some symbols that are not mangled at all like core C apis..

It would also be good to know if Binary Ninja could identify why it wasn't able to get the demangled name since new additions are being added with each compiler update and language that hits the market. What I mean by this is if it was demangling a symbol fine, however then it encountered an unexpected character based on the information it had been able to extract so far and it didn't know how to proceed, it could log the context.

Is your feature request related to a problem?
I'm was quite happy when the demangling was improved significantly a few months back, however I still have HUNDREDS of symbols not being demangling that undname.exe is able to demangle without any issue. I seem to find more and more as time goes by and I don't see that trend stopping since the specifications are constantly being developed further.

Are any alternative solutions acceptable?
Continuously improving the demangler based on failures users report or allowing for users to use a secondary pass workflow to demangle any remaining symbols, although those are more reactive approaches to already having a list of failures

Additional Information:
This would make it easier for Binary Ninja to stay on top of symbol mangling issues.

Here's how Ghidra displays it:
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

The issue names no implementation files, tests, or entry points. Begin by locating Binary Ninja's existing symbol-demangling path and determining how failed results are represented; done should provide a defined way to identify and list symbols that could not be demangled, with failure context if available.

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.