domingo, marzo 26, 2006

Cracking (II): A golpes de martillo

Éste es el segundo artículo de nuestra serie de tres sobre el cracking. En el anterior vimos algunos conceptos básicos. En éste vamos a ver a través de un ejemplo cómo puede modificarse el código de un programa (por cierto, propondremos el II Reto SF), y en el siguiente aplicaremos ésto para romper la protección de un programa.

Los programas son conjuntos de instrucciones (creo que ya les habrá quedado suficientemente claro...) y como tales pueden ser alterados. Los archivos ejecutables (en Windows los .exe) pueden abrise, editarse y guardarse, como si te trataran de simples documentos de texto...

Hay una limitación: las instrucciones de un ejecutable están codificadas para que el ordenador las comprenda, así que si usted lo abre, lo más facil es que no se entere de nada. Los programas, al nivel más detallado, son conjuntos ordenados de unos y ceros, es decir, información binaria. Una forma abreviada y más cómoda de representar la información en binario es usar otro código, el hexadecimal (un día lo explicaré detenidamente). La instrucción de un programa codificada puede ser algo como 6A 00 E8 34, algo completamente incomprensible para nosotros los humanoides.

Para abrir un ejecutable, necesitamos un "editor hexadecimal", que no es más que un programa que sirve para representar de un modo más intuitivo (tampoco mucho...) los datos de un programa. Hay uno muy bueno llamado Hexplorer que puede descargarse gratuitamente de aquí. Y ésta es la única herramienta que necesitamos para modificar una aplicación. Como ésto está prohibido por la mayoría de las licencias, nos vamos a servir de un crackme, lo cual es perfectamente legítimo.

Crackmes los hay a patadas, pero he encontrado uno muy sencillo que nos va a servir muy bien. Se llama abex' 5th crackme, puede descargarse libremente y tiene este aspecto:

Como ven, imita conceptualmente a las ventanitas que nos exigen el número de serie para ejecutar un programa o renovar su licencia. Nuestro objetivo de hoy es hacer ciertos cambios, de forma que al ejecutar el programa, en el cuadro de texto no se lea "Enter your serial" sino "Segmentation Fault" (hay que barrer para casa...). En realidad podemos poner lo que nos apetezca donde nos apetezca, hasta podríamos cambiar el texto de la barra de título.

Lo que tenemos que hacer es abrir el crackme con el Hexplorer. Para ello, ejecutamos el explorer, nos vamos a "File - Open", y allí seleccionamos el fichero del crackme que hemos descargado. Una vez abierto, lo que tenemos ante nosotros es el código ejecutable del Abex' Crackme.

(Actualización) Es posible que vea el texto en un tamaño diminuto. Para corregirlo, acuda a "view - options" y en el apartado "font" elija por ejemplo "Fixed Roman Large" (también puede cambiar el esquema de colores). Gracias por informar del fallo, R. Mármol :-)

La columna de la izquierda representa los datos en hexadecimal, y la de la derecha, su traducción a caracteres más o menos comprensibles. Ahora tenemos que ir bajando, puede ver cómo algunas secuencias de texto son precisamente las que le presenta el crackme cuando lo ejecuta. Tenemos que llegar a un sitio donde veamos ésto:

Ahí está lo que nos interesa, ya podemos empezar: vamos a situarnos sobre la primera "E" de "Enter your serial". Ahora, puede sustituirla por la letra que desee... si pone una "S" en lugar de la "E", verá que el 45 de la columna izquierda (la de los numerajos) se cambia por un 53, que es código hexadecimal de la "S".

Ahora puede ir modificando el texto, con la precaución de dejar un 00 entre letra y letra (ojo: no es lo mismo un espacio (código 20) que "nada" (código 00), si se equivoca puede corregirlo directamente sobre la columna izquierda). Es necesario dejar ese 00 entre letra y letra para ser consecuentes con la memoria. Si lo ha hecho bien (tal vez le cueste un poco al principio, pero es muy muy facil) debería ver algo así:

¿Sí? ¿Seguro? Bien, si está todo bien, puede ir a "File - Save" y guardarlo (si no quiere arriesgarse, guárdelo con otro nombre, aunque siempre podrá volver a descargarlo si se le estropea). Si ahora lo ejecuta, debería ver:

¿Lo ha conseguido? ¡Apúntese un tanto! Si Windows le da problemas al ejecutar éste nuevo crackme, casi seguro que se ha equivocado: repáselo. Si lo ha logrado, y además es la primera vez que hace algo del estilo, acaba de conquistar un dominio desconocido a la mayoría de los usuarios: los programas no solo pueden ser ejecutados, sino que son archivos normales y corrientes, y como tales pueden ser abiertos, editados y guardados. Y si pueden ser editados, podemos hacerlos acordes a nuestros intereses.

Para los alumnos más aventajados, aquí dejo el...

II Reto SF
Que consiste simplemente en conseguir que el crackme presente éste aspecto... ¡envien las capturas de su pantalla a la dirección del blog! El primer lector en hacerlo pasará a formar parte de nuestro Salón de la Fama SF (SFSF :-P), que daremos a conocer próximamente.

Puede hacer más pruebas, pero hay que tener mucho cuidado cuando alteramos ciertas posiciones, ya que si manipulamos muy a lo loco, el programa dejará de funcionar correctamente. ¡Sean perversos!


Siguiente artículo:
Cracking (y III): Cracker por un día

Artículo anterior:
Cracking (I): El poder del lado oscuro

6 Comentarios:

A las 9:38 p. m., Blogger R. Mármol escribió... (¡Gracias, Blogger R. Mármol!)

A mí dentro del hexplore el código me aparece con la letra tan pequeña que no puedo verla :(

 
A las 10:29 p. m., Blogger Pau escribió... (¡Gracias, Blogger Pau!)

Es verdad, creía recordar que tuve que cambiar algo, pero no estaba seguro del qué...
Puedes arreglarlo cambiando la configuración: "view - options" y en el apartado "font" elije, por ejemplo "Fixed Roman Large". Luego, puedes cambiar el estilo (a mí el "matrix" me encanta :P)
Como seguro que a más personas les sucede lo mismo, voy a actualizar el post, muchísimas gracias por seguirlo y por informar del fallo :-)

 
A las 1:19 a. m., Anonymous Treiral_ escribió... (¡Gracias, Anonymous Treiral_!)

Por curiosidad, ¿porque las ristras del titulo y el botón tienen un número de caracteres definido y la de Segmentation fault no?

 
A las 10:00 a. m., Blogger R. Mármol escribió... (¡Gracias, Blogger R. Mármol!)

Con la de cosas que cambié y no se me ocurrió que pudiera ser la fuente :P

En fin, probaré a ver como va cuando llegue a casa. En este ordenador no puedo instalar programas.

Gracias por la aclaración. Y por el blog. Cada vez se muestra más interesante. :)

 
A las 12:24 p. m., Anonymous Viksom escribió... (¡Gracias, Anonymous Viksom!)

Esto es genial, el tema del conocimiento prohibido y eso, tienes que seguir hablandonos por favor. Ah, aquí tienes ;-)
http://usuarios.lycos.es/driveshaft/Muere.png
Un saludo.

 
A las 5:22 a. m., Anonymous El Chavelo escribió... (¡Gracias, Anonymous El Chavelo!)

hola amigo, realmente esta muy interesante tu artículo, quiero perdirte un favor no puedo descargar el crackme porque no habre la pagina, me lo puedes enviar por favor a mi email dennischaveznet@yahoo.es
gracias te quedare muy agredicido

 

Recuerda que nos hemos mudado a nosololinux.com

<< Home