Menú Principal

Este sitio usa cookies y tecnologías similares.

Si no cambia la configuración de su navegador, usted acepta su uso. Saber más

Acepto

Zona descarga

Un pequeño viaje por el Cracking

Tamaño de letra:

Cracking, un paso por su pasado y su futuro

Icono OllyDBGCreo que fue sobre los años 2000/2003 (¡uff! qué rápido pasa el tiempo, ya más de 10 años) que hubo una especie de boom con el tema del Cracking. En nuestro idioma, y fue así como empezó una de las listas más conocidas sobre Ingeniería Inversa (CrackSLatinoS), un usuario consiguió quitar una protección a un programa que limitaba su ejecución. Esto hizo que muchos usuarios se interesasen por cómo lo había hecho y aunque no sé si realmente fue este el motivo, lo cierto es que se crearon muchísimas páginas dedicadas al Cracking que analizaban y mostraban las entrañas de un programa. Se empezaron a crear también los conocidos CrackME que no son ni más ni menos que retos de programación hechos a propósito. ¿Y el futuro?

Qué herramientas y cómo se crackea(ba)

Cracking o crackear un programa está asociado a quitar la protección del mismo para que puedas usarlo sin limitaciones. Por ejemplo, si tienes un software que solo funciona durante 5 días, puedes  intentar "crackearlo" y conseguir que dure eternamente. Esto ha hecho que la palabra crackear esté asociada a rozar la ilegalidad porque, lógicamente, los programas que tienen restricciones son principalmente de pago. Para analizarlos se hace uso de lo que se conoce como Ingeniería Inversa y ¡no!, no es una carrera universitaria. Pero voy a dejar los conceptos aquí.

Esto del Cracking no viene de ahora ni del 2003, se ha vivido desde mucho tiempo atrás. Sin ir más lejos, cuando hablamos sobre el juego de Batman en el ZX Spectrum, ya mencionamos los conocidos POKE que son la forma de modificar la memoria. En muchas revistas de la época, existía un apartado con los POKE más conocidos para "crackear" programas (¡y salía publicado en las revistas!):

Cargador Spectrum

De SoftICE a OllyDBG

Para analizar el interior o lo que hace un determinado programa, se recurre a desensambladores y depuradores o debuggers, entre otras herramientas. Con DOS y hasta Windows XP (creo) hubo un debugger muy conocido y utilizado llamado SoftICE de Numega. Era (o es) un depurador que se ejecutaba por debajo del Sistema Operativo (ring 0) y permitía incluso la depuración de drivers. Con Windows XP, SoftICE ya necesitaba una configuración especial y con los nuevos SP, muchos usuarios no podían ni sabían ejecutarlo (me incluyo).

Fue en este punto cuando, tal vez por estas dificultades, se empezó a conocer un debugger que nació a finales del año 2000: OllyDBG. El desarrollo de OllyDBG fue impresionante y sobre el año 2004 apareció la versión más que conocida mundialmente 1.10. Fue una versión impresionante: muy completa, se dejaba de depurar solo por comandos y ahora era todo visual desde una interfaz muy amigable e intuitiva, pero tal vez lo más importante de todo fue que permitía el uso de plugins. Esto hacía y hace de OllyDBG una herramienta poderosísima e indispensable. El hecho de permitir el uso de plugins, hizo que muchos programadores empezaran a crear los suyos propios y en poco tiempo existían miles.

Fue sobre 2003-2004 cuando yo lo conocí. No lo recuerdo bien, pero tal vez la llegada de Windows XP SP2 en agosto de 2004, fuese el punto de inflexión e hizo que SoftICE se empezara poco a poco a olvidar y  diera paso a OllyDBG. Además de la gran herramienta que es este depurador, surgió en nuestro idioma una persona que revolucionó el uso de este software porque explicó desde cero "patatero" su uso para toda persona sin ningún conocimiento. Esta persona es el Maestro Ricardo Narvaja y sus mundialmente conocidos "Tutoriales de OllyDBG desde cero".

Si observamos las tendencias de Google y hacemos una consulta de OllyDBG, veremos esta interesante gráfica:

Tendencia OllyDBG

Hasta junio de 2005, según las tendencias de Google, OllyDBG tuvo un gran interés, sin embargo las previsiones actuales no son muy buenas.

OllyDBG, ring3, NET y 64 bits

OllyDBG para la depuración de aplicaciones era maravilloso porque permitía y permite la depuración en ring 3, pero claro, SofICE también lo hacía en ring 0. ¿Qué alternativas quedaron? El mismo Windows trae WinDBG y KD (Kernel Debugger). También son muy conocidos otros depuradores como IDA Pro (excelente desensamblador) o Syser Debugger.

Otra alternativa interesante en ring3 es el programa Immunity Debugger que con una interfaz muy similar a OllyDBG tiene la peculiaridad de permitir la creación de scripts en Python.

