Pregunta:
¿Cómo hacer que radare2 funcione para un binario grande?
0x90
2017-08-16 22:37:25 UTC
view on stackexchange narkive permalink

He compilado cpython con encabezados de depuración y quiero realizar el siguiente análisis con radare2.

El problema que encuentro es que lleva una eternidad (al menos 27 horas) realizar la parte aaa (análisis).

bueno, puedes perfilarlo y presentar un informe de error :)
One responder:
Megabeets
2017-08-16 23:32:22 UTC
view on stackexchange narkive permalink

No es una buena práctica ejecutar un análisis completo de su binario al inicio y tampoco es recomendado por radare. Ejecutar aaa de forma predeterminada es una acción pesada y no se recomienda ni se necesita en absoluto en la mayoría de los casos.

Como se indica en esta excelente publicación del blog de radare :

El análisis de código no es una operación rápida, ni siquiera predecible o que requiere un tiempo lineal para ser procesado. Esto hace que los tiempos de inicio sean bastante pesados, en comparación con solo cargar la información de encabezados y cadenas como se hace de manera predeterminada.
...
Obligamos a los usuarios a pensar en sus flujos de trabajo para comprender mejor el problema al que se enfrentan y resuélvelo de manera óptima, ahorrando cpu, memoria y por qué no: gatos.

Para que el proceso de análisis sea más eficiente puedes comenzar configurando diferentes variables de configuración de análisis en radare. Estas variables de configuración pueden ayudarlo a adaptar el proceso de análisis a su programa y a sus necesidades. Algunas de las variables interesantes son:

  anal.afterjmp anal.depth anal.eobjmp anal.esil anal.hasnext anal.nopskip anal.fromanal.to  

Consulte el comando e ?? anal. para obtener descripciones más detalladas de ellos.

El análisis de un programa no es solo realizar una acción y Eso es todo, se combina de diferentes análisis para diferentes necesidades.
radare implementa muchos comandos diferentes que realizan diferentes tipos de análisis. El uso inteligente de estos comandos puede ayudarlo a acelerar el proceso del análisis y analizar solo las partes que cree que son las más importantes:

  • Buscar funciones mediante instrucciones de preludio ( aap )
  • Identificar funciones siguiendo llamadas ( aac )
  • Detectar tablas de salto y punteros a la sección de código ( / V )
  • Analizar referencias absolutas y relativas de opcode ( aa \ r )
  • Busque referencias de código / datos / cadenas a una dirección específica ( / r )
  • Emule código para identificar nuevas referencias de puntero ( aae )
  • Use información de encabezado binario para encontrar funciones públicas ( aas )
  • Suponga que las funciones son consecutivas ( aat )

En resumen, debe pensar y planificar el proceso de análisis que mejor se adapte a sus necesidades:

radare2 no es un programa de hacer clic y ejecutar, es un conjunto de herramientas y comandos ortogonales que te permiten comprender, analizar, manipular y jugar con una gran lista de tipos binarios ... Solo la experiencia y la comprensión te darán control sobre lo que estás haciendo.

Si después de leer esta respuesta y la publicación en el blog de radare crees que es un error y puedes señalar el problema, no dudes en abrir un número en github.

Dado que esta respuesta se configuró como correcta, sería interesante saber qué interruptores de análisis usó para analizar ese binario específicamente y cuánto tiempo tomó.


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...