Saludos Familia !
He decidido crear esta serie de capítulos con
un objetivo puramente educativo (sin ningún tipo
de obscuro interés comercial). Mi objetivo es ayudar
a los nuevos crackers en sus primeros pasos.
Agradecimientos
Al TodoPoderoso +ORC, a su acólito +FRAVIA y
a los miembros de WKT por su apoyo.
¿Qué es eso de crackear?
Crackear es el arte de reventar protecciones software/hardware
con fines intelectuales, personales pero no lucrativos.
Crackear también se llama ingeniería inversa
(Reverse Engineering), ya que sin el programa fuente se
es capaz de analizar el comportamiento del programa y modificarlo
para tus intereses.
¿Por qué crackear?
Vivimos en un una sociedad que da asco. Es inconcebible
que se destruyan o penalicen la producción de productos
básicos (cereales,lácteos...) en aras de una
estabilidad de precios.Vivimos en una sociedad donde el
95% de la gente se ve sometida al control de un 5 %. Toda
persona debería tener un mínimo de recursos
para ser feliz,pero esto no es así.
El noble arte del crakeo es una herramienta para distribuir
la riqueza entre la sociedad. Si necesitas un programa (que
tienes en un CD-ROM) y no tienes una cuenta en un banco
USA, ni 30 dólares, ¿por qué narices
tienes que esperar y pagar si lo necesitas?, crackealo y
publica el crack en Internet. Así ayudarás
a la gente menos afortunada que está axifiada por
esta sociedad desigualitaria.
¿A quién va dirigido
este curso?
Este curso va dirigido a toda persona con interés
en el crack y/o con la filosofía crack. Sin olvidar
a los programadores.
¿Qué es lo que vamos
a aprender?
Dejaremos de un lado el añorado DOS, para centrarnos
en cracks para programas en W95.
¿No estaremos quitando
el pan a los programadores de aplicaciones?
Los programadores viven muy bien a costa de los royaltis
que pagan las grandes empresas y esos repugnantes yupis
encorbatados con escased de neuronas. Además, un
programa crakeado es más conocido y utilizado que
uno que no lo esté. Digamos que el crack es una forma
de publicidad. Baste recordar el compilador de Pascal de
la casa Borland. Originalmente fue copieteado y distribuido
casi libremente hasta la saciedad. Borland conocía
este hecho y por eso no introdujo ningún tipo de
protección. Al cabo de poco tiempo, esos estudiantes
se convirtieron en programadores que reclamaban a sus empresas
la compra del compilador que sabían utilizar, el
Pascal de Borland. Si las casas de soft ya son ricas sin
nuestro dinero, ¿a que estado de corrupción
se llegaría si lo tuvieran?. Aunque parezca extraño
este ensayo está dedicado a formar a los programadores
, mostrándoles sus defectos y el camino para producir
software de calidad.
En último caso depende de la conciencia de cada
uno, si crees que un programador ha realizado una buena
aplicación, que te es útil y que además
está bien programada, entonces obra adecuadamente
y recompénsalo registrándote. A decir verdad
sólo he encontrado un programa de este estilo
¿Qué necesito pa
esto de crakear?
- Interés y PazYCiencia.
- Algún conocimiento de ensamblador. Cuanto más
conozcas mejor crackearás, pero para este curso mas
bien poco, intentaré hacer las cosas fáciles.
- Ayuda de otro cracker más experto (por ejemplo
Estado+Porcino)
|
CÓMO
CRACKEAR TECHFACTS 95:
Objetivo: TechFacts 95.
Versión: 1.30 3/7/97
Nombre del ejecutable: Teckfct95.exe
Website: http://ourworld.compuserve.com/homepage/deansoft
Tamaño del ejecutable: 1.251.840 bytes.
Tipo de protección: Por número de serie.
Dificultad: ameba.
Tiempo de crackeo: 2 minutos.
Herramientas: SoftIce 3.0 y Editor Hexadecimal.
Siguiendo las recomendaciones de +ORC empezaremos por crackear
nuestras propias herramientas crack. El programa en cuestión
es una pequeña joya que nos permitirá, entre
otras muchas cosas, rastrear las acciones de un determinado
programa, buscar cadenas de caracteres en ficheros, trabajar
con dll.. Generalmente,lo utilizo para rastrear programas
de instalación, obteniendo información de
los ficheros creados, las entradas de registro añadidas
o borradas, ...
Manos a la obra. El programa es un ejecutable que no necesita
otro fichero para funcionar (cosa rara en estos días).
Así pues, arranquemos el programa veamos lo que ocurre.
Aparece una horrible ventana diciendo que utilicemos nuestra
VISA o MASTERCARD y que soltemos los 19,99 dólares
(unas 2500 pesetas) que tenemos para ir a tomar cervezas.
Echemos un vistazo al programa. Entre otras cosas, hay una
opción en TOOLS/WATCH SYSTEM, que nos permite rastrear
un programa. En HELP/HELP TOPICS/ORDER FORM aparece una
hoja de registro en la que nos avisa de que además
tenemos que paga 2 dólares para gastos de envío,
¡cómo si costará 250 pelas enviar un mail
con el número de serie!.
En HELP/ABOUT TECHFACTS 95 encontramos un botón USE
REG KEY. Aquí es donde tenemos que introducir nuestro
Nombre (First name), apellidos (Last name) y el número
de serie correspondiente que lo recibiremos por mail si
pagáramos 19,99 dólares más 2 dólares
de gastos de envío. Empecemos por aquí.
Pongamos un nombre, un apellido y un número cualquiera
y pulsemos el botón REGISTER. Entonces escuchamos
un pitido y aparece una ventana de mensaje diciendo REGISTRATION
KEY FAILED. Ahora ¡pensemos un poco!, apliquemos un poco
de ZEN CRACKING.
Lo único anormal es el pitido. Si tu fueras un programador
y quisieras que pitará tu "cacharro" tienes dos opciones
construirte un bonito programa en ensamblador que lo haga,
o bien utilizar una función de pitido presente en
alguna de las vomitivas librerías de funciones, también
llamadas API. ¿ Qué piensas que ha hecho nuestro
"vago" programador ?. ¡Bingo! ha utilizado la función
MessageBeep de la librería USER32.DLL. Este un punto
de ataque muy claro, aunque existen muchos otros.
Apliquemos la técnica LIVE, es decir, utilizaremos
el SoftIce. Reinicialicemos nuestro ordenador en modo Ms-Dos,
lancemos el WinIce y volveremos a Windows.
Abramos el LOADER de SoftIce y en FILE/OPEN MODULE seleccionemos
el fichero Tekfct95.exe. Pulsemos Load o el botón
con las ruedecillas dentadas. Nos aparece una ventana de
mensaje del SoftIce diciendo que no puede cargar la tabla
de símbolos, pulsemos el botón SÍ y
aparecemos directamente en el SoftIce con la pantalla en
modo texto. En este momento nos encontramos en la primera
sentencia de nuestro programa. Pulsemos bpx messagebeep
con esto tomaremos el control antes de que aparezca el pitido.
Con Ctrl-D volvemos a Windoce y el programa sigue ejecutándose
normalmente pero con un cebo en messagebeep. Elegimos la
opción de registro y escribimos cualquier cosa en
nombre, apellidos y número de serie, pulsamos el
botón y aparecemos de bruces en :
USER32!MessageBeep
014F:BFF623C1 B148 MOV CL,48 **** Aparecemos aquí.****
014F:BFF623C3 EB12 JMP BFF623D7
Si pulsamos en este momento F12(continuar hasta un RET)
nos situaremos en:
014F:0047BA65 EB11 jmp 0047BA78
014F:0047BA67 6A30 push 00000030
014F:0047BA69 E822A7F8FF Call 00406190 **** Llamada a MessageBeep****
014F:0047BA6E B8BCBB4700 mov eax, 0047BBBC
014F:0047BA73 E824BEFBFF call 0043789C **** Pintamos la
ventana de error ****
En tu ordenador las direcciones de memoria pueden ser diferentes.
¡Sintamos el código!. Estamos en mitad de las sentencias
de error, lo que implica que debe haber un salto condicional
a este conjunto de sentencias de error. El salto debe ser
condicional porque en caso de haber metido correctamente
el número de serie habríamos obtenido algún
tipo de mensaje de felicitación. Así pues,
sólo debemos encontrar ese salto condicional y modificarlo.
Miremos por encima de la dirección 014F:0047BA69,
nos encontramos en 014F:0047BA65 un salto incondicional
jmp 0047BA78, en una ejecución normal nunca llegaríamos
a 0047BA67 ya que siempre saltaríamos a 0047BA78.
Por tanto, lo que debemos buscar es un salto condicional
a la dirección 0047BA67. Si volvemos hacia atrás
un poco con los cursores encontramos este bonito salto
014F:0047B934 E89B73F8FF call 00402CD4
014F:0047B939 0F8528010000 jne 0047BA67 **** ¡BINGO! ****
014F:0047B93F 8D45B7 lea eax, dword ptr [ebp-49]
Hemos encontrado el salto, sólamente hay que modificarlo.
Fijaos que el salto se produce después de una llamada
a la rutina call 00402CD4 apostaría el pellejo a
que esta es una rutina para comprobar si tu número
de serie es correcto. Si no es igual (jne) salta a las sentencias
de error. Si es igual continua ejecutándose. Hay
muchas formas de invertir el salto:
1.- Cambiar 0F8528010000 jne 0047BA67 por
0F8500000000 jne 0047B93F
2.- Cambiar 0F8528010000 jne 0047BA67 por
404840484048 inc eax,dec eax, inc eax, dec eax, inc eax,
dec eax
La 1 es un salto neutro, sea igual o no siempre se ejecuta
la sentencia siguiente. La 2 es la preferida por +ORC, cambia
el salto por un conjunto de parejas incrementar - decrementar
que dejan el registro eax sin cambios en su contenido.
Solamente hay que tener en cuenta dos cosas para modificar
el código, sustituir siempre el mismo número
de bytes (cambias 2 bytes por 2 bytes) y que tus modificaciones
sean una sentencia en ensamblador correcta.
El SoftIce nos permite hacer cambios On-Fly, es decir, en
ese mismo instante, pero el cambio no es permanente. Para
ello, nos vemos obligados a utilizar algún editor
hexadecimal, con el cual abriremos el fichero ejecutable,
y buscaremos la cadena en hexadecimal E89B73F8FF0F8528010000
y la cambiaremos por E89B73F8FF0F8500000000. La cadena se
encuentra en el offset 0X7AD34(los números en hexa
llevan delante un 0X) que en decimal es 503092.
Así pues tenemos que irnos al byte 503092 de fichero
ejecutable y comenzar a hacer cambios.
Ahora tendremos el ejecutable parcheado, si nos registramos
nuestro número de serie siempre será aceptado.
Un crack no es más que un pequeño programa
que abre un fichero y cambia un par de bytes por otros.
¡Nada más sencillo! Sólo hay que saber qué
bytes hay que cambiar. Cuantos menos bytes se cambien más
elegante será el crack.
Si habéis seguido todos los pasos habéis crackeado
vuestro primer programa. Aun nos sois cracker pero estáis
en la buena senda. Sólo hay que poner interés.
Para gentes más avezadas, comentaré que el
flag de activación se iniciativa correctamente en
:0047BA5E mov byte ptr [004CF31A],00 La rutina de protección
es bastante patética, con gran cantidad de código
inactivo. Empieza en :47B5C0. Obviamente se podría
haber hecho algún otro tipo de pero este es el más
simple (se podría haber obtenido el número
de serie real, o haber creado un generador de claves).El
programador ha puesta a "pelo" la dirección de retorno
en :47BA3F push 47BA54. Es un ridículo truco que
nos hará perdernos si continuamos ejecutando normalmente,
por ello es conveniente pulsar "F12" y mirar hacia por encima
sin ejecutar sentencias.
Espero vuestras opiniones, sugerencias y ensayos en
estadoporcino@hotmail.com
En breve analizaremos tipos de protecciones mucho más
interesantes.
Recordad bebed de la fuente, buscad a +ORC en la red.
|