## Tutoríal de Crackeo Para Newbies desde Cero 11/09/99

Por Karpoff ## GRUPO KF_CRACK KARPOFF-NEW 98/99 ##

PROYECTO 10 ##

Parte 1

Hola Coleguis Otro mas, la verdad es que hacer un manual de estos me lleva algunas horas (aunque creáis lo contrario) así que no tengo tiempo casi ni para comer, pero si os sirven de algo es suficiente, y por los emails que recibo se que alguien los lee uff.

Estamos en el manual nº 10, hemos utilizado el W32dasm, el Softice, y un HEXedit

Hoy incorporo una herramienta mas que cada vez es mas necesaria, se trata del ProcDump. Cada vez son mas los programadores que utilizan Compresores PE (Portable Ejecutable), estos compresores (petite, neolite, hasky etc) lo que hacen es comprimir el ejecutable de un programa dado, pongamos como ejemplo el Offline Explorer v1.2 178 BETA 3ftp://ftp.datacomm.ch/.3/tucows/files4/oebsetup.exe , SI instalamos este programa veremos que su ejecutable ocupa exactamente 448KB y descomprimido con ProcDump ocupa 1.087KB y los dos funcionaran igual, La mayoría de los programas hoy en día son programados con lenguajes visuales ( visual basic, visual C+ etc.) y claro esto genera una cantidad sobrada de código fuente creando ejecutables gigantes, de hay que los programadores se vean obligados a utilizar algún remedio. Pero que tiene esto que ver con el cracking ¿?

Bueno explico como funciona un programa comprimido con el ProDump ( RODOLFO esto va para ti y tu pregunta sobre la compresión del Cpasos)

Al ejecutar el programa lo primero que hace es descomprimirse en la memoria y a partir de hay su ejecución es normal, como nos perjudica esto a nosotros los crackers¿? Pues seguramente alguna vez habéis ido a desensamblar un programa que solíais crackear en versiones anteriores, y de repente la nueva versión no se desensambla o si pero no nos muestra casi nada de código, y si estamos utilizando el softice estamos viendo código que no podremos manipular, ya que si localizamos con el softice un salto (je jne ) que sea vital para hacer el crack ( ósea que sea el salto que tenemos que parchear para que el programa quede crackeado) y apuntamos su dirección de memoria y el OFFSET, cuando lo editemos con el editor HEX posiblemente no estará ni la dirección de memoria ni el salto localizado, por que¿? Por que como he dicho el programa al ejecutarse se descomprime en memoria, ósea que en frío nunca podremos acceder a ciertos procesos del programa, con lo cual el programador tiene un programa que ocupa menos y además para el cracker mas complicado, ( cuanto mas grande sea el reto a la hora de crackear mejor, de eso se trata no¿?) para este tipo de programas el tipo de crack que se suele hacer es un loader. Que es un loader ¿? es un crack que hace sus parcheos mientras se ejecuta el programa, en un proceso de la memoria, pero nunca queda definitivamente crackeado, siempre que tengamos que ejecutar el programa, tendremos que ejecutar primero el loader y este se encarga de correr el programa y parchearlo en memoria.

En esta dirección tenéis un manual sobre las funciones del ProcDump Es obligatorio leer este manual

http://www.wco.com/~micuan/WKT/pdumptut.htm

Y aquí tenéis el ProcDump en su ultima versión

http://w3.to/protools lo encontrareis en la sección Umpakers, os recomiendo que os bajeis de esta pagina algún compresor PE como el Petite por que lo utilizaremos los compresores están en la sección Pakers

PARTE 2

Y ya sin mas vamos a empezar con la víctima, habíamos dicho que el programa escogido era el conocido Offline Explorer v1.2 178 BETA 3 tengo que decir que cuando empece a escribir este Tutorial, la versión del Offline Explorer era la Beta 2, y a la hora de buscar las direcciones para que bajaseis el programa ya había una nueva versión la Beta 3, la podéis coger de:

Ocupa (508KB)

ftp://ftp.datacomm.ch/.3/tucows/files4/oebsetup.exe

ftp://ftp.ntua.gr/pub/pc/tucows/files4/oebsetup.exe

Este programa es una gran utilidad para vajarnos paginas Web enteras, par poder verlas offline, cuenta con un pequeño navegador y es bastante rápido a la hora de descargar paginas y archivos.

Herramientas: W32dasm, ProcDump, y un editor HEX.

