Bienvenido a Tecnohackers

Tecnohackers » Hacking y Seguridad » Hacking » Ingenieria Inversa
 » 

Parcheando un Crackme



Autor Tema: Parcheando un Crackme  (Leído 909 veces)

Desconectado CronuX

  • Veterano
  • ***
  • Mensajes: 302
  • OllyDBG
Parcheando un Crackme
« en: Agosto 22, 2009, 05:50:32 am »
Introduccion
En esta guia vamos a empezar con la mejor parte del cracking, la programacion de cracks y el parcheo de programas.
El crack lo vamos a hacer en C++


Herramientas
Para este tutorial necesitas:
El crackme
El OllyDbg
Un compilador de C/C++
El OllyDbg ya lo deberian tener de los otros tutoriales, el crackme y el parche estan You are not allowed to view links. Register or Login
AVISO AUN NO ABRAIS EL ARCIVO PATCH.C
Ahora vamos a abrir el crackme con el OllyDbg y vamos a buscar el mensaje de error o bien con el w32dasm o bien maualmente. Una vez que lo encontremos en el offset 00401275 podemos ver que hay un jump desde el offset 0041359 hasta este offset, así que vamos a ir hasta ese offset. Una vez en ese offset vemos que es el JNZ que va a decidir si nos manda al offset del error o no, asi que solo hay que cambiar eso para crackear el programa.
Ahora vamos a empezar a recopilar datos para hacer el patch.
Lo que vamos a hacer es hacer un programa que abra el crackme y cambie el valor de ese offset.
Recopilando Datos
Hay que averiguar unas cuantas cosas para poder parchear el programa:
la direccion del offset que vas a editar
los bytes que ocupa el offset
los valores que vas a escribir en su lugar
Empezemos:
Vamos a abrir two.exe con w32dasm para recopilar información. acto seguido vamos a ir hasta el JNE que está en el offset 00401259, el que hay que cambiar. si lo seleccionamos veremos los dos valores que tenemos que seleccionar
This image has been resized. Click this bar to view the full image. The original image is sized 800x600.
Despues vamos a coger el valor que apuntamos (751A) y lo vamos a pasar de hexadecimal a decimal, por lo que pasará a ser 1625.
Despues vemos que el offset que queremos cambiar ocupa dos bytes ya que tiene el offset 00401259 y el 0040125A (el siguiente es 0040125B) por lo que aparte del valor 1625 tambien vamos a tener que reemplazar el siguiente valor 1626. Ambos valores los vamos a reemplazar por NOP, que significa No OPeration, esta instruccion ocupa 1 byte por eso tenemos que modificar dos direcciones (1625 y 1626) por el valor de nop (que en numeros es 144, por lo que escribiremos 144, 144). Una vez recopilados todos los datos vamos a comenzar a esscribir el patch.c:
    Código:
    #include<stdio.h>

int main(){
int i;
FILE *f1;

int offset[2] = {1625, 1626}; // 2 por 2 locations
char data[] = {144, 144}; // escribimos 144 y 144 (NOP NOP)

if((f1 = fopen("two.exe", "r+") ) != NULL){  // abrir two.exe en r+ (read mode)
   for(i =0; i < 2; i++){  // Bucle para encontrar los offsets
   fseek(f1, offset, SEEK_SET);  // en file f1 (two.exe) busca offset
   fprinf(f1, "%c" , data);  // cambia lo de file f1 por data (144)
   }
   printf("Parcheado!"); //si sale bien muestra esto   

}
else
{
printf("No se encuentra el archivo"); // si hay error muestra este mensaje
}
return 0;
}
Para parchear basta con poner el crackme (two.exe) en la misma carpeta del patch, y con ejecutalo ya se parchea el programa

Gr33tz: a todo aquel que se haya tomado el tiempo para leerse este tuto
« Última modificación: Abril 29, 2010, 04:19:17 pm por alma_triste »



Tags:
Tags:

 


SMF 2.0.19 | SMF © 2016, Simple Machines
Paginas Afiliadas
Twitter - FaceBook - Daraxblog
Designed by Smf Personal