[ - Intro - Tutoriaux - L'outil expliqué - Liens - Notes de fin - ]
 
[ - Explications : Le monde du cracking ~ Les protections ~ Les outils indispensables - ]

Voici quelques types de protections très courantes que l'on peut rencontrer. On les retrouve très fréquemment cumulées. ( nag-screen + time-trial, etc )

L'enregistrement fait référence au fait d'avoir payé le shareware.

J'ai divisé la chose en 2 parties 
 
Les protections standards
- le nag-screen
- le time-trial
- les fonctions désactivées / la démo / la démo réactivable
- l'enregistrement par serial, unlock code, regkey ou keyfile
- le CD check
Les protections renforcées
- le checksum
- le CRC
- les routines d'anti-debugging
- la cryptologie
- les anti-copies CD
- les packers ( compresseurs ), crypters et protecteurs
- les dongles
 

Les protections standards

Le Nag-screen

Le nag-screen est une jolie boite windows qui vous rappelle que vous utilisez un logiciel qui n'a pas
été payé. Son apparition se fait généralement au lancement du programme et parfois en cours de son utilisation.
Logiciels : Winzip, premières version d'Acdsee, etc.
Solution(s) : On le fait disparaitre  en émulant le mode enregistré, en fesant sauter le programme par dessus, etc.

Le time-trial

L'utilisation du logiciel vous est assuré pendant une durée limitée (généralement 30 jours).
Après cela, le logiciel ne peut plus être lancé ou seulement partiellement.
Logiciels : Xara3D, Winrar, PaintShopPro, etc
Solution(s) : On peut casser ce système en "gelant" le temps, en déroutant les conditions en cas de fin de durée ou en émulant le mode enregistré,etc.

Les fonctions désactivées / la démo / la démo réactivable

Les fonctions désactivées sont des utilisations que le logiciel vous refuse si vous n'êtes pas enregistré. Dès que l'enregistrement a été effectué, vous recevez un code ou autre, vous permettant de faire fonctionner votre logiciel de façon compléte.
Le programme est donc COMPLET mais bridé.
Logiciels : Winrar, GifMovieGear,etc.
Solution(s) : On émule le mode enregistré, etc.

La démo est par principe basé sur le même principe sauf qu'à la différence, les fonctions désactivées ne peuvent pas être relancées. Vous devez recevoir une version complète du logiciel pour pouvoir les utiliser.
Lors de la compilation du logiciel, ces fonctions sont ABSENTES du code !
Logiciels : Dance/Rave/... Ejay, Adobe Photoshop, LordPE ( ancienne version. Depuis le 26/03/2002, en release complète ! ), etc
Solution(s) : Si la fonctionnalitée est facilement modélisable, on la reconstruit ( niveau + ou - élevé en cracking/reversing ) sinon rien ! 

Bien que le terme de démo soit souvent utilisé à tort pour décrire un shareware qui peut, malgrè tout, être activé avec toutes ses fonctionnalitées ; par principe, la démo est INCRACKABLE !
Ce système de protection indéplombable se retrouve assez souvent mais présente deux inconvénients majeurs pour les concepteurs / éditeurs des logiciels.
En effet, il faut prévoir deux versions du logiciel : une complète et l'autre tronquée ce qui représente un coût financier et horaire assez important selon la complexité et la taille du logiciel.

La démo complétable est l'envoi d'un ou plusieurs fichiers (DLL, etc) par le concepteur / éditeur après paiement, qui permettront au programme de fonctionner complètement. 
Logiciels : J'ai oublié son nom  : /
Solution(s) : Distribution des fichiers manquants ( donc non crackage ) ou Reverse Engeenering si possible...sinon rien.
 

L'enregistrement par serial, unlock code, regkey ou keyfile.

Certainement la protection la plus utilisée pour débloquer un shareware. L'intérêt financier est en effet très intéressant : on maile un code (serial, unlock code) ou un petit fichier (regkey, keyfile) à l'acheteur au lieu de plusieurs kilos, voir mégas d'un programme.

Le serial est un code débloquant, calculé à partir du nom de l'utilisateur et éventuellement d'autres informations ( société, e-mail ), voir pour les plus vicieux sur les caractéristiques de votre PC !
Logiciels : Beaucoup ! Winzip, CloneCD, etc.
Solution(s) : Trouver un serial, réaliser un keygen si possible, émuler le mode enregistré, etc.

L'unlock code est juste un code à insérer. Il peut être universel ( = toujours le même pour n'importe qui ) ou basé sur des informations que le logiciel renvoit : code qu'il faut fournir au concepteur pour pouvoir calculer l'unlock code.
Logiciels : Xara3D, etc
Solutions : Trouver ce code, réaliser un keygen s'il n'est pas universel, émulé le mode enregistré,etc. 