Comportamiento del programa: este programa nos da una evaluación de 30 días, pasado este tiempo nos muestra un nag con la opción de registrarnos mediante nombre y numero de serie, si no aciertas con el registro se cierra automáticamente sin posibilidad de poder utilizar ninguna función del programa.

Ataque: Lo mas limpio seria localizar un S/N valido para registrarnos, pero de lo que se trata es de aprender a utilizar las herramientas.

Localizaremos la rutina que verifica si ha finalizado la evaluación o no, manipulándola en nuestro beneficio, con lo cual simularemos estar registrados.

A trabajar: IMPORTANTE como acabamos de descargar el programa lógicamente no esta caducado, para seguir sin dificultad este manual RECOMIENDO Que adelantéis la fecha de vuestro Windows unos 35 días para poder utilizarlo como caducado (una vez restaurada la fecha el programa vuelve a su estado de evaluación)

Instalamos el programa, Intentemos desensamblar OE.exe con el W32Dasm y como os había comentado no muestra código así que abrimos el ProcDump y este es su aspecto.

Lo primero que tenemos que hacer es descomprimir OE.exe , para hacerlo pulsamos la opción [Unpack] esto nos abrirá una nueva ventana con un lista de nombres raros estos nombres raros son algoritmos de descompresión, ósea que si el programa fue comprimido con el compresor PE petite V2, Pues para descomprimirlo tendremos que elegir el algoritmo petite 2, pero como sabemos con que compresor PE esta comprimido ¿? Pues para mi es un misterio, pero seguro que existe alguna utilidad que nos dice que tipo de compresor se ha utilizado yo suelo ir probando con todos los algoritmos asta que acierto, el ProcDump tiene su propio algoritmo llamado estándar es con este con el primero que debemos probar.

Bueno íbamos por pulsamos la opción [Unpack] y nos aparece esto.

Y seleccionamos el algoritmo Aspack108.3 que es el adecuado para nuestra víctima una vez seleccionado pulsamos ok, en este momento se abrirá un menú para que escojamos el archivo que vamos a descomprimir, vamos a la carpeta o directorio donde tenemos instalado offline explorer y hacemos doble clip en OE.exe aparece

Esto:

Mientras aparece esto seguramente se empezara a ejecutar el programa offline explorer, en ese momento pulsáis en la ventana Pease hit OK when task is loader(check taskBar) Aceptar, Offline Explorer terminara de ejecutarse, cundo termine de ejecutarse y no antes cerráis Offline Explorer y esperáis unos segundos asta que el ProcDump termine de descomprimir todos los procesos, enseguida termina y se abre una ventana para que guardéis el nuevo ejecutable ya descomprimido, lo guardáis con el nombre que queráis este nuevo ejecutable ocupara unos 1.070 KB,

Aseguraros de que el nuevo ejecutable funciona correctamente, le hacéis doble clip y tiene que funcionar exactamente igual que el original, ahora ya podemos desensamblarlo con el W32Dasm, vamos corriendo y lo desensamblamos, coñoo pero tampoco nos muestra código, Que pasa¿? Pues lo que ocurre es que tiene una protección contra debugers, desensambladores y programas que puedan seguir sus procesos.

Pero como el ProcDump es una joya también quitaremos esa protección. Ahora vamos nuevamente al ProcDump y pulsamos la opción [PE editor] y editamos el nuevo ejecutable ( el que tenemos descomprimido )cuando lo tengamos editado veremos esto:

Esto son datos del ejecutable que no explicare porque esta todo explicado en el manual sobre el ProcDump de WKT que os vuelvo a decir donde encontrarlo.

http://www.wco.com/~micuan/WKT/pdumptut.htm

ahora pulsamos la opción [Seecions]con lo cual se abré una nueva ventana de opciones para poder manipular algunas cosillas de nuestro ejecutable descomprimido.

Y esto es lo que vemos, esto es la cabecera de nuestro ejecutable, aquí vemos algunas referencias como CODE, DATA, BSS ETC. Todas ellas seguidas de direcciones de memoria, teníamos que conseguir quitar la protección anti Dasm de nuestro programa, os enseñare como lo hago yo (lo que os explico a continuación desconozco el porque pero yo lo utilizo y por ahora me ha funcionado siempre) primero os diré que estos nombres que estamos viendo en esta ventana no siempre son iguales que estos y no siempre están colocados en esta posición, bueno yo siempre cojo el primer nombre en este caso CODE en la sección Characteristics tenemos el siguiente numero C0000040 bueno pues si pulsáis sobre CODE con el botón derecho del ratón se despliega un menú de opciones, escogéis Edit Sections y cambiáis el numero

