Crack in France
par pifoman

 
 

Ce cours est un reflet fidèle du cours intégré au crack de ma création de CloneCD 5.2.5.1 fr.

 

INFOS SUR LE CRACK

 

Nom du prog CloneCD 5.2.5.1
Editeur

http://www.slysoft.com

Téléchargeable

http://membres.lycos.fr/telclonecd/

Date du progSamedi 18 juin 2005
Date du crack Vendredi 8 juillet 2005
Réalisé parPifoman
Url sitehttp://pifoman.free.fr/pif.php
Url redirectionhttp://www.geocities.com/mitonnes/pif.htm

 

COMMENTAIRES SUR LE PROGRAMME

 

     CloneCD est l'outil de copie de CD idéal pour réaliser des copies de sauvegarde de vos CD de musique ou de données, sans se soucier qu'ils soient protégés ou non ! L'interface utilisateur de CloneCD copie la plupart des CD en seulement quelques clics de souris !

    Depuis la dernière version, 5.0 CloneCD peut non seulement copier les CD mais aussi les formats de DVD comme DVD-R, DVD-RW, DVD+R, DVD+RW,DVD+R Dual Layer et DVD-RAM. Les films DVD qui sont protégés peuvent seulement être copiés avec AnyDVD. Les films ne seront pas modifiés mais copiés de l'un à l'autre. CloneCD marche aussi avec d'autres formats comme .iso et .udf et copie les CD/DVD avec le système protection de SafeDisc 3.

 

LIMITATIONS

 

   1 - 21 jours d'utilisation maximum.
   2 - Ecrans de harcèlement (Nag-screen).
   3 - NON ENREGISTRE dans le menu Aide -> Informations
   4 - NON ENREGISTRE dans le menu Outils -> Registre
   5 - Blocage au dela des 21 jours de Graver une image et Copie de CD.

 

LES OUTILS

 