Le keyfile est un fichier d'enregistrement que le logiciel doit trouver dans un certain endroit, généralement son répertoire, pour pouvoir être enregistré.
Logiciels : Backup Assistant, etc.
Solutions : Créer un keyfile ou un keymaker, émulé le mode enregistré, etc.

Le regkey est un fichier qui va, après avoir été cliqué, placer des informations dans une ( ou des ) clé( s ) de la base de registre. Ces informations seront contrôlées par le logiciel pour pouvoir être en mode enregisté.
Logiciels : Aspack, etc
Solutions : Créer une regkey ou un keymaker, émulé le mode enregistré,etc
 

Le CD Check

Essentiellement pour les jeux sur CD, le CD Check est le simple contrôle de la présence du CD de jeu dans le lecteur. Si celui-ci n'est pas présent ou ne présente pas les caractéristiques d'un CD original, le jeu ne se lance pas.
Logiciels : des jeux comme Half-Life, Age of empire, etc.
Solutions : Renverser les conditions du lecteur vers le disque,etc.

 
Les protections renforcées

Les protections renforcées font appels généralement à une aide extérieure ( logiciels de protections, dongles, etc) pour pouvoir assurer l'intégrité du logiciel.
Le but est de protéger avant tout le logiciel d'un déplombage et éventuellement de pouvoir accompagner l'utilisateur pour l'enregistrement du logiciel. Un des plus connu dans ce cas est VBox qui propose une interface d'achat du logiciel ( exemple sur les produits Macromédia : Flash... ) et de tenter de protéger le logiciel contre toute tentative d'attaque. : )
 

Le checksum

Le checksum est une technique basé sur la protection anti-virale.
En effet, les virus infectant les fichiers, peuvent se greffer sur les executables, etc en injectant leur code en fin de fichier. Leurs techniques de camouflage et de furtivité leur permettent de sauvegarder certains paramétres ( taille, date de modification, de création du fichier infectée ), les laissant normaux aux yeux des néophytes. Toutefois, on peut tester l'intégrité d'un fichier en comparant la somme de tous ses bytes ( checksum ) avec la somme de tous ses bytes avant l'infection ( dernièr scannage par l'AntiVirus ).
Il est évident qu'après infection, il y aura une différence très supérieur de plusieurs centaines d'octets. De même pour un programme cracké !

Prenons un exemple bidon : j'ai un 75## ( = jnz ou jne ) qui ne se fait jamais et moi, je veux !
Donc solution simpliste, je patche en 74## ( = jz ou je ), le programme saute bien.
 
 

Code hexa original
Code hexa patché
727475616C460000 727474616C460000
S = 72+74+75+61+
6C+46+00+00
S = 26E
S = 72+74+74+61+
6C+46+00+00
S = 26D

Le checksum du programme a changé !

Habituellement, le logiciel vous annonce la couleur avec un "le programme a été modifié" ou "virus détecté, merci de réinstaller le programme" ou ne se lance pas.

