Karpoff Spanish Tutor

Manual del IDA_Pro Parte I


 

CRACKER: LEiRUS   FECHA: 10/10/2000

 

 introduccion

1.- intro

esa es la primera de las preguntas que deberíamos hacernos, ante la cual debemos responder que es un desensamblador, una aplicación que mostrará el código en esansamblador de un programa. sin embargo, no estamos ante un desensamblador cualquier. su propio nombre marca la diferencia entre él y sus competidores: ida, the interactive disasembler. ¿ que quiere decir esto exactamente ?. pues que nosotros podremos intervenir y actuar sobre el código de manera muy activa, es decir, que no sólo nos enseñará el listado en sí, si que también podremos interactuar con él, podremos jugar con múltiples posibilidades, podremos nombrar variables, funciones y haremos muchas cosas con el código. incluso lo podremos modificar. pero de momento habrá que esperar.

 

 al atake

 

2.- lugar de residencia

en la web de k-for o en la karpoff, además de en hambo.

3.- rulándolo la primera vez

en primer lugar, veréis el menú y la barra de herramientas, típicos de los programas en windows y un cartelito que nos dice "drag a file here to disasemble". si tienes un nivel de inglés medio, habrás entendido bien, para desensamblar un archivo tendremos que "arrastralo" hasta la ventana del ida. pero tenemos otras rutas alternativas. podemos usar la barra de herramientas, pulsando sobre la carpetita o bien elegir en el menú file -> open file. tras esta absurda operación viene lo bueno. el desensamblado en sí. un proceso lento en ordenadores poco potentes, pero que puede valer la pena.

4.- la ventana de carga del fichero

tras cargar el fichero, nos aparece una ventana, que conviene explicar detenidamente para que sepamos para que sirven cada uno de los comandos y opciones que allí aparecen.

primeramente, podremos elegir como se comportará ida cuando vaya a desensamblar el fichero. así, lo hará de una forma u otra ateniendo a si el fichero es pe (portable ejecutable, el estándar de windows), si es un exe de dos o si es un archivo binario. normalmente nosotros vamos a tener elegida la opción de los pe, porque además de venir por defecto, son los archivos más frecuentes, y con los que trabajaremos más a menudo.

a continuación, elegiremos el tipo de procesador que utiliza el fichero a desensamblar. será la mayoría de los casos en los que elegiremos la opción de "metapc". como vemos, ida tiene una versatilidad realmente sorprendente, porque es capaz de "entender" las instrucciones de numerosos procesadores, incluidos los tan antiguos z80 como los más nuevos de intel, los pentium iii y los athlon de amd, pasando por procesadores de motorola y de hitachi. como digo, de momento, "metapc" será lo más común a todos los programas con los que nos enfrentemos. una cosa, cuando cambiemos de procesador en las configuraciones, se nos activará el botón "set" de la derecha. si lo pulsamos, habremos configurado ese procesador como por defecto. no andaros con ñoñerías y dejad de toquetear.

tenemos 2 opciones relacionadas con el análisis del fichero. si lo queremos analizar (pasarlo por flirt, que hablaremos más adelante de ello) o no. es lo normal tener el análisis activado con el indicador también.

en el grupo "options" tenemos varias casillas de verificación que nos permiten elegir diferentes páramentros en función del tipo de archivo y del procesador que hayamos elegido. pasaré a explicar brevemente las más relevantes:

- load resources: evidentemente cargará los recursos del archivo en memoria. nos referimos a las cadenas, bitmaps, iconos y demás que pudiera contener el fichero.
- rename dll entries: si no está seleccionado, ida hará comentarios repetidos para entradas importadas en orden.
- manual load: nos preguntará que segmentos del archivo será lo que se carguen.
- make imports: convierte las definiciones de la sección de .idata a directivas "extrn" y las trunca.

tan sólo queda decir donde se encuentran el directorio de las dll's. por defecto es el directorio de windows, que será el que normalmente tendremos puesto.

ahora nos vamos de cabeza a las "kernel options" y "processor options". atención esto es tremendamente complejo, ya que se cambiarán muchos parámetros de ida y podremos dejarlo inutilizado o inservible en cuestión de segundos, así que recomendiendo encarecidamente que se lean los manuales adjuntos. bueno, después de esta advertencia, toca explicar cada una de las opciones de las "kernel options 1":