¿Y el paso de 32 a 64 bits? También se han creado depuradores como Visual DuxDebugger, aunque no es un tema tan comentado (de momento) como a 32 bits.

La aparición de la tecnología .NET hizo pensar de otra forma, OllyDBG se embarcó en un difícil, ambicioso y largo proyecto que fue el desarrollo de su versión 2, pero ya no era la herramienta más idónea para depurar estos programas NET (sí se podía pero era algo complejo). Windows tenía la herramienta ILDasm que a partir de un archivo ejecutable portable (PE) que contiene código MSIL (Lenguaje intermedio de Microsoft), crea un archivo de texto apropiado y también proporciona (voy a hablar en presente) 2 buenos depuradores por línea de comandos:  MDBG (Managed Debugger) y CLR Debugger . También hay interesantes GUI, por ejemplo Calimero de stzwei para MDBG y una muy buena herramienta que al principio fue gratis y ahora de pago .NET Reflector.

Y he dejado en el tintero muchísimas herramientas (por ej. Resource Hacker) de las que no he querido hablar porque si no no acabamos.

El futuro del Cracking

Como ya comenté, sobre el año 2000-2003 existían muchísimas páginas sobre Ingeniería Inversa y Cracking, la página de Karpoff fue una de las más conocidas y, desde mi punto de vista, era el tema del momento, el Trending Topic de Twitter. Piensa que en el año 2001 se produjo el lanzamiento de Windows XP, no conocíamos los Smartphone actuales, ni Android, ni la tecnología .NET, ni se pensaba en la programación online como hoy día. Esto hacía que todos los programas (o la mayoría) fuesen de escritorio. Conocer el "arte" de la Ingeniería Inversa te daba el "poder" para destripar cualquier software.

¿Y hoy día? Yo creo que al mismo nivel que se ve la tendencia de OllyDBG en el gráfico anterior, ha disminuido algo el interés por el Cracking o Ingeniería Inversa. El problema de tratar estos temas en un foro o web, es que se rozan casi siempre temas ilegales y muchos webmaster no quieren alojarlos en su servidor. Sin embargo, yo también apunto a otros problemas, como que con paso del tiempo las protecciones han ido también aumentando su dificultad. Hace años, "crackear" un software era una tarea un tanto sencilla; se desensamblaba el código, se miraban las cadenas de texto, se depuraba y normalmente en pocos minutos ya lo habías desprotegido: era accesible a todo el mundo (recuerdo tutoriales de Cracking solo con ¡Resource Hacker!). Los programadores de packers aprendieron de todo esto y empezaron a complicar la cosa, de hecho se llegaron a crear impresionantes packers que trabajaban en ¡ring 0!, algo que después con Windows Vista no se les permitió (muy lógico).

En pocos años se llegaron a unos conceptos que un principiante ya no podía entender: que si hay que reparar la IAT pero está totalmente destrozada, que el packer se descomprime en una zona totalmente ofuscada, que el OEP no existe y lo emula el mismo packer, que existe stolen code, que las llamadas intermodulares están dirigidas al propio código del packer, que el código es ilegible porque el packer hace uso de una máquina virtual, que el packer se depura a sí mismo, los nanomites y cientos de protecciones. Estos conceptos ya no estaban dirigidos a un Newbie (como se denomina a una persona que se inicia) y aprenderlos llevaba muchísimo tiempo.

Sea cual fuere el motivo, lo cierto es que muchas páginas de aquellos años tan famosas, fueron abandonadas, están desactualizadas o desaparecieron. Me impresiona porque había webs con muchas (muchísimas) visitas diarias y hoy día, cuando vuelvo a visitarlas, pues solo queda el recuerdo de lo que llegaron a ser.

Tampoco quiero decir que no sea un tema que interese, porque yo sigo hablando de vez en cuando en el foro o en esta web y los artículos son vistos (de verdad que cuesta muchísimo hacer tutoriales sobre Ingeniería Inversa). Yo creo que siempre se ha considerado a la Ingeniería Inversa como un tema complejo (y de hecho lo puede ser) y yo no soy más que un Newbie comparado con grandísimos autores (por ejemplo la lista CrackSLatinoS). Sin embargo, si lees, estudias, entiendes y, sobre todo, practicas la Ingeniería Inversa, llegarás a tener unos conocimientos que te permitirán entender las entrañas de cualquier aplicación.

Lo bueno y malo de la informática es que día a día avanza y evoluciona de tal forma, que el abanico de conocimientos puede llegar a ser desbordante.

Los programas en servidor

