Artículo · Ingeniería Inversa

Saltando validaciones del registro .dat y .reg

Rafael PeruCrackersRafael PeruCrackers 4 min de lectura

Objetivos

Algunos programas  requieren un archivo .dat o .reg, para poder validar el registro completo y de lo cual algunas veces podemos saltar dicha validación o tratar de crear nuestro propio archivo de registro

 

    * Due-cm2, utilizando archivos de registro. 

    * Aprender algunas APIS. 

    * Obtener experiencia con HxD Editor Hexadecimal. 

 

Herramientas

    * Ollydbg 

    * Crackmes

    * ProtectionID

    * HxD Editor Hexadecimal

 

Al Ataque

Lo primero que debemos realizar es un Backup del crackmes, por si modificamos una línea de código que no es lo correcto generando que el software se corrompa, luego como siempre vamos a obtener la información del software, veamos la imagen, en mi caso use tres programas, ya que en el Protection iD, me mostraba Delphi, en RDG Packer Detector y Exeinfo nos muestra MASM/TASM y finalmente.

 

Crackmes

Luego de obtener la información del crackmes, vamos a ejecutar, sin embargo vemos que no nos ofrece una ventana donde escribir nuestra clave o serial, pero vemos que nos indica que necesitamos un archivo keyfile, para que se registre, en estos casos la clave se encuentra en el keyfile, por lo tanto vamos a desensamblar.

 
 

Imagen del crackme

 

Método De Parche: 

Desensamblamos el crackmes, usando nuestra herramienta favorita OLLYDBG y veremos que se detiene en el Entry Point, es la primera línea en ejecutar y dónde se detendrá, como dato curioso en la ventana de Registro se observa EIP (Extended Instruction Pointer), donde nos mostrará la línea de comando que se ejecutara, en este ejemplo se observa que EIP tendrá el valor 00401000.

 
 
 
 
Realizaremos un Zoom para ver dos funciones o CALL`s, muy llamativo, donde nos podrá ayudar, el primero de cuadro rojo, nos muestra que validara o abrirá un archivo, si no lo encuentra no realizará un salto y nos mostrará la siguiente función de cuadro amarillo, donde nos mostrará el BAD BOY, solicitando el Keyfile, traceamos con la tecla “F8”, para llegar a la línea de código JNZ Short due-cm2.0040109A(ver la flecha amarilla).
 
 
 
Cuando lleguemos a la dirección 0040107B,  por defecto no realizará el salto debido a que no encuentra el archivo, por lo tanto nos mostrara el BAD BOY, lo que debemos realizar un salto, cambiando el FLAG Z (FLAG ZERO), de lo cual lo activamos como muestra la flecha Amarilla. Recordar que JNZ se activa cuando Z es Cero, si desea modifiquemos la línea y le decimos que salte siempre al llegar a la dirección 0040107B ósea por JMP.
 
 
Al seguir traceando con “F8”, llegaremos a la dirección 004010B0, de lo cual no realizará el salto y seguirá con el siguiente código que es JMP de la dirección 004010B2, si miramos las flechas rojas, vemos que ese salto JMP, nos mostrará el BAD BOY,  lo que debemos hacer es activar el salto de JNZ para que evite el BAD BOY, recuerda que debemos hacer doble clic en el FLAG Z, si Z=0 entonces realizar el salto, si deseamos modifiquemos la línea de código por JMP.
 
 
Se observa en la dirección 004010BF, se realiza un salto hacia el BAD BOY, de lo cual no deseamos, para evitar este problema, debemos activar uno de los FLAGS “S” y “O”, para desactivar el salto.
 
Recuerda el JL se utiliza cuando es menor que el segundo registró o valor por ejemplo:
 
CMP EAX, EBX: Si EAX es menor que EBX, se produce el salto.
 
JL 00401022 -> Se realizar el salto a dicha dirección.
 
 
 
Nuevamente nos encontramos con un salto JL en la dirección 004010D6 que nos lleva al BAD BOY, y la idea es seguir traceando, para llegar al GOOD BOY, ya sabemos que hacer, así que no me tomaré la explicación nuevamente.
 
 
 
En la dirección 004010F5, se observa un salto JE de lo cual depende del Flag Z, para realizar el salto, debe activarse, es decir que Z=1  y así evitar el BAD BOY.
 
 
 

Llegamos a la dirección 00401155, si observamos va a realizar un salto al BAD BOY, de lo cual nuevamente no deseamos, así son los parches, así que nos debemos acostumbrar, desactivamos ese salto, haciendo doble clic en el FLAG Z, es decir que Z = 0 y seguimos traceando.

 
 

Finalmente al no realizar el salto presionamos “F9”, para ejecutar el crackmes al 100%, y nos mostrará

 
 

En este paso vamos a buscar los string, para lo que no se acuerdan se deja una imagen de ayuda

 
 
 

¿Quieres aprender estas técnicas en profundidad?

Continúa tu ruta con Pentesting .

Rafael PeruCrackers

Escrito por

Rafael PeruCrackers

Estudiante de la ingenieria Inversa usando las herramientas de Ollydbg y el actual IDA PRO, actualmente me encuentro investigando sobre Creacion de Exploit, con animo de ayudar a las personas que les interesa el mundo del reversing, :)