Seguridad en redes
Bueno, en la parte anterior había comentado que iba aquí a empezar otro tema que seria el tema de la detección del OLLYDBG, por los programas que ejecutamos en el, lo que comúnmente se llama antidebugging, como evitarlo manualmente, y con los plugins disponibles en cada caso y con ejemplos.
Pero eso con ese tema comenzare en la parte 19, ya quesurgió entre varios seguidores del curso que me escribieron al mail, el pedido de que haga un ejemplo mas de crackme sin botones, como el de la parte anterior, y si es posible usando la otra técnica la de WM_KEYUP .
Bueno así que usaremos un crackme que me facilito Stzwei, gracias por el mismo, llamado crackme_4stz.exe y que por supuesto estará adjunto con este tutorial.
Abramos el crackmeen OLLYDBG
[pic]
Allí esta parado en el Entry Point, veamos las strings referentes ya que no esta empacado.
[pic]
Allí vemos las Strings que usa el programa
[pic]
Nada interesante por aquí, veamos las apis
[pic]
[pic]
Uff muchísimas para mi gusto, bueno corrámoslo para llegar a la ventana donde se ingresa el serial, apreto F9.
[pic]
Vemos que no hay botón deregistro, así que tipeo un nombre completo
[pic]
Y pondré un BPX CONDICIONAL LOG en TranslateMessage, primero coloco un BPX común
[pic]
Y cuando voy a acceder al crackme, para solo en el BP allí lo edito.
[pic]
Si alguien no se acuerda el valor correspondiente al WM que vamos a usar, pues vamos a la ventana W, que nos muestra las ventanas del programa.
[pic]
Y nos aparece lalista de ventanas, en cualquiera, total es solo para averiguar el valor numérico, hacemos click derecho
[pic]
Y nos aparece la ventana de los MESSAGE BREAKPOINTS con el menú desplegable de los WM
[pic]
Buscamos en la lista WM_KEYUP
[pic]
Vemos que es 101, así que cancelamos todo esto que fue solo para averiguar ese valor numérico y volvemos al BREAKPOINT CONDICIONAL LOG enTranslateMessage.
[pic]
Y allí coloco MSG==101 (recordar el doble signo igual), también podía haber escrito allí si no encuentro el valor, MSG==WM_KEYUP y funcionara, pero a mi me gusta mas usar valores numéricos, cada uno puede hacer como quiera en ese punto.
Bueno allí quedo nuestro BPX transformado en CONDICIONAL LOG (color rosa)
[pic]
Demos RUN y tecleo la primera letra de mi serialfalso
[pic]
Y allí se detiene el OLLYDBG en el BPX CONDICIONAL.
[pic]
Vemos allí los parámetros de la api, en 12ff78 hay una estructura que guarda los valores del la tecla que aprete en este caso 39, que corresponde al numero 9.
Veamos en el DUMP dicha posición de memoria, haciendo click derecho en dicha dirección y eligiendo FOLLOW IN DUMP.
[pic]
[pic]
Vemos que conseguimosparar y identificar cuando ingresa el byte el problema es que es un programa en DELPHI lo cual veremos mas adelante y si pongo un BPM ON ACCESS en ese byte, dará mil vueltas antes de llegar a la comparación, por lo cual, el método que vimos la vez anterior se aplica mucho mejor aquí y antes de enloquecer pues lo usaremos, de cualquier forma ya saben como parar el programa cuando ingresa porteclado, y como localizar el byte, seguramente en otro crackme que no sea en DELPHI, se podrá seguir mas fácilmente con un BPM ON ACCESS en el mismo, hasta la comparación.
Y doy RUN
[pic]
Tipeo 9898, iré a la ventana M y buscare en toda la memoria
[pic]
Hago click derecho- SEARCH
[pic]
[pic]
Y busco la string 9898
[pic]
La primera ocurrencia es en el stack apreto CTRL + Lvarias veces a ver cuantas aparece en el mismo.
Una zona vez ya que nos aparece en amarillo la palabra ITEM NOT FOUND debajo, salgamos de esta sección y volvamos a la ventana M
[pic]
Llego hasta aquí buscando, así que sigamos para abajo con CTRL + L
[pic]
Allí aparece por primera vez en esta sección hagamos CTRL + L para ver si aparece de nuevo
No, no aparece de nuevo si miro en...
Regístrate para leer el documento completo.