w32dasm 8.9
Pour désassembler le progamme (transformation en langage d'assemblage)
Pour trouver les string data references nécessaires pour élaborer le crack.

WinHex 10.2
Pour éditer l'exécutable et modifier certains octets dans le but de la cracker.
On cherche l'offset impliqué en regardant la barre de statut de w32dasm 8.9.
On utilise ce même offset dans WinHex pour effectuer physiquement la modification.

PEid 0.93
Pour détecter le packer qui a été utilisé pour protéger une application.

 

ASSEMBLEUR

 

Offset
Déplacement depuis le début de la zone de code d'un programme.

EB
  Code hexadécimal correspondant en assembleur à un saut inconditionnel (jmp).
      On saute tout le temps vers l'adresse écrite sous forme hexadécimale qui suit le EB

90
 Code hexadécimal qui se traduit en assembleur par "ne rien faire" (= nop = No OPeration). 

 

LE CRACK

 

        Détail des modifications CloneCD.exe

OctetAdresseOffsetOriginalCrackéEffet
1

0043B6B2

3ACB2

5C14Suppression du time-limit,des nags et enregistrement.

 

ANALYSE  DU  PROGRAMME

 

      CloneCD.exe

 

      Aujourd'hui on s'attaque à un logiciel très connu dans le monde de la copie de CD.

      Comme d'habitude lorsque l'on commence le craquage d'un programme on commence par le désassembler et ensuite le débugguer pour y repérer les failles qui nous serviront à élaborer par la suite le crack. Le désassembleur / débuggueur que j'ai l'habitude d'utiliser et dont on va se servir c'est w32dasm. Cette introduction faite nous pouvons commencer.

      On ouvre CloneCD.exe dans le désassembleur w32dasm par la commande Disassembler -> Open File to disassemble -> CloneCD.exe. Après quelques instants le listing de désassemblage s'affiche dans w32dasm. Le programme ne se ferme donc pas pendant le désassemblage comme c'était le cas pour les versions précédentes de CloneCD.exe. Une question se pose alors immédiatement : l'application a-elle été protégée contre de désassemblage et le debugging avec un packer ? Par exemple y a t'il utilisation comme dans les versions précédentes de CloneCD.exe du packer Asprotect 1.2x -1.3 ?

 

            a/ L'application est-elle packée ?

       Pour répondre à cette question il nous faut un logiciel très bien fait qui s'appelle PEiD (version 0.93). Vous le lancez et cliquez les ...Vous allez chercher CloneCD.exe. Eh là vous voyez apparaître en bas de la fenêtre de PEiD la phrase Borland C++ 1999. Borland qui est-ce ? C'est le nom d'une entreprise très célèbre pour ses compilateur C++. Elle n'a jamais fait de packer pour les applications.On en conclut que l'application n'est pas packée. On va donc pouvoir désassembler CloneCD.exe et faire ce qu'on veut avec sans être ennuyé par un packer.

 

             b/ Localisation de la fonction d'appel des nags-screens

       Si après le désassemblage de CloneCD.exe dans w32dasm vous regardez les fonctions exportées (commande Functions -> exports de w32dasm) vous voyez une fonction au nom particulièrement significatif _ReminderForm. Reminder pour ceux qui sont allergiques à l'anglais ça veut dire rappel. Rappel de quoi vous me direz ? Eh bien du mode shareware sur lequel a été conçu CloneCD.exe. En d'autres termes comme cela est indiqué quand vous lancez le logiciel au dela de la période d'évaluation qui est de 21 jours vous devez vous enregistrer et tant que cela n'est pas fait le logiciel vous le rappelle systématiquement par des nags-screens (écran de harcèlement) par exemple celui-ci au démarrage de l'application "CloneCD n'est pas gratuit ! Ceci est une version d'évalution d'un logiciel copyrighté. La période d'évaluation de CloneCD a expiré ! Veuillez lire la documentation du logiciel pour plus de détails.". Vous remarquez que si vous ne vous enregistrez pas au dela de la période d'évaluation vous n'avez plus accès aux fonctions Graver une image et Copie de CD de CloneCD.exe.

       Avant de continuer encore une parenthèse : le mot Form dans _ReminderForm renvoie à la Form telle qu'on la trouve en Visual Basic ou en Delphi c'est à dire un composant qui gère l'affiche des fenêtres. On va donc regarder où le programme iunvoque cette fonction _ReminderForm pour retirer tous les nags-screens du programme. Faîtes CTRL S pour vous placer au début de la zone de code de CloneCD.exe puis Seach -> Find Text -> _ReminderForm et arrêtez vous sur la deuxième occurence de cette fonction.

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004035D6(C)
 
:00403592A18C1D5200mov eax, dword ptr [00521D8C]
:004035978B00mov eax, dword ptr [eax]
:004035998B10mov edx, dword ptr [eax]
:0040359BFF92E8000000call dword ptr [edx+000000E8]
 
* Reference To: CloneCD._ReminderForm
 
:004035A18B0D8C1D5200mov ecx, dword ptr [00521D8C]
:004035A78B01mov eax, dword ptr [ecx]
:004035A98B904C020000mov edx, dword ptr [eax+0000024C]
:004035AF83FA02cmp edx, 00000002
:004035B27519jne 004035CD
:004035B48B0DC0B05000mov ecx, dword ptr [0050B0C0]
:004035BA85C9test ecx, ecx
:004035BC741Aje 004035D8
:004035BEA070BF5300mov al, byte ptr [0053BF70]
:004035C33C02cmp al, 02
:004035C57411je 004035D8
:004035C7B801000000mov eax, 00000001
:004035CCC3ret
 
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00403590(U), :004035B2(C)
 
:004035CD8A1570BF5300mov dl, byte ptr [0053BF70]
:004035D380FA02cmp dl, 02
:004035D675BAjne 00403592
 
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004035BC(C), :004035C5(C)
 
:004035D833C0xor eax, eax
:004035DAC3ret

 

       La fonction _ReminderForm est appelée en 0040359B via l'instruction asm call dword ptr [edx+000000E8] depuis un saut conditionnel en 004035D6 (regardez sous le premier Reference by). Pour vous en convaincre il suffit de mettre un point d'arrêt avec le debugger sur l'adresse 004035D6 (dans w32dasm faîtes CTRL L puis SHIF F12 -> 004035D6 -> OK -> F2) puis de démarrez le debugging de CloneCD.exe avec F9. A ce moment là une fenêtre s'affiche "Debugger detected! For security reasons CloneCD will not run if a debugger is running." s'affiche. Faîtes OK. Vous arrivez alors sur le point d'arrêt 004035D6 (w32dasm vient de breaker sur 004035D6 : vous entendez un bing). Faîtes plusieurs fois F8 (debugging pas à pas sans entrer dans les calls mais en les exécutant quand même). Dès que vous passez sur l'adresse 0040359B le nag suivant apparaît si vous avez dépassé les 21 jours d'utilisation : "CloneCD n'est pas gratuit ! Ceci est une version d'évalution d'un logiciel copyrighté. La période d'évaluation de CloneCD a expiré ! Veuillez lire la documentation du logiciel pour plus de détails.".

       Pour ne pas afficher le nag il faut donc que l'on empêche le programme de sauter depuis 004035D6 vers 00403592. Comment faire ce tour de passe-passe ? Il suffit que le premier byte de l'adresse 0053BF70 invoquée en 004035CD vale 02 auquel cas en 004035D3 nous avons cmp dl, 02 <=> cmp 02, 02 <=> 02 - 02 = 00. Or un jne (jump if not equal to zero) saute si on n'a pas obtenu 0 dans le dernière instruction. Ici si dl = 02 le cmp donne 00. Donc on ne saute pas arrivé en 004035D6 pour dl = 02.

 

             c/ Annulation des nags-screens.

       Pour ne pas afficher les nags-screens il faut rechercher l'endroit où le programme met à jour l'adresse 0053BF70 à autre chose que 02. Par exemple recherchons une instruction assembleur du style mov byte ptr [0053BF70], ?? avec ?? = quelque chose différent de 02 (02 = affichage des nags-screens) avec la commande de w32dasm Seach -> Find Text -> mov byte ptr [0053BF70]. Vous touvez un seul endroit dans le code.

 

:0043B6B1745Cje 0043B70F
:0043B6B366813D72BF53004C04cmp word ptr [0053BF72], 044C
:0043B6BC7309jnb 0043B6C7
:0043B6BEC60570BF530001mov byte ptr [0053BF70], 01
:0043B6C5EB07jmp 0043B6CE
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B6BC(C)
 
:0043B6C7C60570BF530002mov byte ptr [0053BF70], 02
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B6C5(U)
 
:0043B6CE8B1560295200mov edx, dword ptr [00522960]
...
:0043B6FEC70574BF530001000000mov dword ptr [0053BF74], 00000001
:0043B708A070BF5300mov al, byte ptr [0053BF70]
:0043B70D3C02cmp al, 02
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B6B1(C)
 
:0043B70F5Apop edx
:0043B7105Fpop edi
:0043B7115Epop esi
:0043B7125Bpop ebx
:0043B713C3ret

 

       Fermez la session de debugging courante avec CTRL T puis relancez une avec CTRL L. Posez un breakpoint sur l'adresse 0043B6B1 avec SHIFT F12 -> 0043B6B1 -> OK -> F2. Démarrez le debugging avec F9. Cliquez sur OK dans la fenêtre qui s'affiche "Debugger detected! For security reasons CloneCD will not run if a debugger is running.". Si vous faîtes ensutie une fois F8 le programme saute depuis 0043B6B1 vers 0043B70F. Nous on veut exécuter l'instruction en 0043B6C7 qui met 02 dans le contenu de l'adresse du premier byte de l'adresse 0053BF70 (c'est le mov byte ptr [0053BF70], 02). Au lieu d'annuler le saut en 0043B6B1 et de forcer celui en 0043B6BC pour arriver en 0043B6C7 je patche directement le saut en 0043B6B1 pour qu'il saute en 0043B6C7 (1 pierre 2 coups).

 

             d/ Retrait de toutes les limitations

        On va enregistrer notre modification physiquement dans le programme. Ouvrez une copie de CloneCD.exe dans winhex en remplaçant par la commande ALT G -> 3ACB1 (3ACB1 c'est l'offset donné dans w32dasm dans la barre de statut quand vous sélectionnez l'adresse 0043B6B1) le code hexadécimal suivant en rouge

        :0043B6B1     745C                 jne 0043B70F
        remplacé par
        :0043B6B1     7414                 jne 0043B6C7

        Lancer le programme modifié : toutes les limitations ont disparues (time-limit, nags, fonctions désactivées,NON ENREGISTRE).

        On ne le voit pas dans ce que j'ai écris mais l'exécution de l'instruction
      :0043B6FE C70574BF530001000000   mov dword ptr [0053BF74], 00000001 

        a pour effet de retirer le 0 de 21 Jours d'essais restants ! dans Outils- > Registre et le nom NON ENREGISTRE dans Outils- > Registre et Aide -> Informations. Le programme met alors à la place le contenu de la valeur Name présent dans le registre sous la clé HKEY_LOCAL_MACHINE\SOFTWARE\SlySoft\CloneCD\CDKey.

        Comment ai-je trouvé cette clé du registre ? Eh bien regardez dans le listing de désassemblage. Vous avez au dessus du mot-clef serial en 00408F52 la phrase * Possible StringData Ref from Data Obj ->"Software\SlySoft\CloneCD\CDKey" et en dessous * Possible StringData Ref from Data Obj ->"Name".

 

             e/ Assignation du programme à votre nom

        Cela est effectué par le crack qui met à jour le contenu de la valeur Name présent sous la clé HKEY_LOCAL_MACHINE\SOFTWARE\SlySoft\CloneCD\CDKey (c'est la commande /nom=pifoman dans la zone de texte du crack).Vous pouvez faire manuellement cette opération (une fois le programme patché) en adaptant ce code qui doit être collé dans un fichier texte nommé enregistrer_clonecd.reg :

        Windows Registry Editor Version 5.00
        [HKEY_LOCAL_MACHINE\SOFTWARE\SlySoft\CloneCD\CDKey]
        "Name"="pifoman"

 

 

CONCLUSION

 

      Dans ce cours vous avez appris à craquer un logiciel en utilisant ses fonctions exportées dans le listing de désassemblage de w32dasm. Ce cours utilise une autre technique que celle utilisée dans le précédent cours de CloneCD (celui de la version 5.2.0.0). Le programme n'est en effet plus protégé par le packer Asprotect 1.2x -1.3x. Il n'y a plus besoin comme cela était le cas auparavant d'inline patcher CCDDriver.dll pour positionner certains bytes en mémoire au démarrage de l'application. Par ailleurs je n'utilise plus la technique de recherche du mot-clef \key dans les string data reférence de CloneCD désassemblé dans w32dasm pour localiser l'endroit où patcher comme cela était le cas dans le cours de cracking de la version 5.2.0.0 de CloneCD.

 

Bonne nuit à tous.
Et à bientôt pour de nouveaux cours.
Pifoman

 



pifoman




Nombre de visites depuis le 12/07/2005