Automatically type all block arguments in function definitions with Block_literal *
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp, objective-c, swift
- Área
- reverse-engineering
Línea de trabajo
The issue names no source file, test, or entry point. Start by locating the parsing of Objective-C and Swift function metadata and block literals; done means block arguments receive copied Block_literal * types and that type propagation reaches their call sites.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
When parsing Objective-C and Swift function metadata, you often encounter blocks which are stack or global closures.
When you encounter these, apply a copy of the type Block_literal * to them.
struct Block_literal {
void *isa; // Pointer to block's class ("isa" pointer)
int flags; // Block flags
int reserved; // Reserved for future use
void (*invoke)(void *, ...); // Function pointer to the block's code
struct Block_descriptor *descriptor; // Pointer to block's descriptor
// ... captured variables (optional, not part of base header)
};
This type is the base type of all blocks in Objective-C and Swift. It will enable proper type propagation at all the call sites. The type is just the base type -- it can be further refined by parsing the Block_descriptor. I would prefer you make a copy of the block literal, because each call site will be different and we can fine the type in a second pass.
It goes a long way towards making ObjC and Swift easier to reverse
vs
- Lenguaje dominante
- C++
- Estrellas
- 1.3k
- Forks
- 298
- Merge medio
- 5 d 5 h
- PR fusionados (30 d)
- 19
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Vector35/binaryninja-api
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
Vector35/binaryninja-api#8540 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Vector35/binaryninja-api#8516 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
Vector35/binaryninja-api#8503 ·
-
normalize time logs from WARP Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Vector35/binaryninja-api#8446 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Vector35/binaryninja-api#8444 ·
Todos los issues de Vector35/binaryninja-api
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
Sensor initialization takes very long when `--initial-sim-time` is set to current UNIX timestamp Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
gazebosim/gz-sensors#662 · 1 comentario ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
comp-datalake
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
ClickHouse/ClickHouse#121222 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
LadybirdBrowser/ladybird#12123 ·