lunes, 8 de octubre de 2007

Introducción al cracking con OLLYDBG desde cero (II)

Omar [omarherrera@infomed.sld.cu]

Ya conocemos las partes que se ven en la ventana principal del OLLYDBG, aunque también hay más ventanas que no se ven directamente; se puede acceder a ellas, tanto por el menú, como por los botones de las vistas.

Veremos qué representa cada uno:

El botón L o VIEW-LOG nos muestra lo que el OLLYDBG escribe en la ventana del LOG lo cual puede ser configurado para mostrar diferentes tipos de información. Por defecto, en la ventana del LOG va guardando allí información sobre el arranque y acerca de la información escrita en el mismo por los diferentes BREAKPOINTS CONDICIONAL LOGS, lo cual se verá mas adelante. Por ahora vemos allí la información del proceso que arrancó: en este caso, el crackme de cruehead, las dll que cargadas y ciertos tips sobre el análisis.

Una de las opciones más importantes de esta ventana es la de loguear a una fila para ciertas situaciones en que deseemos guardar la información en una fila de texto, en ese caso CLICK DERECHO-LOG TO FILE.

El botón E o VIEW-EXECUTABLES nos muestra la lista de los ejecutables que utiliza el programa: exe, dlls, ocxs, etc.

Aquí también el botón derecho tiene muchas opciones que por ahora no veremos ya que estamos revisando en forma general el OLLYDBG.

El botón M o VIEW – MEMORY nos muestra la memoria ocupada por nuestro programa; allí se ven las secciones del ejecutable, las dll que utiliza el proceso, así como el stack y diversas secciones asignadas por el sistema. Muchas veces al correr los programas, los mismos realizan nuevas asignaciones de memoria en tiempo de ejecución.

Con clic derecho podemos hacer SEARCH en la memoria para buscar en ella strings, cadenas hexa, unicodes etc. Además nos da la posibilidad de colocar diferentes tipos de breakpoints en la secciones, así como también la posibilidad de cambiar el acceso a las mismas con SET ACCESS. Ya profundizaremos en esto.

El botón T o VIEW-THREADS nos da el listado de los THREADS del programa.

Aunque no sabemos aún qué es esto, y la explicación llegará en los próximos artículos, es bueno ir familiarizándose con dónde está cada cosa. Luego aprenderemos qué es y cómo se usan.

El botón W o VIEW-WINDOWS nos muestra las ventanas del programa. Puesto que aún no ha corrido, no hay ventanas, así que estará vacía.

El botón H o VIEW-HANDLES, nos muestra los handles; por ahora, localícenlo. Ya explicaremos qué es y para qué sirve

El botón C o VIEW-CPU nos retorna a la ventana principal del programa.

El botón / o VIEW-PATCHES nos muestra los parches si el programa ha sido modificado. Por ahora estará vacío al no presentar cambios

El botón K o VIEW-CALL STACK nos muestra el call stack, que es el listado de los calls que entremos hasta el punto donde el programa esté detenido.

El botón B o VIEW-BREAKPOINTS es el listado de los breakpoints comunes colocados en el programa. No muestra los hardware breakpoints ni los memory breakpoints aquí, solo los BP comunes.

El botón R o VIEW-REFERENCES nos muestra la ventana de referencias la cual nos da los resultados de efectuar una búsqueda de referencias en el OLLY

El botón … o VIEW-RUN TRACE nos muestra el listado si hemos hecho algún RUN TRACE en nuestra máquina, y tiene también la posibilidad de elegir LOG TO FILE para guardar el resultado del traceo en un archivo txt

Bueno hasta aquí un paneo a vuelo de pájaro por los botones mas importantes. No detallaremos la explicación porque aún antes hay que aprender algo de ASM y practicando el uso del OLLYDBG podremos ir aclarando más profundamente para qué sirve cada botón y cada OPCION. La idea es ir familiarizándose con dónde están las cosas que veremos en las próximas entregas.

CÓMO CONFIGURAR EL OLLYDBG COMO JIT ( JUST IN TIME DEBUGGER)

Aclaro que no conviene tener configurado el OLLYDBG constantemente COMO JIT. Solo conviene hacerlo en ocasiones especiales, ya que al estar como JIT capturará el error de cualquier programa de nuestra máquina y arrancará solo, lo cual puede resultar molesto si no estamos debuggeando o crackeando. Por lo tanto les enseño cómo se configura para casos especiales, pero conviene dejarlo con la opción que trae por defecto, en la cual no está como configurado JIT.

Para colocar el OLLYDBG como JIT vamos a OPTIONS-JUST IN TIME DEBUGGING

Se activa los botones MAKE OLLYDBG JUST IN TIME DEBUGGER y DONE

