Broken navigation with nested anonymous structures
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- cpp
- Ambito
- reverse-engineering
Direzione di ricerca
Start by reproducing the nested anonymous-structure and union examples in the types view, then inspect the HLIL/MLIL tokens and their typeNames as described. Trace how double-click navigation resolves those tokens, including data variables, and consider the issue done when inner fields navigate to their definitions.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Version and Platform (required):
- Binary Ninja Version: 6.1.10668-dev
- Edition: Ultimate
- OS: macOS
- OS Version: 27.0
- CPU Architecture: M5
Bug Description:
Trying to navigate to a field nested in one or more anonymous structures fails to navigate.
Steps To Reproduce:
Structure:
struct foo {
int pad;
struct {
int bar;
} inner;
};
Code (x86 Windows):
int32_t sub_0(struct foo* arg1)
mov eax, dword [esp+0x4]
mov eax, dword [eax+0x4]
retn
HLIL:
return arg1->inner.bar
Trying to double click bar fails to navigate to the field. Looking at the token itself:
>>> current_il_instruction.tokens[-1].typeNames
['bar']
The token doesn't have valid type information for figuring out how to navigate to it.
Making it a union instead:
union foo_u
{
struct
{
int32_t a;
int32_t b;
} bar;
};
Function type:
int32_t sub_0(union foo_u* arg1)
HLIL (broken):
return arg1->bar.__offset(0x4).d
MLIL:
eax = eax_1->bar.b
Double clicking b in MLIL also fails to navigate. The token for this:
>>> current_il_instruction.tokens[-1].typeNames
['foo_u', 'bar', 'b']
These two types also fail to navigate when made into data variables.
Expected Behavior:
Double clicking the inner field of these structures should navigate to that field in the types view.
- Lingua principale
- C++
- Stelle
- 1.3k
- Fork
- 298
- Merge medio
- 5g 5h
- PR unite (30g)
- 19
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Vector35/binaryninja-api
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
Vector35/binaryninja-api#8540 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
Vector35/binaryninja-api#8516 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
Vector35/binaryninja-api#8503 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
Vector35/binaryninja-api#8446 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
Vector35/binaryninja-api#8444 ·
Tutte le issue di Vector35/binaryninja-api
Issue simili
-
Website Doc Typo Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 92/100
autowarefoundation/autoware_universe#13413 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
automated-analysis bug memory-safety
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100