Vector35 / Vector35/binaryninja-api

Generic Intrinsic support

Abierto
#7,233 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Component: API Component: Core Effort: High Impact: High
Lenguaje dominante
C++
Estrellas
1.3k
Forks
298
Merge medio
5 d 5 h
PR fusionados (30 d)
19

Descripción

We've identified a need for a "generic intrinsics" These intrinsics would be identified through either lifting or pattern matching. Here are few examples are:

  • min/max
  • floor/ceiling/round
  • align/extract_bits/clear_bits
  • memcpy

The idea is that we would reserve space in the intrinsic identifier field (maybe by setting the top bit) and these would be for internal use only.

enum BNGenericIntrinsic : uint32_t {
   MIN_INTRINSIC = 0x80000000,
   MAX_INTRINSIC,
   FLOOR_INTRINSIC,
   ...
 };

We would likely want to convert the existing builtin_* synthetic builtins to this new, more extensible, system. This system would need to additionally support cross references. Our current cross reference system is based on a uint64_t which is insufficient for representing a cross reference to something that really doesn't exist within the address space. There are a couple of solutions to this:

  • Expand the representation of what our definition of 'memory' is to support these types of situations
  • Use a mechanism like relocations use which is essentially a symbolic cross reference. So rather than address-based cross references we'd have ones based on a symbol (+ addend)
  • The final not-good option would be to continue to use the synthetic_builtins section which has some unfortunate consequences in some cases.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Start by reviewing the existing builtin_* synthetic builtins and the current uint64_t cross-reference system. Compare the proposed identifier scheme with the three cross-reference options; done requires a decided design for generic intrinsics, including the listed examples, cross references, and migration of existing synthetic builtins.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cpp
Área
reverse-engineering
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.