PROGRAMA

      

PROTECCION

     

HERRAMIENTAS

ActiviWonder Crackmes


DESCARGA

 

Librerias C1

 

Librerias C2

 

Sin protección

 

Olly Debugger

Exescope

Hackman

 

 

 

 

 

     NIVEL: Cavernicola

 

 



Conocer otro tipo de protección.
Ver conversión hexadecimal – ASCII.
Pasar un rato entretenidos.



Antes de nada: para que os funcione el primer crackme - ActiviWonder1 CrackmeC.exe - a lo mejor necesitais las librerias que incluyo en este capitulo.
Solo debeis descomprimirlas en la carpeta donde tengais el crackme.

Este tipo de protección lo encontramos algunas veces con programas share que tienen alguna característica deshabilitada hasta que paguemos el precio del registro (parece una película de Brian de Palma: Scarcracker el precio del registro), como por ejemplo el botón Save o guardar.
En definitiva este capitulo va de activar o habilitar botones.

Utilizaremos editores de recursos Exescope, un editor hexa (y algo mas) Hackman 7.03 y Olly

He creado 3 mini programas para ver este tema, cada uno en un lenguaje de programación diferente (C++ Delphi y Visual Basic)
No soy programador asi que si tienen errores espero que me perdonen.

Empezaremos por el crackme escrito utilizando Borland c++ builder.
Pasamos por esta vez de analizarlos con Peid pues no les puse protección.

ActiviWonder1 CrackmeC.exe

Al abrirlo vemos una ventana con 2 botones desactivados y en la barra del menú 2 opciones desactivadas, pulsamos Ayuda para ver que va la cosa y aparecen las instrucciones, ya sabemos de qué va esto.



Para hacer esto vamos a utilizar un editor de recursos: Exescope
Empecemos por los botones del formulario y dejemos los del menú superior para después (por llevar la contraria al autor nada mas).

Vemos que el Caption del primer botón es Actívame (explicado en el capitulo de DeDe)

Abrimos Exescope y cargamos el programa, nos fijamos en la parte de la izquierda y desplegamos RCData.

También podríamos buscar en el apartado Dialogs si lo Hubiera, quedaros con esto.

TFORM1 hace referencia a un formulario, en este caso el programa solo tiene un formulario que es la ventana principal del mismo, la que aparece al ejecutarlo.
Si hacemos click encima de TFORM1 vemos que en la ventana derecha se rellena con texto



Vamos buscando por el texto has encontrar la palabra Actívame (el caption del botón que queremos habilitar)
Cuando llegamos vemos que esta dentro de object Button vemos que nos indica que es un botón (TButton) y que su propiedad Caption es Actívame
También vemos el ancho - Width, largo- Heigth y posición- Left y Top en el form y una propiedad que en este caso es la que nos interesa: Enabled



Enabled = False
Traducción al sioux = Enabled – activado, habilitado False = falso Valor 00
Enabled tiene su antónimo que es Disabled = desactivado, deshabilitado
Así mismo la palabra contraria a False es True = verdadero Valor 01

La propiedad Enable vemos que esta False, o sea que Activado = falso (00), como estamos en la propiedad Enable que pertenece al Button1 el cual tiene el Caption Actívame deducimos:
1-Que no podemos pulsar el botón Actívame porque al hacer este programa el capullo que lo hizo dejo sin activar este botón dándole a la propiedad Enable el valor False.
2-Que a lo mejor si cambiamos False por True (01) habilitamos el botón.

