Karpoff Spanish Tutor

Programa: Win-eXpose Registry V1.0


 

PROTECCION: Name / Serial
Descripcion: Spya del Registro de Windows
Dificultad: Facilon
DOWNLOAD: http://www.shetef.com/wxr95-10.zip
Herramientas: SoftIce v3x + , W32Dasm , Editor Hexadecimal
CRACKER: karpoff   FECHA: 21/08/99

 

 INTRODUCCION

## Tutoríal de Crackeo Para Newbies desde Cero 21/08/99

Por Karpoff ## PROYECTO 6 ##

- Continuando Con el SoftIce.

- Win-eXpose Registry V1.0

Hola nuevamente a todos/as, que tal el proyecto 5 ?????, seguro que la mayoría conseguisteis el n/s correcto. Debido a que he recibido algunos Emails pidiéndome que continuase con proyectos basados en W32Dasm, he escogido este programa.

Es una utilidad muy buena para rastrear los procesos de cualquier aplicación que se ejecute en nuestra maquina, esta utilidad muestra los cambios que puede hacer un proceso tal, en el registro.

La podedeis coger de:

http://www.shetef.com/wxr95-10.zip

 

 AL ATAKE

 

Lo estudiaremos con el SoftIce y con W32Dasm, así podéis escoger la herramienta que mas os guste. De todas formas sigo pensando que si habéis seguido los manuales estáis mas que preparados para utilizar el SoftIce, yo os recomiendo este, las protecciones cada vez son mas enrevesadas, y con un listado muerto es imposible de seguir.

El programa de hoy es bastante antiguo tiene una protección ridícula, para registrar el programa tenemos que rellenar un formulario que casi parece nuestro D.N.I. nos pide nombre, 1er apellido, 2do apellido, nombre de la compañía ( Leticia J ) un numero de serie y un passwod. La clave valida se genera según el numero de serie que metamos, una vez generado el numero valido, no lo guarda en el registro ni lo encripta en dios sabe donde, sino que lo guarda su archivo .ini.

Herramientas: las de siempre. SoftIce o W32Dasm y un HEX editor.

Ataques, Localizar la rutina que se encarga de verificar si el n/s que hemos metido es correcto o no, y manipularla para nuestro beneficio, o bien eliminarla si es posible, o podemos localizar el punto donde se genera el n/s valido y capturarlo, En esta ocasión haremos las dos cosas.

El programa nos da una evaluación de 30 días, pasado este tiempo, no podemos seguir utilizándolo, ya que detiene el proceso que este realizando y nos muestra la pantalla de registro cada x tiempo

 

PARTE 1 ( CON EL SOFTICE)

Empezamos con el SoftIce. Arrancamos el ordenata y cargamos el SoftIce, abrimos Wxr95.exe con el soft. Pulsamos el botón de los engranajes para empezar a tracear el programa. Saltamos al softIce y pulsamos F5 para que continúe su ejecución, aparecemos otra vez en Windows y con el programa abierto, metamos los datos del registro.

Your asked to enter:

Your First,LastName:a

Company Name, :a

Address Line 1: a

Address Line 2: OWL(Bhuo)

Serial Number: 123456789

Password: 123456789

Podéis rellenar con los datos que queráis, según que datos metáis generara un numero u otro. Ahora debemos poner un BP o punto de ruptura, para capturar la rutina que comprueba nuestro numero y genera el numero valido, yo he probado con Messageboxa , pero podéis intentarlo con otros BPs,( es mas, os obligo a que practiquéis con otros BreakPoints, para ver las diferencias entre que procesos capturan unos u otros, aprenderéis mucho probando.) Pulsamos [Ctrl+D] para saltar al Softice y ponemos.

BPX messageboxa

Volvemos a pulsar [Ctrl+D] Para salir del Softice y pulsamos aceptar en los datos del registro, en este momento el breackPoint que pusimos hace efecto y saltamos al Soft. Justo en:

User32! Messageboxa

015F:BFF5412E 55 PUSH EBP

Aparecemos directamente dentro de user32.dll en una llamada externa a messageboxa, a nosotros no nos interesa para nada navegar dentro de esta dll lo que nos interesa averiguar es quien llamo a messageboxa.

Para ver quien hizo la llamada a messageboxa pulsamos F11 o F12 Y ooh L salimos a Windows con el mensaje de que hemos fallado en el registro, que nos sugiere esto, (antes de seguir leyendo pensar porque en vez de llavarnos a el principio de la llamada nos saca a windows con el mensaje de error. ) pues que la llamada que se hizo a messageboxa debe se ser muy sencilla, y pequeña, ( esto siempre son mis deducciones que podrían no ser del todo así, pero como ya he comentado mis conocimientos son bastante pobres J )

