Objetivos
El objetivo de este manual es que los
lectores interesados puedan intruducirse a este mundo
del cracking desde otro enfoque diferente al que la
gente conoce. Que puedan iniciarse con un mínimo de
conocimientos previos que se les brindarán en este
manual.
Concepto de
Cracking
Tambien recibe el nombre de Ingeniería
Inversa, es la ciencia que estudia la seguridad de
sistemas de protección tanto de software como de
hardware con el objetivo de violarlos para aprender de
ellos y obtener un beneficio personal sin fines de
lucro. Podemos definirlo tambien de forma más
generalizada como la acción que consiste en la
modificación total o parcial de sistemas mediante alguna
técnica específica para adaptarlos a las nececesidades
personales de uno o bien solucionar fallas o errores de
los mismos.
Breve
introducción a la materia
Casi todo el mundo ve al cracking como
pirateria, como algo ilegal, aunque algo de razon hay
aqui si se emplea incorrectamente como en la mayoría de
los casos. Se supone que toda ciencia es usada para el
bien, y el cracking deberia serlo. Seria bueno que los
crackers aprendan desde el principio a estudiar los
sistemas de protecciones comerciales para poder crear
otros nuevos con meyor seguridad o bien mejorar los
existentes e implementarlos en los futuros programas en
vez de andar publicando cracks en internet, por que eso
sí es ilegal. Entonces podriamos decir que existen
crackers buenos y malos, de los buenos por suerte hay
una buena cantidad, pero tambien hay muchos de los otros
que quizas muchos de ellos tienen muy malas intenciones
como la creacion de virus para ocacionar daños. El buen
cracker puede considerar o no como "enemigo" a estos
tipo de crackers, pero a diferencia del bueno, el malo
tiene como enemigo Nº1 los autores de los programas.
Quién puede
ser cracker?
Es común ver que muchas personas creen
ser crackers por el solo hecho de bajar un crack
publicado de internet para registrar un shareware y
probablemente luego venderlo. Ellos creen que esa acción
es crackear, pero es un pensamiento erroneo, nosotros
los crackers los vemos a ellos como verdaderos
ignorantes. Entonces si ellos creen ser crackers, que
queda para el autor del crack? Ambas partes se
consideran complices de la pirateria lo cual no es
bueno.
Una persona debe reunir ciertos requicitos y cualidades
para poder ser cracker, acá muestro los mas importantes:
- Conocimientos de Software y Hardware
- Conocimientos de programacion en general
- Conocimientos básicos de Assembler (Impresindible)
- Muchas ganas e interés
- Mucha dedicación y esfuerzo
- Mucha paciencia y tiempo
Un cracker no se hace de un dia para el
otro, esto puede llevar meses e iclusive años. Para ser
bueno eso depende, pueden ser otros años mas, y para ser
profesional... bueno, mejor cambiemos de tema.
Qué hay de las
protecciones de software?
La extraordinaria cantidad de
programas que han sido crackeados, la mayoría fueron los
programadores quienes hicieron el sistema de protección.
El resto han sido los mismos crackers quienes lo
programaron, y quien mejor si no entonces? estas
protecciones presentaban gran dificultad para
desprotegerlos, aunque se han visto programas que son
casi imposible crackearlos y solo un cracker puede hacer
un sistema asi, pero como ya sabemos nada es imposible,
no existe 100% seguridad. Pero igualmente con esto
logramos que las empresas desarrolladoras de software
contraten a un buen cracker para proteger su software.
También en internet hay muchas empresas de seguridad
informática que están conformadas principalmente por
crackers y hackers que prestan ese tipo de servicios y
venden licencias de software con sistema proteccion
incluida.
Existen infinidades de maneras de proteger programas,
las mas comunes de encontrar en los programa son los
siguientes:
Tiempo
de uso limitado:
El programa puede caducar
después de un período de tiempo determinado por el
programador desde la fecha de instalación si no se
registra el programa. Se suele limitar a minutos, horas,
dias y meses.
Cantidad
de ejecuciones limitadas:
El programa caduca luego de
haberlo ejecutado una cantidad determinada de veces
despuás de su instalacion si no se registra.
Numero
de serie:
Esto es lo mas comun
encontrar, existen de dos tipos, números de serie fijos
o variables, éste ultimo se genera en la mayoria de los
casos en base a algo, como por ejemplo en funcion del
nombre de usuario, organizacion, etc. de esta manera se
consigue un serial diferente y único para cada cliente o
usuario. Pero también se suelen generar en función al
nombre de la PC, del número de serie de disco o de algun
otro componente del equipo. Y por último tenemos los
números aleatorios, éstos son los más dificiles de
crackear.
Mensajes
molestos y/o nags:
Esto tambien es bastante
común, son ventanas que pueden aparecer al inicio del
programa o al final, o en alguna accion por parte del
usuario en donde informa que se encuentra ante una copia
no registrada o algun otro mensaje relacionado a la
protección. Estos mensajes desaparecen al registrar.
Funciones desabilitadas:
Esto le dá a un shareware
una escencia de que estamos ante una Demo pero no lo es
en absoluto, generalmente deshabilitan funciones
importantes de la aplicación, como por ejemplo: abrir,
guardar, importar, exportar, imprimir, grabar, etc.
Cuando registramos se habilitan todas.
CD-ROM:
Esta es la mas usada por
los videos juegos. Debemos insertar el disco para poder
jugarlos. Aveces hay juegos que están completamente
instalados en el disco rigido pero nada más por
seguridad nos piden el CD, otros realmente requieren
archivos del mismo para su funcionamiento.
Archivos
llave:
Es algo parecido al
anterior pero funcionan de muchas formas diferentes
dependendiendo de las habilidades del programador.
Anti-herramientas
cracking:
Estas son muy efectivas si
se utilizan técnicas novedosas o desconocidas para los
crackers. Se pueden aplicar anti-depurador , anti-desensamblador,
anti-monitores de registros o archivos, api, etc.
Tambien anti-modificacion del ejecutable que seria algo
como anti-editores hexadecimales.
Ejecutable comprimido y/o encriptado:
Esto también es muy
efectivo si no se usan técnicas genericas. Por ejemplo
con la compresion logramos disminuir el tamaño del
ejecutable impidiendo que pueda ser desensamblado y
también ocurre lo mismo con la encriptación. Pero tiene
sus desventajas, con un depurador podemos ver el codigo
en memoria ya descomprimido o desencriptado y se puede
trabajar sobre él. Hay programas genericos que permiten
descomprimir o desencriptar ejecutables para dejarlos
tal y como lo vemos en memoria para poder aplicar
parches.
Qué
herramientas se utilizan?
Para crackear no se necesitan tantas
herramientas, pero las hay segun sea el caso, a
continuación nombraré y describiré las principales:
Depurador:
(En inglés Debugger) Es un
programa que en realidad ha sido creado para solucionar
errores o bugs de otros programas. Permite ver
instrucción por instrucción en assembler que ejecuta el
microprocesador en memoria durante la ejecución del
programa y además nos permite poner puntos de parada (BreackPoints)
en cualquier parte del código durante la ejecución.
Podemos editar en forma temporal la memoria, los
registros y las instrucciones para alterar su
comportamiento. Ejemplo: SoftICE, TRW2000.
Desensamblador:
(En inglés Disassembler) Es
un programa que nos permite ver el código de un
ejecutable en assembler e interactuar con él. Podemos
ver referencias de texto, menúes y cuadros de dialogo,
funciones importadas y exportadas del programa
desensamblado. Ejemplo: W32Asm, IdaPro.
Editor
Hexadecimal:
Con este programa podemos
editar los bytes en hexadecimal de las instrucciones de
cualquier ejecutable o archivo. Con esto hacemos los
parches. Ejemplo: UltraEdit, Hview, HexWorkshop, etc.
Monitor
de Archivos:
Este programa se encarga de
mostrarnos secuencialmente en tiempo real los archivos
que estan siendo manejados con operaciones de entrada y
salida (I/O) y por que programa esta siendo utilizado.
Ejemplo: FileMon.
Monitor
de Registro:
Este programa es similar al
anterior con la diferencia de que se refiere al registro
de Windows. Ejemplo: RegMon.
Monitor
de Funciones API:
Este otro programa también es similar
a los anteriores, nos permite espiar las funciones API
utilizadas por un determinado programa en tiempo de
ejecucion. Ejemplo: APIS32.
Descompresor:
Es un programa que sirve para
descomprimir ejecutables comprimidos por algun
compresor. Ejemplo: ProcDump.
Todas las herramientas se pueden encontrar en internet
pero como toda herramienta antes de usarla por primera
vez, debemos aprender a utilizarlas correctamente, hay
cientos de manuales dedicados a las mas importantes,
sobre todo el SoftICE que es muy dificil entenderlo.
Como ya se habran dado cuenta necesitamos tener
conocimientos de assembler para utilizarlas, por lo
tanto busquense un buen manual para aprender.
Un pequño
ejemplo práctico
Un programa es un conjunto de
instrucciones que al ejecutarlo se cargan en memoria y
éstas son ejecutadas una por una por el microprocesador.
Muchas instrucciones impiden que se ejecuten otras como
las instrucciones condicionales. Citaré un ejemplo un
shareware cualquiera que hay que registrar por con un
número de serie generado en base al nombre, si no
introducimos el número correcto nos mostrará un mensaje
de registración incorrecta. Qué ocurre en las
instrucciones? Lo que aquí sucede es que hemos entrado a
las rutinas de comprobación del serial del programa, que
compara nuestro número de serie introducido con el
número correcto, si son distintos muestra el mensaje de
error y si son iguales nos muestra el de felicitacion y
registra el programa. Saber assembler es fundamental
para el crackeo, es un lenguaje de bajo nivel y
practicamente el mas dificil de aprender. Ahora
observaremos un pequeño ejemplo del algoritmo que
hablamos representado en dicho lenguaje:
0001 push eax <- Almacena nuestro número
en el registro EAX
0002 mov ecx, 0123 <- Mueve el serial correcto al
registro ECX
0004 cmp eax,ecx <- Compara nuestro serial con el
verdadero
0005 jne 0008 <- Si son distintos nos muestra mensaje de
error
Este sistema es uno de los mas sencillos
y faciles de crackear que nos podemos encontrar, aunque
casi no quedan de esos. Para crackearlo es muy facil, se
pueden modificar varias cosas, pero normalmente se
acostumbra a invertir el salto condicional JNE que salta
a la direccion 0008 donde esta el mensaje de error si
EAX y ECX no son iguales, por el salto JE que salta si
son iguales para que continue ejecutandose la siguiente
linea y con esto cuando registremos el programa, nos
aceptará cualquier número de serie como válido, salvo
que pongamos el serial real.
Palabras
finales
Con esto ya concluimos con este manual.
La teoria necesaria para el cracking propiamente dicho
merecen tutoriales especificos para temas en particular.
Para los que se quieren iniciar, como ya he dicho, deben
como primera medida aprender lo básico de assembler,
aprender a usar las herramientas y luego leer tutoriales
prácticos de crackeo para despues comenzar a practicar.
Esas serían las pautas organizadas para que una persona
se forme como cracker. Pero siempre recomiendo leer
muchos manuales y tutoriales, muchisima práctica y
entusiasmo si de verdad queres progresar.