Changing return type to one requiring indirect return does not update parameter locations
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- cpp
- Ambito
- reverse-engineering
Direzione di ricerca
Start by reproducing the behavior in Binary Ninja 5.4.10468-dev using the supplied binary, type definitions, and return-type changes. Verify the parameter locations for Class::small, Class::pair, Class::big, and Class::huge; done means this is not explicitly pinned to rdi for big or huge and indirect returns update the locations correctly.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Version and Platform (required):
- Binary Ninja Version: 5.4.10468-dev Ultimate, 32fed8b7
- OS: macos
- OS Version: 26.5.2
- CPU Architecture: arm64
Bug Description:
Changing the return type of a function in a mac-x86_64 binary:
100000390 struct Class* Class::big(struct Class* this)
to Big results in:
100000390 struct Big Class::big(struct Class* this @ rdi)
Big is:
struct Big
{
int64_t a;
int64_t b;
int64_t c;
int64_t d;
};
and causes the return value to be passed indirectly. this should move to rsi, but becomes explicitly pinned to rdi.
Steps To Reproduce:
- Download
dynamic mountain raises freely. - Define these types:
struct Big
{
int64_t a;
int64_t b;
int64_t c;
int64_t d;
};
struct Class
{
int64_t x;
};
struct Huge
{
int64_t v[0x10];
};
struct Pair
{
int64_t a;
int64_t b;
};
struct Small
{
int64_t a;
};
- Change the return types of each of
Class::small,Class::pair,Class::big, andClass:hugeto their matching type.
Expected Behavior:
this does not grow an explicit location in Class::big or Class::huge.
Binary:
dynamic mountain raises freely
- Lingua principale
- C++
- Stelle
- 1.3k
- Fork
- 298
- Merge medio
- 4g 13h
- PR unite (30g)
- 20
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à 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 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Vector35/binaryninja-api#8441 · 3 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Vector35/binaryninja-api#8404 ·
Tutte le issue di Vector35/binaryninja-api
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
google/libultrahdr#485 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
godotengine/godot#123776 ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 60/100
-
good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
ros2/common_interfaces#344 ·