Vector35 / Vector35/binaryninja-api
Don't display integer arguments as strings
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: 3.6.4561-dev
- OS: macOS
- OS Version: 14.0
- CPU Architecture: ARM64
Bug Description:
In the screenshot below, observe that - sometimes - we show the argument to a a function as a string despite the fact that it is typed as an integer. This is incredibly annoying as a user and the only way to fix it is to change the display type at every single call site.
Steps To Reproduce:
- Open the example binary
- Observe that the function being called many times around 0x0000e200 has a
uint16_tas the first argument (which is not a pointer type!) - Also observe that, in cases where a string is located at that address, it will display the string instead of the integer (which, again, is an identifier and not a pointer)
- Observe that the second argument is a
char *and that it has the same behavior (which is the correct behavior in this circumstance)
Expected Behavior:
We should only ever look through the pointer and resolve the string if we've got a pointer. I understand it may be too limiting to restrict this to a char * (e.g. a uint16_t * may actually be a wide character string pointer).
Screenshots:
Additional Information:
Example binary available to Vector 35 employees, search for divisibly visible purgatory deacon.
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 reproducing the call display around 0x0000e200 in the example binary and trace the argument-display logic that decides when to resolve strings. Verify that integer arguments such as uint16_t remain numeric while pointer arguments such as char * retain string resolution.
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
- Mostly clear
- Newbie friendliness
- 35/100