C0000040 por E0000020 Y cerráis todas las ventanas del ProcDump y ahora vamos a desensamblarlo nuevamente, primero hacer una copia del ejecutable descomprimido (nuestro nuevo ejecutable) cogemos el W32Dasm y lo desensamblamos, jejeje cuanto tarda ahora he!! Esto es buena señal, como veis ahora tenemos todos los procesos del programa, ha sido interesante como modificando el ejecutable original hemos ido consiguiendo lo que queremos.

Ahora utilizamos nuestras técnicas cracking, que las tenemos ya dominadas, es importante que tengáis adelantada la fecha para que el programa este caducado como he dicho antes con 35 días adelantado es suficiente, bueno ejecutamos el programa y como esta caducado nos muestra un nag que nos dice que la evaluación ha finalizado Sorry, this beta version has expired.

Como siempre nos ponemos a pensar detenidamente y sin ningún tipo de prisas, si tenemos prisa mejor dejarlo para otro día.

Bueno han pasado 30 días y el programa ya no funciona como puede ser¿?¿?¿ ayer si funcionaba y hoy no, entonces en alguna parte de nuestro ordenador seguramente en system.dat (el registro de Windows) ha guardado los datos del día que lo instalamos y cada vez que ejecutamos el programa este mira la fecha y si no han pasado 30 días no nos mostrara Sorry, this beta version has expired, pero si han pasado 30 días entonces si.

Como hará el programa para verificar esto ¿???? Pues lo típico seria que mediante una rutina tipo call xxxxxxxx se dedique ha realizar estas comprobaciones y según el día que sea le pasara un valor 1 o 0 a una comparación tipo cmp xxx,xxx o test xxx,xxx y esto hará que se ejecute un je jne hacia el mensaje Sorry, this beta version has expired o que no se ejecute dependiendo de si a pasado la evaluación o no.

Pues mediante Sor, this beta version has expired busquemos algo así

Call xxxxxxx

Cmp xxx,xxxxxx / test xxx,xxx

Jne xxxxxx / je xxxxxx

Yo creo que esto ya tiene que estar claro, por que en los manuales anteriores estamos hartos de ver este tipo de funciones.

Localizamos Sorry, this beta version has expired en el W32Dasm y ahí esta casi abajo del todo, doble clip sobre la frase y otro doble clip por si hubiese mas llamadas a este texto, pero solo hay una en.

* Possible StringData Ref from Code Obj ->"Sorry, this beta version has expired. "

->"To get an updated version of Offline "

->"Explorer, please press Web site "

->"button."

|

:004C9CA9 BAE49F4C00 mov edx, 004C9FE4 -> AQUÍ APARECEMOS

:004C9CAE E82D92F6FF call 00432EE0

:004C9CB3 8B06 mov eax, dword ptr [esi]

:004C9CB5 8B80F0020000 mov eax, dword ptr [eax+000002F0]

:004C9CBB 8B4058 mov eax, dword ptr [eax+58]

 

Como siempre veamos los alrrededores de este codigo, siempre hacia arriba, porque lo logico es que quien da la orden para que se imprima Sorry, this beta version has expired este por encima de la frase, pensemos que estamos analizando un listado muerto, por lo menos ami me parece logico. Y que tenemos arriba

:004C9C41 E89204F4FF call 0040A0D8

:004C9C46 83C4F8 add esp, FFFFFFF8

:004C9C49 DD1C24 fstp qword ptr [esp]

:004C9C4C 9B wait

:004C9C4D 8D4DE6 lea ecx, dword ptr [ebp-1A]

:004C9C50 8D55E8 lea edx, dword ptr [ebp-18]

:004C9C53 8D45EA lea eax, dword ptr [ebp-16]

:004C9C56 E89102F4FF call 00409EEC – Rutina de comprobacion

:004C9C5B 80BB2105000000 cmp byte ptr [ebx+00000521], 00

:004C9C62 0F8498000000 je 004C9D00 –- nuestro salto

:004C9C68 66817DEACE07 cmp word ptr [ebp-16], 07CE

:004C9C6E 0F868C000000 jbe 004C9D00

:004C9C74 66837DE809 cmp word ptr [ebp-18], 0009

:004C9C79 0F8681000000 jbe 004C9D00

:004C9C7F 833E00 cmp dword ptr [esi], 00000000

:004C9C82 757C jne 004C9D00

:004C9C84 8B0DF83C4D00 mov ecx, dword ptr [004D3CF8]