Como siempre mi ataque es pensar que tiene que haber una parte de la rutina donde comprueba si es valido el numero metido o si es falso, esta comprobación estaría seguida de un salto que dependiendo del valor que reciba saltara a el mensaje de error o continuara su ejecución normal aceptando el numero de registro, o viceversa .(aclaro que este tipo de comprobación que comento es la mas sencilla que conozco, podría no tener nada que ver con este estilo, pero dado que es un programa antiguo y que utiliza un archivo .ini para guardar el registro creo que es la que utiliza.)

Continuamos nos habíamos quedado en el mensaje de error, como todavía tenemos el BreakPoint messageboxa activado pulsamos [OK] en el mensaje de error y nos lleva a:

:004025A3 CALL    [USER32!MessageBoxA]

:004025A9 MOV     BYTE PTR [EBP-04],00 --à Aquí aparecemos.  

:004025AD CALL    00402750

:004025B2 MOVE    DWORD PTR [EBP-04],FFFFFFFF

:004025B9 CALL    00402762

:004025BE MOV     EAX,[EBP-0C]

:004025C1 POP     EDI

:004025C2 MOV      FS:[00000000],EAX

:004025C8 POP     ESI

:004025C9 POP     EBX

:004025CA MOV     ESP,EBP

:004025CC POP     EBP

:004025CD RET

Creo que estamos al final de la rutina de comprobacion, entonces remontemos la rutina para localizar una comprobación tipo TEST XXX,XXX o CMP XXX,XXXXXXX seguida de un salto que tenga las características si el numero es valido salta si no es valido continua,( o al rreves), Miremos que encontramos por hay arriba, subimos mas mas un poquito mas, y encontramos el primer je que según el valor que reciba de Test XXX,XXX salta o sigue su ejecución.

:004024F7 TEST     EAX,EAX  à si el numero es correcto le dice a el salto que salte a la dirección 004025ce, si es falso continua ejecutándose en la siguiente línea, y empieza a generar los mensajes de error.

:004024F9 JZ       004025CE à Según el valor que le asigne TEST salta o no.

:004024FF PUSH    0040A1A4

:00402504 MOV     ECX,0040A90

:00402509 PUSH    0040A158

:0040250E PUSH    0040A140 

:00402513 CALL    00406E40 

Y vosotros os preguntáis, y como save este tío que para que acepte el numero de registro lo valido es que salte y no al reves. Contestación pues podéis probar a cambiar el salto por un salto incondicional (jmp) que salta lleve el valor que lleve. O podéis desensamblar el programa y observar esta parte del código, veréis que si no salta y sigue su ejecución normal, se va ha encontrar con todos los avisos de error, pero si salta evita todos los aviso.( tenéis que verificar lo que os he dicho es obligatorio J )

Continuamos, estabamos dentro del soft y habíamos localizado el posible salto.

Bueno hemos localizado el salto pero esta parte del código ya se ha ejecutado así que tenemos que entrar en el soft antes de que se ejecute este salto para así poder manipularlo, como lo hacemos muy fácil tenemos que ponerle un BreakPoint para entrar en el soft justo antes de que se ejecute, y tenemos que borrar el BreakPoint messageboxa para que no se active en plena ejecución, porque ya hemos localizado lo que queríamos, pues no nos sirve ya para nada. Para desactivar el BreackPoint

BC 00 à Borra el primer Breakpoint que hallamos puesto en este caso messageboxa, para ver que numero de BP tiene asignado cada uno en caso de que hubieseis utilizado otros.

BL à nos lista los breakPoint tanto activos como desactivados, ej,

BL [INTRO]

00 messageboxa

01 messagebox

02 getwindowtexta

Una vez borrados los BreakPoints, le ponemos otro a :004024F9 JZ      004025CE , para poner un BP a una dirección de memoria podemos hacer doble clip encima de la dirección que nos interese o como siempre con el comando BPX

BPX 004024F9

