IntroduccionEn 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++
HerramientasPara 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
LoginAVISO AUN NO ABRAIS EL ARCIVO PATCH.CAhora 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 DatosHay 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
![](http://www.level-23.com/foro/images/statusicon/wol_error.gif)
This image has been resized. Click this bar to view the full image. The original image is sized 800x600.
![](http://img178.imageshack.us/img178/3883/p1bh6.jpg)
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