Para quitarlo, en el mismo lugar se activan RESTORE JUST IN TIME DEBUGGER y DONE

Bajamos el plugin COMMAND BAR el cual puede ser descargado de AQUÍ.

Ahora, antes que nada, crearemos una carpeta para los PLUGINS en nuestra máquina. Yo la creé en C:/ y la llamare PLUGINS. Nada más. Ahora deberemos configurar el OLLYDBG para que reconozca esta carpeta como la que contendrá los plugins.

Para ello en el OLLYDBG vamos a OPTIONS-APPEARANCE y en la ventana que se abre vamos a la pestaña DIRECTORIES. Vemos que el path de los plugins (PLUGIN PATH) en realidad está apuntando a la carpeta donde está el OLLYDBG.exe y podría dejarse allí, pero a mí me gusta tener los plugins separados, por lo tanto donde dice: PLUGIN PATH-BROWSE busco la carpeta que creé para mis plugins.

Allí se elige la carpeta PLUGINS que creamos y saldrá el aviso de que se debe reiniciar el OLLY para que reconozca la nueva carpeta de plugins. Pero antes deberemos copiar el contenido descargado del Comand Bar a la carpeta de plugins.

Allí se copiará todo el contenido y se pegará en la carpeta PLUGINS.

Allí estará el contenido del plugin Command Bar en la carpeta PLUGINS. Para cada plugin que se descargue y se agregue solo deberá copiarse su contenido en esa carpeta. Muchas veces será suficiente con copiar solo la dll.

Ahora se cierra el OLLYDBG, si aún estaba abierto y se reinicia.
Veremos que en el menú PLUGINS aparece el COMMAND BAR y las opciones del mismo.

A su vez, en la parte inferior del OLLYDBG veremos la COMMAND BAR instalada.
Es una barra para teclear comandos que nos facilitará mucho las cosas. más adelante veremos su uso; por ahora lo importante es saber agregar plugins.

Para quitar cualquier PLUGIN, bastará con solo eliminar la dll correspondiente de nuestra carpeta PLUGINS y reiniciar el OLLYDBG. Les aconsejo que dejen siempre activa la COMMAND BAR.

Finalmente, se inicia nuevamente el crackme de CRUEHEAD EN OLLYDBG

Las teclas mas usadas en el OLLYDBG son:

F7: Ejecuta una sola línea de código (si estás en un CALL, entra al mismo a ejecutarlo por dentro) F8: Ejecuta una sola línea de código (si estas en un CALL, no entra al mismo: lo ejecuta completo sin entrar y sigue en la siguiente línea luego del CALL)

Esas dos formas de tracear manualmente son verdaderamente diferentes y según cada caso usaremos F7 o F8 lo cual veremos más adelante.

F2: Coloca un Breakpoint común en la línea que marcas con el mouse o está agrisada en el listado. Para quitar el BP se activa nuevamente F2.

Por ejemplo:


Quiero poner un BP en 40101A,  pues marco con el mouse esa línea


Al hacer clic una sola vez se marca y queda agrisada como vemos en la imagen. Luego se activa F2.

Vemos que se torna roja la zona de la dirección; eso significa que hay activo un BP o Breakpoint allí. Si se activa nuevamente F2, se elimina.

F9: Para Correr el programa el procedimiento es similar a RUN. Con esto, el programa correrá hasta que encuentre algún BREAKPOINT o alguna EXCEPCION que lo detenga o FINALICE por algún motivo. Al activar RUN veremos en la esquina inferior del OLLYDBG la palabra RUNNING o sea que esta CORRIENDO.

Allí se inicia el CRACKME DE CRUEHEAD. Lo podemos ver correr

Se PAUSA la ejecución en OLLYDBG apretando F12 o DEBUG–PAUSE

Vemos que el OLLYDBG cambia para mostrar PAUSED, o sea, que esta PAUSADO. Podemos volver a hacerlo correr con F9 o DEBUG-RUN.

Para cerrar el programa que se está DEBUGGEANDO se activa DEBUG-CLOSE

Bueno esto ha sido una mirada a vuelo de pájaro del OLLYDBG, la cual profundizaremos más adelante pues tiene muchísimas opciones y configuraciones que seguiremos estudiando en las próximas entregas. Es muy útil que bajen el programa lo configuren y miren dónde están las cosas que muestra este tute, así como le agreguen el plugin para practicar y hagan correr y pausar el CRACKME DE CRUEHEAD., Prueben a ponerle un Breakpoint y practiquen esas cosas para que en la segunda entrega estén mas familiarizados con el mismo y podamos avanzar lento pero seguro... y sin dudas.



Artículos relacionados


No hay comentarios: