Vector35 / Vector35/binaryninja-api

Don't display integer arguments as strings

Aperta
#4,692 2 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Component: Core Effort: Low Impact: Medium
Lingua principale
C++
Stelle
1.3k
Fork
298
Merge medio
5g 5h
PR unite (30g)
19

Descrizione

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:

  1. Open the example binary
  2. Observe that the function being called many times around 0x0000e200 has a uint16_t as the first argument (which is not a pointer type!)
  3. 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)
  4. 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:

image

Additional Information:
Example binary available to Vector 35 employees, search for divisibly visible purgatory deacon.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp
Ambito
reverse-engineering
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.