Si ya hemos hecho todo esto pulsamos F5 o [Ctrl+D] para salir del Soft, estamos nuevamente en el formulario de registro, ahora solo tenemos que pulsar OK y aparecemos justo en el salto :004024F9 JZ      004025CE ,Bueno tenemos que convertirlo en un salto incondicional (jmp) que salte por narices, lo primero desactivamos o borramos el BP que le hemos puesto, ya no nos sirve para nada, ahh muy importante, y si este no fuese el salto que buscábamos??? ,si este es el salto correcto todavía no se tiene que haber generado el mensaje de error como saberlo, recordar el tutorial anterior.... solo tenemos que pulsar la tecla F4 para ver como van las cosas fuera del soft si pulsamos F4 y esta el aviso de numero incorrecto mal asunto, si no esta vamos bien, pulsamos F4 y vemos que no se ha generado bien J , volvemos al soft pulsando otra vez F4. Tenemos que convertir

004024f9 0F84CF000000 JZ 004025CE

CAMBIARLO POR 004024F9 ¿???????????    JMP 004025CE à salto incondicional 

Las interrogaciones significan que tendremos que averiguar que Bytes son los que harán que jz se convierta en jmp para que el programa funcione correctamente, debemos tener en cuenta que si hay que cambiar Bytes nunca podemos meter mas o menos Bytes de los originales. Hasta ahora hemos cambiado:

JE POR JNE = 74 POR 75

JNE POR JMP = 75 POR EB

JE POR JNE = 0F84CF000000 POR 0F85CF000000

 

PERO COMO CAMBIAMOS UN 0F84CF000000 JE POR UN JMP

La manera que yo utilizo es, cuando lo cambiemos en el soft fijaros en como cambian esos Bytes y apuntarlo, por que si luego queremos generar el Crack necesitaremos un HEX edit y cambiar los Bytes por los que hemos apuntado.(con el W32dasm también podemos averiguar que Bytes son la sustitución correcta, luego lo explico.)

Estamos dentro del Soft justo en el salto que nos interesa, hemos desactivado el BP del salto haciendo doble clip sobre el ( se quitara el azul cyan ) o con el comando

BC 004024F9 y ahora a ensamblar la nueva instrucción, con el comando A del SOFT

004024f9 0F84CF000000 JZ 004025CE

004024FF 684A1400 PUSH 0040A1A4

A 004024F9 [INTRO]

Nos mostrara..

015F:004024F9 à AQUÍ TENEMOS QUE ESCRIBIR EL CAMBIO QUE TENEMOS QUE HACER OSEA.

015F:004024F9 JMP 004025CE [INTRO] EN ROJO LO QUE HEMOS ESCRITO PAR ENSAMBLARLO.

015F:004024FF [INTRO]NOS MUESTRA LA SIGUIENTE DIRECCION DE MEMORIA POR SI QUEREMOS SEGUIR ENSAMBLANDO NUEVAS INSTRUCCIONES, COMO NO QUEREMOS PULSAMOS [INTRO] Y LA NUEVA INSTRUCCIÓN QUEDA ENSAMBLADA.

Ahora fijaros en el Soft como ha cambiado la línea del salto, tiene que mostrar esto.

004024f9 E9D00000000 JMP 004025CE à Ahora si salta a 004025CE

apuntar en un papel lo que esta en rojo para luego hacer el crack.

Bueno ahora pulsamos F5 para que se termine de ejecutar el programa y OLEEE J J , no hay aviso de error nos ha aceptado el numero pero que numero es?.

Vamos a C:\Windows y editamos el archivo Wxr95.ini y

Key=EXPREF062F11

Este código solo es valido para los datos que hemos utilizado

Ya tenemos registrado el programa. si miráis en help about veréis los datos que halláis metido J .

 

PARTE 2 W32Dasm

Quiero deciros que en esta segunda parte no me voy a extender en explicaciones, ya que es el mismo programa solo que con distinta herramienta las explicaciones de funcionamiento, protecciones y ataques son las mismas que con el Soft.

Lo primero hacer una copia del ejecutable Wxr95.exe bien con otro nombre o copiando todo el programa a otra carpeta. Abrir el original con el W32Dasm y la copia con un Editor HEX.

Empezamos pulsamos el botón del W32dasm que nos muestra todas las cadenas de texto. Localizamos la que nos escupe cuando fallamos en el registro

Wrong password please reenter

Hacemos doble clip sobre la frase y nos lleva a

Possible StringData Ref from Data Obj à " Wrong password please re-enter "

à " Informarion."

|

:0040259c 6860ª14000 PUSH 0040A160

bueno pues como siempre tenemos que encontrar un salto con la siguientes características, que según el valor que le asignen pueda saltarse este aviso, o que su ejecución normal le permita llegar asta este aviso, dependiendo de si acepta el registro o no, pues ala manos a la obra.

