Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / Curso de Cracking - El primer programa

Curso de Cracking - El primer programa

 ****- (36 opiniones)
GNU Free Documentation License Curso gratis de JaMaikito - 21 de Febrero de 2006
Temas Relacionados: Hacking
3. El primer programa
El Crackme puede bajarse de la zona de descargas de indaya en Seguridad--->Cracking

Bueno gente, siendo consciente de la impaciencia que los ocupa, y a riesgo de aburrirnos comenzaremos en este capítulo a acercarnos al primer programa :) .El objetivo será un crackme V1.0 de cruehead que obtuve con el curso de Ricardo Narvaja (muy recomendado para aquellos que se decidan por el Softice en lugar del OllyDBG), creo que el autor no se molestará, ya que este curso es con fines educativos y siempre es bueno aprender ;).

Lo primero que haremos será, claro está, registrarnos, al menos que seas de esas personas que se ganan la lotería me imagino que es altamente probable que te salte el siguiente mensaje "No Luck there,mate!". Entonces tomaremos lápiz y papel y anotaremos este mensaje que es el que nos dá el programa cuando nos registramos incorrectamente. Ahora pensemos lo siguiente, hemos ingresado un serial y nos ha retornado un mensaje donde nos dice que el serial es incorrecto, momento... cómo diablos lo sabía?, luego de pensarlo un rato llegamos a la conclusión lógica, nuestro serial en algún momento ha tenido que ser comparado con el primero para que el crackme llegue a saber que no era válido. Entonces nos queda después de pensar un poco más el siguiente esquema:

El programa captura nuestro serial--->lo compara con el original--->llego a la conclusión que no es igual--->Salta a la zona del Mensaje de error.

Escribo este esquema en mi hoja justo debajo del mensaje de error y en mi hoja miro toda la información que junte y me queda algo como lo siguiente:

Nombre del Programa: CrackMe v1.0 Autor:Cruehead Msg de Error: "No Luck there,mate! El programa captura nuestro serial--->lo compara con el original--->llego a la conclusión que no es igual--->Salta a la zona del Mensaje de error.

Me quedo un rato mirando la hoja mientras fumo un cigarrillo, y se me enciende la lamparita ;), qué pasaría si pudiese evitar que el programa luego de comparar los serial saltara a la zona de error... mmmmm, entro al Wdasm y lo desensamblo y luego de borrar el salto que hay después de la comparación...BUUUUUUUUUUUUUUUUUU, lo único que he conseguido es que el programa se me cuelgue al intentar registrarme, evidentemente la cosa es por ahí pero esa no es la solución. Pienso un poco más y digo, y si cambio el salto para que salte si son iguales, por lo tanto si son diferentes saltaría a la parte del programa donde estaremos registrados, interesante , interesante....

Desensamblo mi objetivo con el Wdasm y busca las referencias de cadenas de texto (el botón de la derecha de todo al lado del de print, "String Data References") y veo algo así:



O por dios! si está allí ni más ni menos que el mensaje de error que salta al ingresar un serial falso, mmmm... haremos doble click sobre él a ver donde está y me arroja a la posición de la memoria 004013B4, así que aquí está la zona de "mal chico". Apuntamos está dirección en nuestra hoja como más nos guste llamarla, yo por ejemplo puse, Posición de Msg de Error 004013B4. Ahora a continuar... comienzo a mirar para arriba para ver desde donde han llamado al mensaje de error, paso por el lugar que hace referencia a una string que dice "No Luck!", me huele que busca despiertarno, seguiremos con lo que tenemos hasta ahora, seguimos subiendo un poco más y veremos algo así:

Referenced by a (U)nconditional or (C)onditional Jump at address : 0040138B (C)

Esto quiere decir que la zona de error fue llamada desde esa dirección, así que como con todo descubrimiento, a la hojita. Inmediatamente iremos a esa dirección a ver que diablos ocurre por esos lados. Vamos en las opciones del Wdasm a goto--->Goto code location o tocamos Shift+F12 e iremos a esa dirección. Nos deposita allí y estamos sobre una orden que dice Jb , y la zona de la memoria de donde venimos . Bueno este Jb ( no no, no está hablando de la marca de whisky, significa Jump if Below), es muy bonito pero no lo queremos dentro de nuestro programa ya que nos está llevando donde no queremos ir. Ahora que tenemos la dirección cerramos el Wdasm y nos vamos al OllyDBG y desensamblamos el Crackme. Hacemos click sobre la pantalla ya vamos a GO TO--->Expression, e ingresamos a la dirección de la memoria que queremos ir. Pero que le haremos a este pobre JB , lo modificaremos para que salte si los serial son iguales por lo tanto si son diferentes....ejemmm , pensemos que pasará. Nos situamos sobre el salto y hacemos un click con el botón derecho del mouse y vamos a la opción assemble.