Logiciels : Comspeed ( tut de +Frog's Print ), une vieille version de winzip, etc.
Solutions : Patché la condition sur le test du checksum, faire un total de bytes identique.
 

Le CRC ( Code de Redondance Cyclique )

Le contrôle du CRC fonctionne sur le même principe que le checksum. La méthode de calcul est différente mais la différence entre 2 CRC indique que le fichier a été modifié.

Logiciels : Pas rencontré pour l'instant.
Solutions : Patcher la condition sur le test CRC, fixer la valeur du CRC avec celle du prog patché.
 

Les routine d'anti-débuggage

Cette méthode de protection doit être couplé à un compresseur et/ou crypter d'éxécutable pour être efficace.
Le principe est de détecter et/ou de faire planter le débugger dont le cracker se sert, afin qu'il ne puisse pas arriver jusqu'au code d'un programme.
Si le programme est packé et/ou crypté, on se retrouve aveugle car le désassemblage ne peut être fait et le débuggage "impossible".
Nombreuses routines existent : Meltice, int 68h, exception...

Logiciels : De plus en plus ! Mais surtout du fait de l'application de logiciels protecteurs comme ASProtect, Armadillo..., qui peuvent faire de l'anti-debugging.
Solutions : Patcher soit-même les strings de son Softice pour éviter certaines détections ( SICE, NTSICE...), utiliser Frogsice qui cachera notre debugger et détournera les tentatives de détection, tracer avec Softice, etc.



La cryptologie

L'ajout de cryptographie ( RSA, MD5... ) dans des logiciels présente l'intérêt de rendre la protection très résistante face à une attaque de crackers, même expérimentés...
Logiciels : le plus connu pour ça, CLONE CD ( ! ) ainsi que Winrar, etc. ( source : Aciburn )
Solutions : Manger du poisson et acheter du café ! 
 

Les anti-copie CD

Relativement connu des graveurs fous de CD, ces techniques ( illegal TOC, dummy files... ) et ces logiciels de protection ( Safedisc, Laserlok, Securom, CD-Cops... ) sont plus ou moins anéantis par des logiciels comme CloneCD. 
Logiciels : principalement des jeux, Opposing Force, Red Alert 2, etc.
Solutions : CloneCD pour la copie et étude pour rippage,etc.
 

Les packers, crypters et protecteurs

Ces trois protections ont le point commun de rendre le désassemblage impossible à froid.
En effet, notre executable ( exe, DLL, etc ) a été compressé ( packer ), crypté ( crypter ), voir les 2, puis on y a détourné son point d'entrée ( là où commence notre programme ), afin qu'au lancement une routine puisse décompresser et/ou décrypter le corps de notre programme.
Une fois, la chose faite, on se rebranche sur le point d'entrée et le programme se lance. 

L'étude du programme doit donc se faire théoriquement en Live ( debbugger ) afin de pouvoir voir quelque chose du code.
Le protecteur inclut en plus des techniques d'anti-debugging, de tests du PE Header afin de rendre plus dur le travail du cracker.
Packer : UPX, Aspack, Petite, PECompact,etc.
Crypter et protecteurs : PE-Protect, Asprotect, PEShield, Y0da's Crypter, tElock, Vbox (se basant sur le même principe ), etc. 
Logiciels : CloneCD, Flash, Dreamweaver,etc.
Solutions : manual unpacking ou generic unpacker,  c'est-à-dire : faire un Dump sur le disque de notre exécutable quand celui-ci a fini de se décompresser. Le code est alors potentiellement désassemblable. Reste le problème des IAT plus ou moins en état, car le programme dumpé peut ne pas fonctionner.
 

Les Dongles

Certainement la protection la plus chère et la moins souple !
Le dongle est une protection matériel ( sorte de prise ) que l'on branche sur le port imprimante ou USB.
Le logiciel envoit un appel vers le port où le dongle est fixé et celui-ci renvoit une réponse que le logiciel interprétera.
Il est très rare de tomber sur ce type de protection, car les logiciels l'utilisant ne sont pas distribués comme shareware et on comprend pourquoi !
A quoi, cela servirait-il d'acheter l'utilisation d'une protection de plusieurs centaines d' euros, si l'on met en distribution en shareware le logiciel protégé ? Cela reviendrait à mettre un morceau de viande dans une cage aux lions ! ( oui, l'image est un peu exagérée. ; ) Mais le challenge de dédongler un programme est assez intéressante en terme de connaissances.
Donc, vous l'aurez compris, rencontrer une protection par dongle sera rare ; à moins que vous n'en croisiez une sur  votre école / fac / travail...
 

Logiciels : Des "lourds" ! Seuls ceux très chers peuvent se permettrent ce genre de protection lourde et coûteuse : WinDev, AutoCad, 3D StudioMax, etc.
Solutions : Emulation du dongle, patch des conditions..., cela reste très variable selon le logiciel et le type de dongle.
 

Voilà j'espère avoir fait un peu le tour des protections majeures que l'on peut rencontrer dans le monde des sharewares et des logiciels professionnels.
 

Lise Grim 2002 / WiA