Hola, un usuario pidió una guía.
Bueno, esto es algo simple, una DLL en la cual podemos colocar el código CRC de cualquier archivo en nuestro cliente que queramos proteger de cambios. Ahora antes de continuar deben entender de que es necesario usar molebox o enigma, o algún otro programa para empaquetar el main y esta dll al final y así evitar que sea borrada o reemplazada.
Bien, dentro del source buscan el archivo checkcrc.h y dentro veran algo como esto:
//CheckSum Files
const char* PlayerF = "Data/Player/player.bmd";
const char* ItemF_eng = "Data/Local/Eng/item_eng.bmd";
const char* ItemF_por = "Data/Local/Por/item_por.bmd";
const char* ItemF_spa = "Data/Local/Spn/item_spn.bmd";
//const char* TextF = "Data/Local/Text.bmd";
const char* Antihack = "Antihack.dll";
Entre esas lineas deberán agregar los archivos a proteger incluyendo las rutas completas, si en caso el archivo esta fuera de Data y esta junto al main (ejemplo algun antihack.dll) solo basta con agregar el nombre de dicha dll como ven en la ultima linea que agregue.
Ahora los códigos CRC:
//Checksum Code
unsigned long PlayerFCRC = 0x7D56FCEB;
unsigned long ItemFCRC_eng = 0xF9485939;
unsigned long ItemFCRC_por = 0xF9485939;
unsigned long ItemFCRC_spa = 0xF9485939;
//unsigned long TextFCRC = 0x370F4288;
unsigned long AntihackCRC = 0x73C789F1;
Aquí simplemente agregaran los codigos generados con el CheckCRC.exe:
Simplemente le dan click a "Select File" y abren el archivo del cual quieran obtener su CRC, y este sera calculado en ese pequeño recuadro, luego simplemente lo copian dentro del source, no se olviden de agregar un "0x" al inicio de dicho código.
Por ultimo, los mensajes de error:
void checkCrc32()
{
CCRC32 MyCRC32;
MyCRC32.Initialize();
unsigned long ulCRCP = MyCRC32.FileCRC(PlayerF);
unsigned long ulCRC_eng = MyCRC32.FileCRC(ItemF_eng);
unsigned long ulCRC_por = MyCRC32.FileCRC(ItemF_por);
unsigned long ulCRC_spa = MyCRC32.FileCRC(ItemF_spa);
unsigned long ulCRCAH = MyCRC32.FileCRC(Antihack);
if(ulCRCP != PlayerFCRC)
{
MessageBoxA(0, "Player file modified!", "Error", MB_OK | MB_ICONSTOP);
ExitProcess(1);
}
if(ulCRC_eng != ItemFCRC_eng)
{
MessageBoxA(0, "Item file modified!", "Error", MB_OK | MB_ICONSTOP);
ExitProcess(1);
}
if(ulCRC_por != ItemFCRC_por)
{
MessageBoxA(0, "Item file modified!", "Error", MB_OK | MB_ICONSTOP);
ExitProcess(1);
}
if(ulCRC_spa != ItemFCRC_spa)
{
MessageBoxA(0, "Item file modified!", "Error", MB_OK | MB_ICONSTOP);
ExitProcess(1);
}
if(ulCRCAH != AntihackCRC)
{
MessageBoxA(0, "AntiHack Not Found!", "Error", MB_OK | MB_ICONSTOP);
ExitProcess(1);
}
}
En esta ultima parte solo basta con agregar nuevas lineas, y claro pueden colocar el mensaje de error que prefieran.
Creo que esta demás decirlo, pero si no desean proteger ninguno de esos bmds en la lista, simplemente desactiven o borren dichas lineas.
Después simplemente deben compilar la DLL y engancharla al main, luego empaquetar ambos y listo.
Esta comprobación de CRC sirve para evitar el cambio de archivos que no podamos empaquetar con molebox, como por ejemplo algunos antihacks.
Como dije al inicio esta guía no sirve si tu main no puede ser empaquetado con molebox u otro programa similar, puesto que esta dll podrida ser borrada o reemplazada sin problemas.
Source y CheckCRC.exe:
Creditos:
aecrimch
GX_KYO