Ghidra + IDA no puede detectar una cadena, pero Radare2 puede

Jan 15 2021

Soy nuevo en la ingeniería inversa y estoy probando Ghidra, IDA (Freeware) y Radare2 con un simple CrackMe, el problema es que tanto Ghidra como IDA no pudieron detectar una cadena, mientras que Radare2 (Usando Cutter GUI) pudo averiguar el nombre. Usé el análisis predeterminado para todos los 3. ¿Hay algo que me falta? porque incluso el comando 'strings' puede encontrar la cadena que estoy buscando.

Ghidra:

IDA:

Radare2 (cortador):

Respuestas

6 R4444 Jan 15 2021 at 22:05

No sé la longitud exacta de la cuerda. Pero, algunas cosas a tener en cuenta aquí son las siguientes:

  1. Ghidra e IDA tienen un límite mínimo en el tamaño de la cadena para recuperar el tipo correcto (ghidra tiene un límite, o límite inferior de 5).
  2. Esto es necesario para evitar falsos positivos o tipos conflictivos. Y recupere los tipos correctos sin marcar un puntero como una cadena. Consulte esta figura para su referencia. Generado utilizando análisis automatizado de Ghidra.

En Ghidra puede cambiar este límite (el mínimo es 4) en la sección de análisis.

  1. StringsEl comando genera caracteres imprimibles con un tamaño mínimo de 4 (además, no utiliza algoritmos de recuperación de tipo sofisticados como ghidra o Ida). Creo que tienes una cuerda con una longitud menor que 5 y supongo que debe ser 4 para ser precisos.
  2. las cadenas se definen normalmente en la .rodatasección. Si hace doble clic en DAT_xxxx, lo llevará a la ubicación donde está definida esa cadena. Allí, verá bytes consecutivos agrupados por Ghidra o IDA (como se muestra en la imagen-1). Pero el tipo no se resuelve como una "cadena".
  3. En Ghidra, una forma rápida de solucionar este problema cambiando el tipo de datos de la etiqueta DAT_xxxx: Haga clic con el botón derecho -> Datos -> Elegir tipo de datos -> elegir cadena

Referencias:

  • Vea mi pregunta aquí: https://github.com/NationalSecurityAgency/ghidra/issues/2274
  • manual de cuerdas - https://linux.die.net/man/1/strings
  • ida pro - ¿Cómo puedo hacer que IDA vea una referencia de cadena?