(Los que sepan programar se estarán desc#j#nand# con la “explicación” anterior de los valores booleanos, pero ni esto es un curso de programación ni el que lo imparte va mucho mas allá de los tres programas que acompañan a este capitulo).

Vamos a hacerlo, es tan fácil como escribir True en el lugar que ocupa false

   

Una vez que escribimos True guardamos el cambio en ejecutable con guardar actualización



Nos aparece esta ventana y desmarcamos Permitir cambiar el tamaño del ejecutable.
Siempre intentaremos alterar lo menos posible los ejecutables pues algunos programas al detectar el cambio no funcionaran.
Aceptamos y Cerramos Exescope



Ejecutamos el crackme y vemos el botón activado



Lo pulsamos



Vamos a por el segundo botón, este no tiene Caption, no pone nada, pero como somos astutos sabremos encontrarlo
Cargamos otra vez el crackme en el Exescope y buscamos un botón (TButton) sin Caption
Encontramos el Button2 justo debajo del anterior.



Vemos la diferencia con el botón 1, le falta la propiedad Caption este también tiene la propiedad Enable = False pues la cambiamos y guardamos el cambio en el ejecutable



Cerramos Exescope y abrimos el crackme vemos el botón 2 activado, lo pulsamos y nos salen dos avisos, hagámosles caso



Vamos a darle un nombre al botón, vamos a escribir el Caption del botón
Cerramos el crackme y abrimos Exescope
Buscamos el botón dos y le añadimos la propiedad Caption y el valor que queramos



Justo debajo esta el boton3 con el caption Soy invisible (así se las ponían a Felipe 2º)
Vemos una nueva propiedad: Visible = False o sea que no se ve, je je
No creo que haga falta explicar mucho: lo cambiamos a True



Guardamos los cambios sin permitir cambiar el tamaño del archivo y…



No podemos (claro no lo hemos permitido) y además al añadir una propiedad mas al botón 2 el ejecutable ha engordado unos bits tened esto en cuenta en el futuro al trabajar con editores de recursos.
Vamos a volver intentarlo a ver si este crackme nos funciona cambiándole el tamaño
Marcamos esta vez la casilla



Guardamos cambios y cerramos Exescope
Abrimos el crackme y…



Pulsadlo si queréis
Ahora vamos a por el menú.
Lo buscamos en el Exescope, ya sabéis como no ¿?
Una vez que lo encontremos observamos las propiedades y los Captions y cambiamos lo que necesitemos igual que hiciéramos con los otros botones y ya tenemos todo habilitado



Cuando tengáis habilitados todos los botones guardad los cambios y quedaros con una copia de este crackme habilitado, aparte claro de conservar el original

Otra manera de hacerlo, un poco mas liosa pero nos permitirá tomar contacto con un editor hexadecimal y aprender cosas nuevas

Se pueden hacer estos cambios en el código con Olly pero os voy a enseñar como y por que no diciendo cambia esto por esto y ya esta
Lo voy a hacer así para que veáis como a veces hay que buscarse la vida y para que experimentéis con más opciones de Olly

Esta parte es un poco complicada así que si no lo entendéis a la primera tranquilos.

Abrimos el Olly con el crackme e intentamos buscar primero el botón Actívame para hacerlo en el mismo orden que antes
Con el botón derecho Control +B o Search for – Binary String



Escribimos la palabra o cadena de caracteres a buscar

Importante: fijaros en la parte donde pone HEX en esta ventana vemos una serie de números y letras de dos en dos
Es la traducción a hexadecimal de los caracteres ASCII

Si miráis la tabla del capitulo 0 podréis comprobarlo 41-A 63-c 74-t 69 -i 76 -v 61 -a 6D-m 65- e


Pulsamos ok pero no encontramos la cadena actívame por ningún lado probaremos con otra

Fijaros que siempre hace la conversión ASCII - Hexa
Buscamos por ejemplo el evento click del botón 1 (Actívame)



Tampoco la encontramos, pero debe andar por algún lado, pues tanto el botón como sus propiedades y eventos pertenecen al programa, el botón es uno de los recursos incluidos en el crackme

Vamos a buscarlo en la memoria
Pulsamos sobre View - Memory



Aparece esta ventana
Paso uno- estamos buscando los recursos del crackmeC.exe, pues buscamos el ejecutable en la ventana de la memoria lo vemos y vemos la palabra resources (recursos)

Paso dos- Sobre la palabra resources click derecho y escogemos Dump in cpu (volcar en la cpu, vomita lo que lleves dentro!!!) vamos a ver si haciendo un volcado de la memoria conseguimos encontrar alguna de las cadenas del crackme que nos den pistas para poder activar los botones



Busco Button1Click (podría haber buscado Actívame o la cadena que realmente se necesita para habilitar el botón pero daré un rodeo, de momento se que si encuentro Button1Click es que el botón esta ahí que es lo que interesa ahora)



Ahora si la encontró fijaros solo la vemos en hexa a la izquierda (sombreada)



Buscamos Button2Click y también esta



Lo mismo para el botón 3



Llegados a este punto imaginamos que entre esa maraña de números y letras tiene que estar la clave para cambiar la propiedad Enabled del botón
Como saber que valor cambiar, donde esta y cual es el valor que debemos darle ¿?
Hackman y la lógica más aplastante entran en juego.

Empecé el capitulo por la parte mas fácil para poder tener un crackme totalmente operativo en poco tiempo sin problemas, pues el Exescope nos hace todos los cambios sin apenas esfuerzo.
Si miramos en la carpeta donde se instalo Hackman vemos muchas herramientas
Nos interesa Compare.exe, porque para saber lo que tenemos que cambiar vamos a comparar el crackme original con el parcheado por nosotros con el Exescope y ver que es lo que cambia



Ejecutamos compare.exe y lo vemos claro (si os acordáis es parecido a lo que nos hacia el Patch FX para crear el nuestro propio parche) debemos introducir el original y el parcheado
Si no os funciona clickeando en las flechas negras haced dobleclick encima de las casillas vacías donde pone archivo y original
Una vez se hayan cargado, sin marcar ninguna opción mas pulsad comparar



hay 5 diferencias entre el original y el parcheado, en uno pone
09 y en el otro el valor es 08

Tenemos 5 botones desactivados en el crackme Esos botones están Enabled = false

Tenemos 5 botones activados en el crackme que parcheamos con Exescope Esos botones están Enabled =True

08 y 09 son la diferencia entre estar activado y desactivado, entre false y true



Tenemos datos de sobra para poder cambiar los saltos, abramos Olly

Sigamos los pasos anteriores y hagamos el volcado de memoria en el Dump
Busquemos la palabra mágica Enable



El primer sitio donde para mirad después de Enable esta el numero 64 (d) con lo cual la palabra completa seria Enabled después 08 y 08, parece que estamos en el lugar correcto, la primera parada correspondería al uno de los 5 botones desactivados



Si queréis aseguraros (y para ver de que botón se trata) pues traducid desde Enabled hacia atrás
Lo podemos hacer directamente desde la ventana search for binary String escribiendo los valores sombreados
Creo que en la imagen queda claro



Hackman nos dijo que la diferencia entre Enabled y Disabled era cuestión de que el valor fuera 08 o 09
Vamos a cambiarlo, de los dos 08 que vemos a continuación cambiaremos solo el 08 que esta justo a continuación de la d (64) final de la palabra Enabled

Lo sombreamos y click derecho Binary – Edit o Control + E



En la ventana que aparece cambiamos el valor para alterar la propiedad del botón



Una vez cambiado guardamos los cambios en el ejecutable con el botón derecho del ratón Copy to executable file



Tenemos el primer salto cambiado, cerramos Olly y lo probamos
Los demás botones los buscaremos y cambiaremos de la misma forma buscando Enabled (a estas alturas supongo que habréis descubierto Control + L) y cambiando el valor
Esto será valido para 4 de los 5 botones, en el 5º la propiedad que hay que cambiar es “Visible”

Hacedlo de uno en uno y comprobando los cambios en el ejecutable

ActiviWonder2 CrackmeD.exe

Trastead con el lo que queráis para aclaraos sobre lo visto anteriormente, solo haré un pequeño apunte
Una vez que encontréis los valores a cambiar en Olly (acordaros de volcar la memoria) los podemos cambiar todos a la vez



y guardar los cambios de una vez también en el ejecutable seleccionando hasta que pillemos todos los cambios sombreados y Copy to executable



Hacedlo siempre y cuando estéis seguros que esos son los valores a cambiar, sino hacedlo despacio, de uno en uno traduciendo Hexa a ASCII y probando los cambios en memoria.


ActiviWonder3 CracmeVB.exe

Esta hecho en Visual Basic
Ejecutamos el crackme para ver de qué va
Lo abrimos directamente con Exescope y nos damos de narices con esto



No se ven ni RCData ni Dialogs
Bueno siempre nos quedara Paris…
Quería decir que tenemos a Olly esperándonos

Abrimos Olly y cargamos el crackme, hacemos lo que habíamos visto anteriormente: el volcado de la memoria y buscamos Enabled y no lo vemos

Estamos perdidos ¿? pues no mirad vamos a hacer una cosa que aprendí en un manual de Coco (en la web de crackslatinos nos encontramos con un tutorial de Coco titulado habilitando botones entre otros)

Sin volcados de memoria, directamente Search for binary String



Introducimos el caption del botón o parte de el



Aparecemos aquí y vemos jejejeje y arriba command 1 (en delphi a los botones los llaman Button en visual basic command)
En este crackme no nos podemos equivocar jamás de botón pues solo tiene 1



Atención al truco de magia:

Contamos
11 líneas desde jejejeje y en esa dirección cambiamos 00 por 01





Corremos el crackme con F9 y botón habilitado
Porque la línea 11 y no otra ¿?
Pues por que las otras cambiarían el valor de otra propiedad, como la altura la posición, anchura, etc. (Width, Heigth, Top, etc)
Esto no lo comprobé por mi mismo pues la fuente de donde proviene es más que fiable



Segunda parte vamos a cambiar el texto
Hacemos lo mismo buscamos la binary String pero esta vez el caption del label Eres capaz …
Lo vemos en posición vertical y lo sombreamos
Con click derecho Follow in Dump para seguirlo abajo en la ventana del Dump



En la ventana del Dump Control + E para editarlo



Atención
Tenemos que sustituir carácter por carácter contando los espacios (20) como un carácter más
Fijaros que después de listillo en la parte ascii parece que no hay nada, pero si miráis en la parte hexa esta lleno de “barra espaciadora” (20)
Hasta completar el numero de caracteres de la cadena original.



Sombreamos todo en el Dump y a guardar



Ejecutamos el crackme



Se acabo

Estos cambios se pueden hacer con Hackman, Ultraedit o cualquier editor hexadecimal, probadlo vosotros que yo ya no doy hoy para mas
Os dejo estas imágenes para que os orientéis





Como dije en los primeros capítulos Olly es capaz de resolvernos casi todo
Después de tanto rollo no me quedan ganas de dar consejos

Un saludo

Por cierto existe un programa que es un editor de recursos para Visual Basic que se llama VBReFormer
Jejeje

Capitulo siguiente

                                                                                                 


Febrero 2004

Pagina oficial del curso

 

Gracias a ...