Os habéis fijado, que según íbamos hacia arriba nos encontrábamos con un montón de avisos todos ellos relacionados con formulario de registro, y al final de todos ellos el salto con las características que buscamos.

:004024F7 85c0 TEST     EAX,EAX  à si el numero es correcto le dice a el salto que salte a la dirección 004025ce, si es falso continua ejecutándose en la siguiente línea, y empieza a generar los mensajes de error.

:004024F9 0F84CF000000 Je       004025CE à Según el valor que le asigne TEST salta o no.

Como veis si salta evitaría el aviso de error, y si no salta continuaría normalmente hasta el aviso maligno. Que tenemos que hacer para que salte convertirlo en un salto incondicional que salte por narices.

Como he comentado en la parte 1 no estamos acostumbrados a realizar cambios se saltos, con tantos Bytes, así que os explicare como saber que bytes son los validos para poder patchear el je por jmp

En el menú de archivos pulsar en debug y seguidamente en load proccess, vamos a aplicar el cambio al estilo del Soft, con el programa en marcha. Para el que no lo sepa el W32dasm cuenta con su propio debug es pobre comparado con el soft aunque muy cojonudo comparado con otros que hay por hay , dedicare un turorial a explicar como utilizar este debug.

Bueno si habéis hecho lo que os dije, ahora tendréis una ventanita con una línea de comandos, si poner nada pulsar load, y el debug empieza a ejecutar el Wxr95.exe

Ahora pulsar en la opción GOTO ADDRESS ( IR A UNA DIRECCION DE MEMORIA ), aparecerá una ventana donde debéis de meter la dirección de memoria donde se encuentra el salto que queremos patchear escribimos 004024f9 , y pulsamos OK

E inmediatamente aparece en la ventana de procesos nuestro salto.

Ahora para modificarlo pulsaremos la casilla Patch Code y se habré otra ventana con nuestro salto y una línea de comandos para aplicar los cambios que queremos realizar, osease que escribimos:

JMP 004025CE Y PULSAMOS [INTRO]

Ahora fijaros en code Patch listing hay tenemos el patcher que acabamos de generar, tiene que mostraros esto

004024f9 E9D00000000 JMP 004025CE el patcher todavía no esta aplicado, pero ya sabemos cuales son los Bytes que hay que utilizar para cambiar el je del código original por el jmp del código manipulado, estos bytes son los que están en rojo, si quereis generar luego el cack recomiendo que lo apunteis, para aplicarlos en el editor HEX.

Bueno apliquemos el patcher a el programa, todavía tenemos la ventana donde nos muestra el patcher que hemos generado, para aplicarlo   solo tenemos que pulsar la opción Apply Patch, una vez que hemos pulsado esa opción nos pide confirmación, aceptamos claro,y ya esta cerramos esa ventana pulsando Close, ahora ya esta el patch aplicado, se supone que si pulsamos la opción run o la tecla F9 el programa aceptara cualquier registro que metamos. Y como era de esperar así ha sido.

Ahora si miráis en el archivo Wxr95.ini que se encuentra en C:\windows veréis en

KEY:vuestra clave de registro

No es necesario parchear con el Editor Hex los cambios, ya que nos ha generado una clave valida en el archivo Wxr95.ini, bueno en realidad la clave si la metes desde el formulario de registro no es valida, lo que es valido es todo el archivo Wxr95.ini, que en este caso seria un Crack valido.

De todos modos yo os recomiendo que generéis el crack parcheando la copia del ejecutable con el editor Hex, y hacer el ejecutable con cualquier Generador de cracks, lo guardais hasta que tengáis una gran colección, luego le dejáis flipado/a a la novia/o J

No explicare como aplicar los cambios con el Hex, por que ya tenéis nivel para eso y mucho mas. hasta el próximo tutorial,

Un saludo a Todos/as [y como no a el Bhuo].

( Karpoff.)

Como siempre espero que lo halláis cogido, yo intento explicar lo mejor que puedo, pero no soy ningún experto.

Si teneis algun programa que os esta dando gerra porque no podeis con el, Podemos analizarlo aqui. Solo teneis que mandarme un email.

Cualquier Duda, Sugerencia, Critica etc. A

Email Kf_karpoff@hotmail.com     URL: http://welcome.to/karpoff

Un Saludo a TODOS/AS. (Karpoff)

Este material es solo para uso educativo, por ahora los cracks son ilegales.

 

Karpoff Spanish Tutor: Pagina dedicada a la dibulgacion de informacion en Castellano, sobre Ingenieria Inversa y Programacion. Email "Colabora con tus Proyectos"
www.000webhost.com