:004C9C8A 8B09 mov ecx, dword ptr [ecx]

:004C9C8C B201 mov dl, 01

:004C9C8E A120774B00 mov eax, dword ptr [004B7720]

:004C9C93 E81CE9F7FF call 004485B4

:004C9C98 8906 mov dword ptr [esi], eax

:004C9C9A 8B06 mov eax, dword ptr [esi]

:004C9C9C E85B5DFDFF call 0049F9FC

:004C9CA1 8B06 mov eax, dword ptr [esi]

:004C9CA3 8B80F0020000 mov eax, dword ptr [eax+000002F0]

Bueno pues esta mas que claro ha sido como en los manuales anteriores,

call 00409EEC esta llamada comprobara la fecha actual y la fecha de instalacion, dependiendo del día que sea cmp byte ptr [ebx+00000521], 00 recibirá un valor u otro y este le dirá a je 004C9D00 si tiene o no que saltar, fijándonos en la dirección a la que saltaría je 004C9D00 lo que nos conviene es que salte así se pasa de largo Sorry, this beta version has expired y no nos lo podra mostrar, que tenemos que hacer¿? Pues convertir je 004C9D00 en jmp 004c9d00 convertirlo en un salto incondicional, que saltara siempre, pero convertir este saltto en un salto incondicional no es tan fácil como otras veces no¿? Ya que este no es el típico

xxxxxx 7445 je xxxxxx esto seria muy fácil verdad pero nosotros tenemos.

004C9C62 0F8498000000 je 004C9D00

y como podemos saber como sustituir je por jmp con tantos bytes como hay esta vez?¿ bueno lo primero decir que la cantidad de bytes varia dependiendo de la distancia a la que tenga que viajar el salto, cuanto mas lejos mas bytes (creo)

En algún manual de estos ya explique como hacerlo, pero para que no busquéis los que no sepáis os lo explico nuevamente, yo lo hago así.

Con el W32dasm como sabéis este dasm también cuenta con un debug, si pulsamos [ctrl+L] aparece una opción para cargar el debug, pinchamos load y entramos en el debuger empiezan a aparecer un mogollón de ventanas y números, Bueno en una de las ventanas veréis la opción goto address la pulsáis y aparece otra ventana donde tenéis que meter la dirección de memoria donde se encuentra el salto que hay que partchear, pues en la casilla ponemos la dirección que es 004C9C62 y pulsamos OK

Veréis que en la ventana ha aparecido nuestro salto, claro hemos llamado a esa dirección de memoria con goto address ahora parchearemos el salto (ojo solo temporalmente ya que con el debug los cambios solo se hacen en memoria, cuando ejecutes nuevamente el programa estará original) para parchearlo pulsamos

Path Code y se abre otra ventana con nuestro salto y con una casilla en blanco (Enter new Instructions) y hay escribimos el nuevo salto que como era un salto incondicional metemos estos datos jmp 004C9D00 y pulsais Enter

Y ya veis en el recuadro que ha aparecido el salto nuevo así

:004C9C62 E999000000 jmp 004C9D00 pues ya sabéis los nuevos Bytes

Cambiamos OFFset C9262

este 004C9C62 0F8498000000 je 004C9D00

por :004C9C62 E999000000 jmp 004C9D00

Editáis con el editor HEX la copia habíais hecho (claro del ejecutable nuevo,el descomprimido) y en la dirección de offset que tiene el salto OFFSET C9262

REALIZAIS LOS CAMBIOS QUE TENEIS ARRIBA, salváis el ejecutable y voila fuciona perfectamente.

Ahora que ya habéis crackeado el programa si queréis podéis volver a comprimir el archivo OE.exe , yo lo comprimí con el petite, al principio del manual tienes direcciones para conseguir compresores PE.

IMPORTANTE No te olvides de volver a poner la fecha correcta en tu ordenador.

 

Pues esto es todo. Que os a parecido.. interesante no¿? Como siempre mi mayor deseo es que entendáis esto como yo intento explicarlo. Es difícil escribir manuales creerme, pero mientras una sola persona los lea seguiré J

Con cualquier duda mandarme un email, contesto a todos los email.

Un saludo para todos/as (karpoff)

Kf_karpoff@hotmail.com

http://personal2.redestb.es/karpoff

El uso de este material es solo para uso educativo, por ahora los cracks son ilegales cada cual es responsable del uso que le de a este tutorial, el autor no se hace responsable de nada.

Tutorial Descargado de Karpoff Spanis Tutor

www.000webhost.com