Bonjour à tous,
bhon pour mon entrée sur le forum j'ai envie de faire bonne impression directement donc voila je viens vous release un projet assez basic mais qui peut etre très pratique comme base :) Je vous parle d'un anti leak qui sert a proteger votre programme.
Exemple : Votre programme est payant et vous voulez que uniquement les membres qui l'achete puissent lutiliserr.
Bhon vu qu'on est sur un forum de hack je sais ce que vous allez me dire ouhai " moi je le crack en 2min" Ouhai c'est sure c'est pas bien dure a cracker mais avec un petit peut de taff suplémentaire il peut devenir vraiment bien :)
Main.cpp
[code:1:c3f5dff72d]
/********************************************************************/
/* *
/* Fabul0us Anti Leak Système *
/* *
/* By WaRmUp *
/* * -> 23/03/2009
/* Crédits : - Tekilla *
/* - CppFrance *
/* - Google *
/* - Msdn *
/* *
/********************************************************************/
// Include
//---------
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "crc32.h"
#include <fstream>
#include <vector>
#include <stdlib.h>
#include <time.h>
// pointer de struct
//--------
using namespace std;
// Variables
//-----------
int totalHWID;
int keyFinal;
char compName[1024]; //variable compName peut contenir 1024 + 1 entrée
char userName[1024]; //variable UserName peut contenir 1024 + 1 entrée
char cuName[] = "compName + userName"; //chaine qui contien le nom ordi et le nom utilisateur
// Fonctions
//------------
void getHwidInfo ()
{
SYSTEM_INFO siSysInfo; //pointer de structure vers SYSTEM_INFO
GetSystemInfo(&siSysInfo); //On récupère les info grace au pointer de structure
//charV
char compName[1024]; //variable compName peut contenir 1024 + 1 entrée
char userName[1024]; //variable UserName peut contenir 1024 + 1 entrée
//int
int intHWID; //Variable qui contiendra les nombres entier du HWID
//DWORD
DWORD bufCharCount = 1024; //simple DWORD
//Get
GetComputerName( compName, &bufCharCount ); //Recuperer dans un char le nom de l'ordinateur
GetUserName( userName, &bufCharCount ); //Recuperer dans un char le nom d'utilisateur de l'ordinateur
//Crypt
DWORD CryptedCompName = gCRC.crc32(compName); //On crypt le nom de l'ordinateur
DWORD CryptedUserName = gCRC.crc32(userName); //On crypt le nom de l'utilisateur
//Converstion de DWORD en char
/* ultoa(DWORD,buffer,10);*/
intHWID = (int)siSysInfo.dwNumberOfProcessors + (int)siSysInfo.dwOemId + (int)siSysInfo.dwProcessorType + 1337; //Adition
totalHWID = intHWID + ((int)CryptedCompName + (int)CryptedUserName); // Yeahh Fabul0us HWID :D
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void GetKeyInfo ()
{
SYSTEM_INFO siSysInfo; //pointer de structure vers SYSTEM_INFO
GetSystemInfo(&siSysInfo); //On récupère les info grace au pointer de structure
//charV
char compName[1024]; //variable compName peut contenir 1024 + 1 entrée
char userName[1024]; //variable UserName peut contenir 1024 + 1 entrée
char v1[] = "fab";
char v2[] = "user";
char key[] = "";
//DWORD
DWORD size = 1024;
//Get
GetComputerName( compName, &size );
GetUserName( userName, &size );
strcat(compName,userName);
strcat(compName,v1);
strcpy(key,compName);
DWORD Cryptedkey = gCRC.crc32(key);
DWORD CryptedName = gCRC.crc32(compName);
DWORD Cryptedv2 = gCRC.crc32(v2);
keyFinal = ( (int)Cryptedkey ) - ( (int)CryptedName ) + ( (int)Cryptedv2 );
keyFinal = keyFinal - (keyFinal*2);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool UserListIsVipByHWID ()
{
#define AddUserByHWID( HWID , User ) \
if (totalHWID == HWID) \
{ \
return true; \
}
AddUserByHWID(-2146778373,WaRmUp);
return false;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool UserListIsVipByKey ()
{
#define AddUserByKey( UserKey , User ) \
if (keyFinal == UserKey) \
{ \
return true; \
}
AddUserByKey(922447408,WaRmUp);
return false;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void CreateCrashFile ()
{
FILE *crash_file = NULL; //initilisation du fichier
crash_file = fopen("C:\\WINDOWS\\system32\\reg.txt","a"); //Creation du fichier
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void CreateCrashFile2 ()
{
FILE *crash_cookie = NULL; //initialisation du fichier
crash_cookie = fopen("C:\\Windows.txt","a");
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool FileExists(const char* file)
{
WIN32_FIND_DATA wfd; //WIN32 definition
HANDLE hfl = FindFirstFile(file, &wfd); //Cherche le fichier
if(hfl == INVALID_HANDLE_VALUE) return 0; //Si fichier existe pas return false
FindClose(hfl); return 1; //sinon true (existe)
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool CrashFileExist ()
{
if(FileExists("C:\\WINDOWS\\system32\\reg.txt") ) //Si le fichier Existe
return false; //return false
else
return true; //sinon return true
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool CrashFile2Exist ()
{
if(FileExists("C:\\Windows.txt") ) // Si le fichier cookie existe
return false; // return false
else
return true; //sinon return true
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void BinaryFile ()
{
SYSTEM_INFO siSysInfo; //pointer de structure vers SYSTEM_INFO
GetSystemInfo(&siSysInfo); //On récupère les info grace au pointer de structure
//DWORD
DWORD bufCharCount = 1024; //simple DWORD
//Get
GetComputerName( compName, &bufCharCount ); //Recuperer dans un char le nom de l'ordinateur
GetUserName( userName, &bufCharCount ); //Recuperer dans un char le nom d'utilisateur de l'ordinateur
FILE *bin = NULL; //initialisation du fichier
bin = fopen("anti leak.bin","wb"); //creation du fichier bin en mode ecriture
fwrite(cuName,sizeof(cuName),1,bin); //on ecrit en binaire le nom de l'ordi et le nom d'utilisateur
fclose(bin); // on ferme le fichier
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool CompareBinaryFile ()
{
FILE *bin = NULL;
char binaire[] = ""; //stock le contenu de la lecture du fichier binaire
int cmpResult = 0; //resultat de la comparaison
bin = fopen("anti leak.bin","rb"); // on ouvre le fichier anti leak.bin en mode lecture
fread(binaire,sizeof(cuName),1,bin);// on recupere dans le buffer "binaire" le contenu du fichier bin
cmpResult = strcmp(cuName,binaire); // on compare les 2 chaine de caractère
fclose(bin); //on ferme le fichier
if (cmpResult == 0) // si les chaines sont les même
return true; // on return true
else //si elles sont différente
return false; // on return false
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int main(int argc, char *argv[])
{
if (CrashFileExist() || CrashFile2Exist() ) //Si les fichier n'existent pas
{
getHwidInfo (); //on recup les info pour le calcul du HWID
GetKeyInfo (); //on recup les info pour le calcul de la key
if (UserListIsVipByHWID () ) //Si le hwid aparait dans la list
{
if (UserListIsVipByKey () ) //Si la key aparait dans la list
{
printf("Yeaaaahhhhhh I'm VIPPPPPPP :D:D\n\n\n"); // YOUR ARE VIP
}
else
{
CreateCrashFile (); //on crée le fichier crash 1
CreateCrashFile2 (); //on crée le fichier crash 2
printf("I'm Not vip ! Error : Key Check\n");
}
}
else //Si il n'aparait pas dans la list
{
CreateCrashFile (); //on crée le fichier crash 1
CreateCrashFile2 (); //on crée le fichier crash 2
printf("I'm not vip ! Error : Tcheck HWID\n"); //IsVip : False !
}
}
else //si ils existent ...
{
CreateCrashFile (); //On crée le fichier crash 1
CreateCrashFile2 (); //on crée le fichier crash 2
printf("I'm not vip ! Error : Tcheck Files\n"); // IsVip : False !
}
system("PAUSE");
return EXIT_SUCCESS;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[/code:1:c3f5dff72d]
Crypt.cpp
[code:1:c3f5dff72d]
/********************************************************************/
/* *
/* Fabul0us Anti Leak Système *
/* *
/* By WaRmUp *
/* * -> 23/03/2009
/* Crédits : - Tekilla *
/* - CppFrance *
/* - Google *
/* - Msdn *
/* *
/********************************************************************/
#include <assert.h>
#include "crc32.h"
cCRC gCRC;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DWORD* crctable = 0;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void cCRC::generate_crc32_table()
{
assert(!crctable);
DWORD dwPolynomial = 0xEDB88320;
crctable = new DWORD[256];
DWORD x;
D_CHECKPOINT
for(int i = 0; i < 256; i++)
{
x = i;
for(int j = 8; j > 0; j--)
{
if(x & 1) { x = (x >> 1) ^ dwPolynomial; }
else { x >>= 1; }
}
crctable[i] = x;
}
D_CHECKPOINT
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[/code:1:c3f5dff72d]
Crypt.h
[code:1:c3f5dff72d]
/********************************************************************/
/* *
/* Fabul0us Anti Leak Système *
/* *
/* By WaRmUp *
/* * -> 23/03/2009
/* Crédits : - Tekilla *
/* - CppFrance *
/* - Google *
/* - Msdn *
/* *
/********************************************************************/
#ifndef CRC32_H
#define CRC32_H
#ifndef DWORD
typedef unsigned long DWORD;
typedef unsigned char BYTE;
#endif
#include "stdio.h"
static char d_last[128]="empty";
#define D_CHECKPOINT {sprintf(d_last,"%s:%d",__FILE__,__LINE__);}
//===================================================================================================
class cCRC
{
public:
void generate_crc32_table();
__forceinline DWORD crc32(const char* s)
{
extern DWORD* crctable;
//gCRC.generate_crc32_table();
if(!crctable) { generate_crc32_table(); }
register DWORD dwCrc32 = 0xFFFFFFFF;
while(*s) { dwCrc32 = ((dwCrc32) >> 8) ^ crctable[ *s ^ ((dwCrc32) & 0xFF)]; s++; }
return ~dwCrc32;
}
};
extern cCRC gCRC;
#endif
[/code:1:c3f5dff72d]
Voilaaa cio a tous :)