[Release] Anti leak

Moderator: Mod

[Release] Anti leak

Postby warmup » Mon Mar 23, 2009 9:16 pm

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 :)
Last edited by warmup on Mon Mar 23, 2009 11:13 pm, edited 1 time in total.
warmup
Projets
 
Posts: 81
Joined: Sun Dec 30, 2007 11:29 am

Postby Manu404 » Mon Mar 23, 2009 9:46 pm

Je test ça demain et je vous dis quoi ^^

Manu404
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby Itachi018 » Mon Mar 23, 2009 9:48 pm

[quote:0bb8bf849f]Exemple : Votre programme est payant et vous voulez que uniquement les membres qui l'achete puissent l'acheter.[i:0bb8bf849f] (l'utilisé ? ^^)[/i:0bb8bf849f]
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 Smile[/quote:0bb8bf849f]

Lol tu te trompe XD Ici on te dira plutôt que c'est un comble de poster le prog pour un Anti Leak ce qui serait mieux c'est que tu post un "Anti Anti Leak" Tu voit ce que je veux dire ? ^^ On est plutôt freeware que shareware, ^^.... plutôt Linux que Windaube ?

Mais ça part d'une bonne intention quand même ^^ et je te remercie de l'avoir poster niveau code ça peut en aider certain :P
User avatar
Itachi018
Projets
 
Posts: 225
Joined: Fri Feb 08, 2008 7:05 pm

Postby Manu404 » Mon Mar 23, 2009 9:50 pm

L'interet est autre aussi. si on comprend comment fonctionne un anti-leak et que on sait en coder un, on sait également le détourner et trouver les failles :wink:
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby Itachi018 » Mon Mar 23, 2009 9:54 pm

Exact ^^
User avatar
Itachi018
Projets
 
Posts: 225
Joined: Fri Feb 08, 2008 7:05 pm

Postby TorTukiTu » Mon Mar 23, 2009 10:18 pm

Merci pour cette source, ça fesait un bon moment que rien d'intéressant n'avait été posté dans cette section.
User avatar
TorTukiTu
Site Admin
 
Posts: 1960
Joined: Thu Feb 07, 2008 10:24 pm
Location: Devant son pc durant la redaction de ce message

Postby warmup » Mon Mar 23, 2009 11:11 pm

derien derien ^^ mais anti anti leak quesque tu entends dire par là je comprend pas trop :/

Un programme ca ce crack pas avec un autre programme. C'est avec ollydbg :/
warmup
Projets
 
Posts: 81
Joined: Sun Dec 30, 2007 11:29 am

Postby NETTOYEUR25 » Tue Mar 24, 2009 3:28 am

Salut warmup, j'ai du mal à suivre ton raisonnement !

[quote:ff6d8ba411]Un programme ca ce crack pas avec un autre programme. C'est avec ollydbg :/[/quote:ff6d8ba411]

[quote:ff6d8ba411]OllyDbg est un débogueur 32-bits[/quote:ff6d8ba411]

Source = http://fr.wikipedia.org/wiki/OllyDbg
User avatar
NETTOYEUR25
Projets
 
Posts: 1235
Joined: Wed Oct 31, 2007 2:20 am
Location: B

Postby Sliim » Tue Mar 24, 2009 4:18 pm

Débogueur / Désassembleur ^^. En fin de compte ça reste un programme :P.

En tout cas merci pour ta source, cela peut se révéler intéressant à étudier ;)

++
User avatar
Sliim
Site Admin
 
Posts: 1177
Joined: Fri May 16, 2008 12:53 pm

Postby warmup » Tue Mar 24, 2009 5:10 pm

je sais que ollydbg est un programme.

mais lui il voulait que je fasse un programme qui crack les anti leak. hors un programme qui crack des programmes ca existe pas. C'est avec ollydbg et c'est manuel... rien n'est automatique ... Donc je voie pas trop comment c'est possible ^^
warmup
Projets
 
Posts: 81
Joined: Sun Dec 30, 2007 11:29 am

Postby Korigan » Tue Mar 24, 2009 5:38 pm

[quote:fbf2f601fa="Itachi018"]
Lol tu te trompe XD Ici on te dira plutôt que c'est un comble de poster le prog pour un Anti Leak ce qui serait mieux c'est que tu post un "Anti Anti Leak" Tu voit ce que je veux dire ? ^^ On est plutôt freeware que shareware, ^^.... plutôt Linux que Windaube ?
[/quote:fbf2f601fa]

Cela ne signifie pas que l'on souhaite cracker l'anti leak, mais qu'en général nous défendons plutôt l'open source.

Donc ton programme est très interressant à étudier, et merci d'avoir posté les sources plutôt que le binaire protégé par lui même ^^
D'ailleur si quelqu'un est motivé pour développer l'anti-anti-leak de ton code, ce pourrait être amusant, pour toi, et pour lui, et pour nous :)

++Korigan

Ps: Un exemple de code qui craque d'autre code de façon dynamique: Un anti-virus.
Prenons le cas d'un virus polymorphe, c'est à dire dont le code mute à chaque nouvelle génération.
Pour pouvoir être détecté par l'anti-virus, les routines de cryptage doivent être décrypté afin de pouvoir analyser la bonne signature. Cela ne peut être réalisé à la main, et de ce faite, ce genre de programme existe ^^
C'est juste un exemple, mais c'est une preuve de faisabilité. Je veux dire que lorsque tu sais à quel type de techno tu t'attaque, tu peux développer un crack qui te dispense d'un debuggeur.
User avatar
Korigan
Site Admin
 
Posts: 1781
Joined: Tue May 29, 2007 6:57 pm

Postby warmup » Tue Mar 24, 2009 6:12 pm

j'ai toujours pas capté anti anti leak :/
warmup
Projets
 
Posts: 81
Joined: Sun Dec 30, 2007 11:29 am


Return to C/C++

Who is online

Users browsing this forum: No registered users and 3 guests

cron