- create offsets and segments using fixup info: ida utilizará la información de reubicación para hacer un mejor desensamblado.
- mark typical code sequences as code: ida "entiende" a los procesadores, y las secuencias de código que le son familiares, las pondrá como normalmente aparecen.
- delete instructions with no xrefs: las instrucciones que nunca son referidas o que son indefinidas, serán eliminadas.
- trace execution flow: permite a ida ejecutar y tracear una "intraejecución" del fichero a fin de convertir las referencias a instrucciones.
- create functions if call is present: permite a ida crear un procedimiento o función a partir de una instrucción call. si una función call llama a h453hff, se le dará un nombre genérico a todo el conjunto de instrucciones que se hagan referencia hasta un "ret".
- analyse and create all xrefs: si esta opción está desactivada, simplemente se analizará el fichero sin más, sin referencias, en definitiva sin ningún tipo de ayuda.
- use flirt signatures: permite a ida utilizar la tecnología flirt. la tecnología flirt le da la capacidad a ida de intentar reconocer funciones del lenguaje específico en el que se escribió el fichero analizado. necesariamente debe estar seleccionado. sino para que demonios quieres ida.
- create function if data xref data->code32 exists: si ida encuentra una referencia a datos del segmento de datos al segmento de 32 bits de código, la estudiará a fin de encontrar una instrucción susceptible de ser desensamblada.
- rename jump functions as j_...:
permite a ida renombrar funciones que son referenciadas por saltos en vez de por llamadas.
- rename empty functions as nullsub_...: las funciones nulas o que únicamente contienen un "ret", son renombradas como "nullsub".
- create stack variables: crea variables de la pila y parámetros de funciones.
- trace stack pointer: tracea el valor de sp, el del puntero de la pila.
- create ascii string if data xref exists: si se encuentra un referencia a un lugar indefinido, ida buscará una cadena ascii. para ser detectada, la cadena deberá ser mayor de 4 caracteres.
- convert 32bit instruction operand to offset: ida convertirá el operador inmediato de una instrucción que puede ser representado como una expresión de offset.
- create offset if data xref to seg32 exists: si ida encuentra una referencia a datos en un segmento de 32 bits que contiene datos en 32 bits que pueden representarse en forma de offset, ida los convertirá.
- make final analysis pass: hace la pasada final del análisis, conviertiendo las zonas no exploradas a datos o instrucciones.

después de esta soberbia explicación sobre los distintos parámetros que se nos presentan en las "kernel options 1" del ida, nos dirigimos a la segunda tanda, esta ya mucho menos abundante, tan sólo tiene 3 parámetros a configurar. a saber de las "kernel options 2 ":

- locate and create jump tables: permite a ida intentar reconocer o adivinar la dirección y el tamaño de las tablas de salto.
- coagulate data in the final pass: permite a ida convertir los bytes inexplorados a arrays de datos en el segmento de datos. evidentemente, sólo tiene sentido cuando está activada la opción de make final analysis pass, de las "kernel options 1".
- hide libary functions: supongo que no hace falta explicarlo, pero por si acaso, esto oculta las funciones reconocidas mediante flirt.

las "processor options 1", de momento no las vamos a ver, ya que son demasiado complejas y requieren un tratamiento aparte. además me estoy documentando sobre ello para explicarlo más detenidamente. supongo que haré un documento complementario a éste para todo aquél que quiera saber exactamente el significado de estos parámetros.

bueno, pues con esto y un bizcocho, terminanos de configurar los parámetros de carga del fichero a desensamblar. tras pulsar el botón "ok", el ida empezará a trabajar sobre el fichero. el proceso de desensamblado puede ser un poco lento, pero para poder ir "toqueteando", ida te hace un listado primitivo del fichero, a fin de investigarlo superficialmente.

pero una vez que termine, tendremos el listado completo, y podremos interactuar con el fichero. eso será lo que haremos en tutoriales adelante. de momento baste por hoy, un poco de teoría antes de empezar la práctica. nos veremos en la 2ª parte de este manual-tutorial. hasta la próxima. y ya sabeís que si os queréis poner en contacto conmigo para cualquier sugerencia, duda, corrección o lo que sea, no os lo penséis y escribidme un mail a la dirección de abajo. hasta la próxima.

"ahora sé porqué lloráis los humanos, pero es algo que yo nunca podré hacer"
terminator 2: el juicio final.

http://go.to/leirus - leirus@telepolis.com
http://pagina.de/kfor - kfor@telepolis.com

 

karpoff spanish tutor: pagina dedicada a la divulgacion de informacion en castellano, sobre ingenieria inversa y programacion. email "colabora con tus proyectos"
www.000webhost.com