Finalmente otro "problema" que se suma a los anteriores, son los programas online. No sé hasta qué punto podrán desaparecer los programas de escritorio pero incluso Photoshop se apunta a esta "moda". Hay personas que dicen que los programas de escritorio están viviendo su próximo final y es bien cierto que en poco tiempo se han creado muchísimas aplicaciones en servidor sobre todo para la gestión de redes sociales (Twitter, Facebook...) pero incluso ya existen editores gráficos, de texto etc. Si esto es verdad, parece ser que Chrome OS fue un adelantado a su tiempo, tal vez demasiado adelantado y la idea es interesante: tener en tu ordenador un navegador como principal herramienta de uso y las aplicaciones en servidor. La tecnología .NET tiene esto en mente desde hace tiempo y tal vez sea hora de pensar en la propia Internet como la base de un nuevo Sistema Operativo.

Llegados a este punto, el Cracking, como tal, pierde sentido ya que las restricciones de software las encontraríamos muchas veces en el propio servidor y fuera de nuestro alcance. Para la industria del software esto puede ser un punto interesante con vistas al futuro, pero claro habrá que invertir en servidores y posiblemente las pequeñas empresas no estén dispuestas a hacerlo. También muchas empresas solicitan programas para manejar sus bases de datos en red (y no locales), así pueden conectarse y ver lo que otra tienda tiene en la otra punta del mundo.

... es muy difícil hablar del futuro. Tal vez no se pierdan los programas de escritorio, ¡quién sabe! La tecnología .NET tiene muchas ventajas pero mientras exista Microsoft Windows, un programa nativo para esta plataforma puede ser mucho más rápido (y más si trabajas en C++ con ASM)... y muchísimos más detalles... ¿Tal vez Android será el Sistema Operativo predominante?

¿Qué opinas de todo esto?

Última actualización: Sábado, 25 Mayo 2013

Comentarios   

Long John
+1 # Long John 09-12-2013 23:43
Por supuesto, mi agradecimiento a los tutoriales de Ricardo Narvaja, Dekoin, estado porcino, etc, porque sería larguísima la lista de quienes, desinteresadame nte pusieron sus conocimientos al alcance de todos, y, todo aquél que da lo que tiene, no está obligado a dar más. Sí tengo que reconocer que, efectivamente, el android, Tuenti, Whatsapp, Facebook y demás aplicaciones alienantes acabaron con las Estrellas del Cracking, pero los tiempos cambian, y eso, es inevitable.
Responder | Responder con una citación | Citar
karmany
0 # karmany 10-12-2013 01:06
Gracias por tu comentario. Salu2. :-)
Responder | Responder con una citación | Citar
Aonym0
+1 # Aonym0 19-08-2013 18:37
Los programas de servidor no son rentables. Es por eso que sony compro una empresa de juegos steam.
Responder | Responder con una citación | Citar
oPensyLar
+1 # oPensyLar 07-06-2013 19:38
+10


Muy buen "retro" analisis..


Saludos
Responder | Responder con una citación | Citar
Jim
+3 # Jim 01-06-2013 03:44
Buena lectura, por que crees que esas paginas hayan desaparecido, creo que esos años fueron el apogeo de la ing inversa, pero al dia de hoy no veo la cantidad que habia en ese entonces, en los 2000's.
Me hubiera gustado haberme iniciado en esos años :( .
Saludos
Responder | Responder con una citación | Citar
karmany
+1 # karmany 01-06-2013 10:49
Muchas gracias por tu comentario, Jim.
Un saludo
PD. Nunca es tarde para empezar a conocerlo y ahora hay muchísima más información que antaño.
Responder | Responder con una citación | Citar
L0ngin0s
0 # L0ngin0s 26-05-2013 17:36
Buen análisis.
Responder | Responder con una citación | Citar
L0ngin0s
0 # L0ngin0s 26-05-2013 17:38
Me crispan los nervios los captchas, este último comentario se me ha colado, hazme el favor de borrarlo ;)
Responder | Responder con una citación | Citar
karmany
-1 # karmany 26-05-2013 18:38
Tengo que poner el captcha porque si no diariamente me tocaba borrar decenas de mensajes de spam..
Responder | Responder con una citación | Citar
L0ngin0s
+2 # L0ngin0s 26-05-2013 17:35
Excelente análisis karmany y aunque como comentas todo parece converger al día en que reversear binarios no tenga sentido pienso, que la ingeniería inversa es el único camino para aprender de verdad todos los entresijos de un binario y eso no se aprende en ninguna universidad. Por tanto creo que mientras alguien tenga curiosidad por aprender en profundidad, el cracking seguirá vivo.

Saludos.
Responder | Responder con una citación | Citar
karmany
+5 # karmany 26-05-2013 18:37
Tú sí que has hecho un buen artículo entrevistando a uno de los más grandes: Ricardo Narvaja...

Un saludo!!
Responder | Responder con una citación | Citar

Escribir un comentario

Antes de publicar un comentario, usted debe aceptar nuestras condiciones de uso: Condiciones de uso


 
Visitas: 1940353