Aquí modificamos el JB por un JE (Las modificaciones realizadas en ollyDBG son provisorias, más adelante veremos como hacerlas permanentes), asi saltará si son iguales y vamos a Debug--->RUN e intentamos registrarnos Y........BUUUUUUUUUUU.... agua, no ha pasado nada ese tedioso mensaje sigue en el mismo lugar, pero por más pesada que sea la piedra siempre hay una forma de moverla ;), así que volvemos al Wdasm y volvemos a las cadenas de texto y vemos el mensaje de error, hacemos doble clic y estamos en la misma zona de la memoria de siempre, si le damos otro doble click sobre el mensaje.... O DIABLOS, está en otra parte también el mensaje o sea que el programa solo buscaba despistarme....maldito, caí en la trampa pero te he pillado igual. Esta vez caemos sobre 401370, asi que a la hoja y lo anotamos y escribimos que lo anterior era un engaño para recordarlo. Y ahora igual que antes nos interesa ver desde donde se llama esta posición y vemos que es llamada desde 401245, así que anotamos y allá nos vamos. A ver que hoy, justo encima de esa posición vemos un JE siguiendo a una comparación, demasiado sospechoso para mi gusto jeje. Así que anotamos la posición del JE 401243 y me posiciono encima del salto y lo sigo con el botón Jump To a ver a donde nos lleva. Si alguien se molestó en mirar bien y no se dedica unicamente a hacer lo que aquí les digo ;) habrá notado que en las referencias de cadenas había un mensaje que decía "Great Work,mate!" , y si alguno milagrosamente por curiodad le hizo doble click y ya por gracia divina miró desde donde era llamado.... BINGOOOOOOOOOOOO estamos en el mismo lugar o sea que ESE es nuestro salto muchachos.

Ahora entonces nos vamos a toda velocidad al OllyDBG y nos posicionamos sobre el salto y en assemble lo cambiamos por un JNE , para que salten si no son iguales y le damos RUN (F9) e intentamos registrarnos y lo tenemos nos sale un mensaje de felicitaciones :). Lo hemos logrado. Bueno espero que se hayan divertido, ha sido un capítulo bastante fructifero, ya hemos crackeado nuestro primer programa. Escríbanme para decirles si les ha gustado, cualquier duda o sugerencia.
Autor y licencia de 'Curso de Cracking - El primer programa'
JaMaikito Extraído de: http://www.indaya.com GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.gnu.org/copyleft/fdl.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Curso de Cracking - El primer programa'

En este artículo se explica una sencilla manera para poder escuchar música en formato mp3... Más »
El objetivo de este curso es aprender a programar en el lenguaje Ada, desde sus... Más »
Excelente curso de iniciación a la astronomía para aquellos que quieran aprender sobre esta apasionante... Más »
Este es un curso tremendamente completo, guiado y con ejemplos y prácticas pensadas para convertirlo... Más »
La idea de este curso surgió de varias conversaciones entre amig@s de la cuadrilla y... Más »
Gente Wiki
Alfredo Caballero
Soy consultor y conferencista. Me apasiona mi trabajo y recomiendo a otros, a que aumenten la productividad y eficiencia de...
Actividades lúdicas
Cristian Alexis Garrido Vergara
Soy ingeniero en maderas y trabajo en un equipo de implementación de la norma iso 9001:2000. Desde concepción, chile.
Kike Grávalos
Trabajo en comunicación publicitaria; tengo 35 años y vivo en Zaragoza. Me interesan artículos, tendencias, todo lo relaconado con la...
Hilario Rodríguez Cardozo
Soy biológo y me dedico a la docencia, estudie el posgrado de maestría en ciencia en biotecnología vegetal. Trabajo en...
Marco Silva González
Soy profesor de microbiología e inmunología. Magíster en ciencias biológicas y doctor(c) en biotecnología.
Genética
Aldo
Técnico electrónico matricula nacional 5 años ingeniería electrónica, en utn. 30 años representando a philips argentina como técnico electrónico, y...
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?