Autor Topic: Proteger archivos del cliente usando comprobación CRC32  (Visto 282 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline GX_KYO on: March 17, 2018, 01:05:40 PM

  • *
  • Rank: Usuario activo
  • Posts: 68
  • Gracias recibida: 18
Hola, primero que nada este source no es de mi autoría, la creo aecrimch en RZ pero bueno la posteo porque no la veo por aquí y 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:
Code: [Select]
//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:
Code: [Select]
//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:
Code: [Select]
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
Killing me one breath at a time... Cutting you with my pair of lives... So go on and lay me down to rest, You make it painless, painless!
I can't... I can't... I can't...
I can't feel ANY PAIN!

Gracias:


Offline draganus #1 on: March 18, 2018, 11:10:23 AM

  • *
  • Rank: Dedicado
  • Posts: 45
  • Gracias recibida: 6
Creo la dll y todo pero al momento de engacharla a mi main con Stud_PE    me sale el siguiente error


Sabe a que se refiere?

Offline GX_KYO #2 on: March 18, 2018, 11:44:33 AM

  • *
  • Rank: Usuario activo
  • Posts: 68
  • Gracias recibida: 18
La verdad nunca he usado Stud_PE, prueba enganchar la dll manualmente usando olly, o también puedes probar con el hookeador (LibHook) o DLib Attacher.
Killing me one breath at a time... Cutting you with my pair of lives... So go on and lay me down to rest, You make it painless, painless!
I can't... I can't... I can't...
I can't feel ANY PAIN!

Offline ZabiinoOo #3 on: March 18, 2018, 12:19:15 PM

  • Administrador
  • *
  • Rank: Puto amo
  • Posts: 3781
  • Gracias recibida: 36344
@draganus porque no has agregado la funcion amigo, da click en "function select" algo asi



Prohibido pedir soporte via MP
Leer las reglas de cada seccion

Offline GX_KYO #4 on: March 18, 2018, 12:26:17 PM

  • *
  • Rank: Usuario activo
  • Posts: 68
  • Gracias recibida: 18
@draganus porque no has agregado la funcion amigo, da click en "function select" algo asi

Si es por que falta agregar el llamado a la función que usa la dll.... pues esta dll no tiene ninguna función.
Killing me one breath at a time... Cutting you with my pair of lives... So go on and lay me down to rest, You make it painless, painless!
I can't... I can't... I can't...
I can't feel ANY PAIN!

Offline draganus #5 on: March 18, 2018, 12:29:10 PM

  • *
  • Rank: Dedicado
  • Posts: 45
  • Gracias recibida: 6
Creo la dll y todo pero al momento de engacharla a mi main con Stud_PE    me sale el siguiente error


Sabe a que se refiere?

Bien ya se porque es el problema espero lo agregues al principal, sucede que Stu_PE necesita llamar al nombre de la función para poder agregarla al main y el código que pusiste ahí es un poco antiguo cuando solo trabajábamos con olly en fin  se debe agregar lo siguiente en la función para poder exportar el nombre y no tener ningún problema con algún hokeador

Nota: Hay otras formas de exportar la funciones pueden averiguar, yo recién aprendo VB lo mio es android y etc
Code: [Select]
void __declspec(dllexport)  checkCrc32()

Osea quedara asi:
Code: [Select]
void __declspec(dllexport) 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);
« Ultima edicion: March 18, 2018, 12:39:30 PM by draganus »

Offline GX_KYO #6 on: March 18, 2018, 12:38:11 PM

  • *
  • Rank: Usuario activo
  • Posts: 68
  • Gracias recibida: 18
Eso solo es necesario si se usa Stud_PE, si se hace el hook manualmente o usando alguno de los programas que te mencione antes, no hay problema, no todas las dlls cuentan con una función exportada (ejem: glow.dll, o los antihack de pinkof :V).
Killing me one breath at a time... Cutting you with my pair of lives... So go on and lay me down to rest, You make it painless, painless!
I can't... I can't... I can't...
I can't feel ANY PAIN!

Offline draganus #7 on: March 18, 2018, 12:42:30 PM

  • *
  • Rank: Dedicado
  • Posts: 45
  • Gracias recibida: 6
Eso solo es necesario si se usa Stud_PE, si se hace el hook manualmente o usando alguno de los programas que te mencione antes, no hay problema, no todas las dlls cuentan con una función exportada (ejem: glow.dll, o los antihack de pinkof :V).
Lo mismo que dije arriba, debemos ayudar a los nuevos casi todos los nuevos tutos están con Stud_PE yo mismo tuve problemas hay muchas guías que ya están desactualizadas, gracias de nuevo bro me sirvió mucho tu guía.

 

Related Topics

  Subject / Started by Replies Last post
4 Replies
266 Views
Last post August 01, 2017, 03:33:21 PM
by ivaancruzz
1 Replies
131 Views
Last post August 09, 2017, 01:28:30 PM
by EmmaDCG
4 Replies
199 Views
Last post September 11, 2017, 06:17:18 PM
by Natzugen
3 Replies
116 Views
Last post January 16, 2018, 12:36:30 AM
by Pumperman
2 Replies
102 Views
Last post April 03, 2018, 01:35:08 PM
by xmemox