Crack in France
par pifoman

 
 

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

 

INFOS SUR LE CRACK

 

Nom du prog CloneDVD 2.8.4.1
Editeur

http://www.slysoft.com

Téléchargeable

http://membres.lycos.fr/lesgrossestuiles/

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

 

COMMENTAIRES SUR LE PROGRAMME

 

      CloneDVD 2 copie les films en qualité supérieure. Quoique’il soit un film principal ou d’une DVD complète - CloneDVD compresse même des matériaux de film très longs en qualité brillante et vitesse impressionnante: Une technologie spéciale de transcodage compresse votre choix de titre DVD avec les paramètres audio et les sous-titres sélectionnés sur la taille de destination que vous pouvez ajuster vous-même.

    Le film d’instruction vous guidera étape par étape à travers les paramètres. Avec l’aide d’une prévisualisation vidéo vous pouvez regarder les titres DVD et décider, si vous découpez les chapitres non désirés. Des barres de qualité indiquent comment la compression des données affecte la qualité du film. Egalement ceux qui ne sont pas d’expert en la matière auront toujours l’aperçu.

 

LIMITATIONS

 

   1 - 21 jours d'utilisation maximum.
   2 - Ecrans de harcèlement (Nags-screens).
   3 - Message d'évaluation dans le menu A propos.

 

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 CloneDVD.exe
(méthode de cracking n°1)

OctetAdresseOffsetOriginalCrackéEffet
1

0040E47D

E47D

0FE9Suppression du time-limit et des nags.

2

0040E47E

E47E

85

36

Suppression du time-limit et des nags.

3

0040E47F

E47F

F1

05

Suppression du time-limit et des nags.

4

0040E480

E480

02

00

Suppression du time-limit et des nags.

5

0040E482

E482

00

90

Suppression du time-limit et des nags.

6

00457CD1

57CD1

7A

00

Retrait des messages d'évaluation menu "A propos"


  
  Détail des modifications CloneDVD.exe
(méthode de cracking n°2)

OctetAdresseOffsetOriginalCrackéEffet
1

005DC576

1DC576

2800Enregistrement au nom inscrit dans la base de registre

 

ANALYSE  DU  PROGRAMME

 

      CloneDVD.exe

 

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

      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 CloneDVD.exe dans le désassembleur w32dasm par la commande Disassembler -> Open File to disassemble -> CloneDVD.exe. Après quelques minutes 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 CloneDVD.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 CloneDVD.exe du packer Asprotect 1.2x -1.3 ?

       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 CloneDVD.exe. Et là vous voyez apparaître en bas de la fenêtre de PEiD la phrase Microsoft Visual C++ 7.0. Qu'est ce que c'est Microsoft Visual C++ ? C'est le nom d'un compilateur très utilisé dans le monde de la programmation système et applicative. De plus vous le savez très bien que l'entreprise Mircrosoft est très connue pour ses systèmes d'exploitation et ses logiciels grand public. Elle n'a jamais fait en outre de packer pour les applications. On en conclut que l'application n'est pas packée. On va donc pouvoir désassembler CloneDVD.exe et faire ce qu'on veut avec sans être ennuyé par un packer.

 

 

        1/ Méthode de cracking n°1

 

             Elle consiste à enlever les limitations à la main sans chercher à s'enregistrer.
 

             a/ Etude des string data références et des fonctions exportées dans w32dasm.

       Si vous avancez d'un an la pendule de windows en bas à droite de votre écran et que vous lancez CloneDVD.exe vous avez une jolie voie féminine qui vous dit OH NO à la suite de laquelle s'affiche le message suivant "Votre période d'évaluation de CloneDVD2 a expiré". Traduisons en anglais cette phrase. Cela donne "Your evaluation period of CloneDVD2 has expired!".

       Après le désassemblage de CloneDVD.exe dans w32dasm regardons les string data references (clic sur le bouton Strn Ref) pour voir si cette phrase est trouvée par le désassembleur. Pas de chance les string data references sont presques vides. Il n'y a rien d'exploitable dedans (comme par exemple des mots-clefs comme trial ou expired). C'est pareil pour les fonctions exportées par CloneDVD.exe (aucune fonction exportée car le bouton Exp Fn est grisé dans la barre d'outils de w32dasm).

 

             b/ Conversion d'un offset dans winhex en adresse dans w32dasm à l'aide des sections.

       Je vais sortir ma botte secrète : celle qui marche à tous les coups ! Ca consiste à chercher une chaîne dans l'éditeur hexadécimal winhex puis de relever l'offset du premier caractère de la chaîne trouvée et de le convertir ensuite en adresse dans w32dasm. Ensuite il nous suffira de chercher dans w32dasm où est appelée cette adresse. Cela revient à trouver l'endroit où le message est appelé par CloneDVD.exe.

       On ouvre donc CloneDVD.exe dans winhex. On fait ensuite Recherche -> Chercher texte -> Your evaluation period. Your evaluation period c'est le début de la chaîne "Your evaluation period of CloneDVD2 has expired!".Vous trouvez alors 1 seule occurence. Dans la barre de statut en bas de winhex vous pouvez lire Offset: 2F29E0.

       On revient à CloneDVD.exe désassemblé dans w32dasm. On va calculer l'adresse à laquelle correspond l'offset 2F29E0 dans CloneDVD.exe désassemblé. Pour cela regardons les sections de CloneDVD.exe en haut du listing de désassemblage de CloneDVD.exe dans w32dasm.

 

         Disassembly of File: C:\Program Files\Elaborate Bytes\CloneDVD2\CloneDVD2.exe
         Code Offset = 00001000, Code Size = 002D1000
         Data Offset = 0041B000, Data Size = 00007000

         Number of Objects = 0007 (dec), Imagebase = 00400000h

         Object01: .text     RVA: 00001000 Offset: 00001000 Size: 002D1000 Flags: 60000020
         Object02: .text1   RVA: 002D2000 Offset: 002D2000 Size: 00001000 Flags: 60000020
         Object03: .rdata   RVA: 002D3000 Offset: 002D3000 Size: 00148000 Flags: 40000040
         Object04: .data    RVA: 0041B000 Offset: 0041B000 Size: 00007000 Flags: C0000040
         Object05: .data1  RVA: 0062D000 Offset: 00422000 Size: 00001000 Flags: C0000040
         Object06: .rsrc     RVA: 0062E000 Offset: 00423000 Size: 0000D000 Flags: 40000040
         Object07: .reloc   RVA: 0063B000 Offset: 00430000 Size: 0003C000 Flags: 42000040

 

       L'offset 2F29E0 est compris entre l'offset de début de section 002D3000 et l'offset de début de section 0041B000.
       Donc l'offset 2F29E0 appartient à la section nommée .rdata.

       Pour calculer l'adresse correspondant à l'offset 2F29E0 on utilise la formule suivante :
       adresse recherchée =  offset trouvé - offset début de section + RVA section + Imagebase

       Prenons la calculatrice de windows dans Démarrer -> exécuter -> calc.exe en mode hexadécimal (bouton hex)
       On trouve 2F29E0 - 002D3000 + 002D3000 + 00400000 = 6F29E0

       Conclusion : l'adresse dans CloneDVD.exe correspondant à l'offset 2F29E0 est 6F29E0.

 

             c/ Localisation d'un message d'erreur dans w32dasm.

       Maintenant que nous avons l'adresse du premier byte du message "Your evaluation period of CloneDVD2 has expired!" qui est 6F29E0 faisons une recherche de l'endroit où cette adresse est appelée par le programme. Dans w32dasm faîtes Search -> Find Text -> 6F29E0. On arrive ici.

 

:0040E47683BD30FFFFFF02cmp dword ptr [ebp+FFFFFF30], 00000002
:0040E47D0F85F1020000jne 0040E774
...
:0040E4A768102B6F00push 006F2B10
...
:0040E4BF68E0296F00push 006F29E0
...
:0040E4FFE82871FFFFcall 0040562C
...
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040E47D(C)
 
:0040E774399D30FFFFFFcmp dword ptr [ebp+FFFFFF30], ebx
:0040E77A0F8438020000je 0040E9B8
:0040E78053push ebx
:0040E7818D45D4lea eax, dword ptr [ebp-2C]
:0040E784686C296F00push 006F296C
:0040E78950push eax
:0040E78AE8779A0500call 00468206
...
:0040E884E8556DFFFFcall 004055DE

 

       Notre message est donc appelé à l'adresse 0040E4BF. En 0040E4A7 on charge le mot Exit. Allez à l'offset suivant dans winhex : 006F2B10 - 00400000 - 002D3000 + 002D3000 = 2F2B10 pour vous en convaincre : c'est le calcul inverse de celui mené dans le paragraphe précédent : on part de l'adresse dans w32dasm et on veut arriver à l'offset dans winhex. Ce mot Exit sera affiché dans le nag-screen au démarrage de CloneDVD.exe sous la forme du bouton Quitter (car la période d'évaluation de 21 jours est dépassée). En 0040E4FF le nag-screen au démarrage de CloneDVD.exe s'affiche. Pour vous en convaincre chargez le debugger de w32dasm avec CTRL L puis posez un breakpoint sur l'adresse 0040E4FF avec SHIFT F12 -> 0040E4FF -> OK -> F2. Ensuite démarrez l'application avec F9. Le débugger de w32dasm s'arrête sur le point d'arrêt qu'on vient de poser en 0040E4FF (vous entendez un bing). Un simple F8 ensuite (débugging en mode pas à pas) affiche le nag.

 

             d/ Retrait du time-limit et des nags-screens au démarrage.

       Au dessus de ces ligne de code vous remarquez en 0040E47D un saut conditionnel (jne 0040E774). Si on force ce saut on evite le nag-screen "Your evaluation period of CloneDVD2 has expired!" en 0040E4FF. Seulement voila arrivé en 0040E884 CloneDVD.exe nous affiche encore un nag-screen "CloneDVD2 n'est pas enregistré, vous avez utilisé 0 des 0 jours d'évaluation de CloneDVD2." avec un bouton continuer qui bizarrement ne lance pas l'application. Pour vous en convaincre fermez la session de debugging courante par CTRL T (T pour Terminate). Chargez le debugger de w32dasm avec CTRL L puis posez un breakpoint sur l'adresse 0040E47D avec SHIFT F12 -> 0040E47D -> OK -> F2. Ensuite démarrez l'application avec F9. Le débugger de w32dasm s'arrête sur le point d'arrêt qu'on vient de poser en 0040E47D (vous entendez un bing). Ensuite inversons le saut en 0040E47D pour sauter en 0040E774. Cliquez dans la grande fenêtre du debugger (celle qui s'était ouverte quand vous aviez fait CTRL L) sur le bouton Modify Data puis sur le 1 en dessous la lettre Z en haut de la fenêtre qui apparaît. Faîtes ensuite Modify puis Close. Ensuite avec F8 vous sautez en 0040E774. Arrivé avec F8 ensuite sur l'adresse 0040E77A vous constatez que le programme ne saute pas avec l'instruction je 0040E9B8 (vous avez 0 sous la lettre Z dans la grande fenêetre du debugger) sous les lettres O D I T S Z A P C.

       Si vous regardez bien le listing de désassemblage dans le praragraphe précédent vous voyez que le texte du bouton continuer est chargé en 0040E784 (006F296C = adresse du 1ier byte du texte du bouton Continue). Dans winhex allez voir à l'offset 2F296C). Pour supprimer les nags-screens et le time-limit au démarrage de CloneDVD.exe il suffit de sauter depuis l'adresse 0040E47D vers l'adresse 0040E9B8 (c'est un raccourci du forçage des 2 sauts en 0040E47D et 0040E77A). C'est ce qu'on appelle faire d'une pierre 2 coups.

 

             e/ Appliquer physiquement les modifications.

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

 

        :0040E47D     0F85F1020000            jne 0040E774
        remplacé par
        :0040E47D     E936050000                 jmp 0040E9B8
        :0040E482     90                                  nop

 

       Voici comment j'ai trouvé le codé hexadécimal en rouge. Fermez la session de debugging courante par CTRL T (T pour Terminate). Chargez le debugger de w32dasm avec CTRL L puis posez un breakpoint sur l'adresse 0040E47D avec SHIFT F12 -> 0040E47D -> OK -> F2. Ensuite démarrez l'application avec F9. Le débugger de w32dasm s'arrête sur le point d'arrêt qu'on vient de poser en 0040E47D (vous entendez un bing). Ensuite cliquez sur le bouton Patch Code dans la petite fenêtre du debugger qui s'est ouverte quand vous aviez fait CTRL L. Tapez ensuite chacune des 2 lignes de code (le jmp 0040E9B8 et le nop) avec un entrée à la fin de chacune des lignes. Vous voyez ensuite le code hexadécimal apparaître en dessous.

       A quoi sert le nop (nop = No OPeration = instruction qui fait rien) ? Il sert à équilibrer le code hexadécimal. 0F 85 F1 02 00 00 fait 6 octets tandis que E9 36 05 00 00 n'en fait que 5. L'octet manquant on l'ajoute en ajoutant un nop.

 

             f/ Retrait du message d'évaluation dans le "A propos".

       Je suppose ici que les modifications du paragraphe précédent ont été faîtes et que le pendule de windows a été avancée de 1 an. Quand vous démarrez CloneDVD.exe et que vous cliquez sur le bouton A propos vous voyez apparaître 2 messages "Version d'évaluation non enregistrée" et "Vous avez utilisé 0 des 0 jours d'évaluation de CloneDVD2.". Traduisons en anglais le premier message. Cela devient "Unregistered evaluation version!". On trouve comme précédemment le début de ce message dans CloneDVD.exe ouvert dans winhex à l'offset 2F84D8. 2F84D8 se traduit en adresse dans w32dasm par 6F84D8 (voir le paragraphe sur les sections de CloneDVD.exe plus haut). En cherchant l'endroit où est appelée cette adresse vous tombez ici.

 

:00457CCD395E08cmp dword ptr [esi+08], ebx
:00457CD0757Ajne 00457D4C
:00457CD28D4DF0lea ecx, dword ptr [ebp-10]
...
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00457CD0(C)
 
:00457D4C53push ebx
:00457D4D8D45EClea eax, dword ptr [ebp-14]
:00457D5068D8846F00push 006F84D8

 

       "Unregistered evaluation version!" est appelé en 00457D50 avec un push 006F84D8. Si vous remontez dans le code vous voyez que l'on peut éviter ce message en annulant le saut en 00457CD0 (regardez en dessous de Reference by l'adresse 00457CD0 écrite en vert par w32dasm ; c'est l'adresse qui a demandé l'affichage du message).

       Ce que nous allons faire c'est donc annuler ce saut. Pour cela on ouvre la copie de CloneDVD.exe dans winhex que l'on a patché dans le paragraphe e/ et on remplace par la commande ALT G -> 57CD0 (57CD0 c'est l'offset donné dans w32dasm dans la barre de statut quand vous sélectionnez l'adresse 00457CD0) le code hexadécimal suivant en rouge :

 

      :00457CD0   757A                   jne 00457D4C
        remplacé par
      :00457CD0   7500                    jne 00457CD2

       Enregistrez la modification et lancer la copie de CloneDVD.exe. Les messages d'évaluation dans le "A propos" ont disparus et sont remplacés maintenant par des 3 points consécutifs (...).

       Voila le programme est complètement craqué.

 

 

        2/ Méthode de cracking n°2

 

             Elle consiste à s'enregister pour enlever toutes les limitations.

             a/ Etude du code binaire de CloneDVD.exe

       Comme on sait déja que les string data reference de CloneDVD.exe sont casiment vides (cf méthode de cracking n°1) on va chercher directement des mot-clefs dans le code binaire de CloneDVD.exe. Pour cela on ouvre CloneDVD.exe avec winhex et on fait des recherches de chaînes qui nous parle d'enregistrement. Voici ce qu'on trouve :

       Offset : 3C23D4 -> Serial
       Offset : 3C23E0 -> Company
       Offset : 3C240C -> Software\%s\%s\CDKey

       En utilisant les sections données dans le paragraphe 1-b on en déduit les adresses correspondantes dans w32dasm.

       Adresse : 007C23D4 -> Serial
       Adresse : 007C23E0 -> Company
       Adresse : 007C240C -> Software\%s\%s\CDKey

       Ensuite on cherche avec la commande Search -> Find Text de w32dasm l'endroit où sont appelées ces 3 adresses.

       :005DBC46    68D4237C00     push 007C23D4  ->  Appel de la chaîne Serial
       :005DBE9E    68E0237C00      push 007C23E0   -> Appel de la chaîne Company
       :005DC539    680C247C00      push 007C240C  -> Appel de la chaîne Software\%s\%s\CDKey

 

             b/ Localisation et debugging autour de la routine de vérification du serial.

       On va étudier ce qui se passe au démarrage de l'application avec ces 3 chaînes Serial, Company et Software\%s\%s\CDKey. Pour cela commence par charger en mémoire le debugger de w32dasm avec CTRL L puis on pose un breakpoint sur les 3 adresses 005DBC46 , 005DBE9E et 005DC539 (pour la première il faut faire dans w32dasm SHIFT F12 -> 005DBC46 -> OK -> F2). On lance le débugging avec F9.

 

:005DC539680C247C00push 007C240C
:005DC53E50push eax
:005DC53FFFD7call edi
:005DC5418D8C2420010000lea ecx, dword ptr [esp+00000120]
:005DC54851push ecx
:005DC5496A00push 00000000
:005DC54B8D4C2424lea ecx, dword ptr [esp+24]
:005DC54FE8BCF6FFFFcall 005DBC10
:005DC55483C418add esp, 00000018
:005DC55785C0test eax, eax
:005DC5597444je 005DC59F
:005DC55B8B84246C010000mov eax, dword ptr [esp+0000016C]
:005DC5626A00push 00000000
:005DC5648D8C2414010000lea ecx, dword ptr [esp+00000114]
:005DC56BE860F7FFFFcall 005DBCD0
:005DC57083C404add esp, 00000004
:005DC57385C0test eax, eax
:005DC5757428je 005DC59F
:005DC57753push ebx
:005DC5788D4C2410lea ecx, dword ptr [esp+10]
:005DC57CE88FF8FFFFcall 005DBE10

 

       Le debugger break en premier sur cette adresse 005DC539 (Software\%s\%s\CDKey). Faisons ensuite des F8 succcessifs pour voir ce qui se passe.

 

       Arrivé en 005DC53F une fenêtre W32dasm API Details s'ouvre. En cliquant sur le bouton Get API Result vous voyez apparaître ce résultat :

       RESULT for API wsprintfA
        Arg00 = (int) 00000028
        Arg01 = (LPTSTR) 0012f574   -> "Software\Elaborate Bytes\CloneDVD2\CDKey"
        Arg02 = (LPCTSTR) 007c240c -> "Software\%s\%s\CDKey"

       On en deduit que dans Software\%s\%s\CDKey le premier %s de c'était Elaborate Bytes et le deuxième CloneDVD2.

 

             c/ Routine de lecture du serial dans la base de registre.

      Entrons dans le call 005DBC10 en 005DC54F (faîtes F7 arrivé en 005DC54F).

 

* Referenced by a CALL at Address:
|:005DC54F
 
:005DBC1083EC58sub esp, 00000058
...
:005DBC1E33F6xor esi, esi
...
 
* Reference To: ADVAPI32.RegOpenKeyExA, Ord:01E2h
 
:005DBC2CFF151C306D00Call dword ptr [006D301C]
:005DBC3285C0test eax, eax
:005DBC347574jne 005DBCAA
...
:005DBC4668D4237C00push 007C23D4
:005DBC4B51push ecx
:005DBC4CC744241C50000000mov [esp+1C], 00000050
 
* Reference To: ADVAPI32.RegQueryValueExA, Ord:01ECh
 
:005DBC54FF1528306D00Call dword ptr [006D3028]
:005DBC5A85C0test eax, eax
:005DBC5C7541jne 005DBC9F
...
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005DBC94(C)
 
:005DBC9ABE01000000mov esi, 00000001
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005DBC5C(C)
 
:005DBC9F8B4C2408mov ecx, dword ptr [esp+08]
:005DBCA351push ecx
 
* Reference To: ADVAPI32.RegCloseKey, Ord:01C9h
 
:005DBCA4FF1520306D00Call dword ptr [006D3020]
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:005DBC34(C)
 
:005DBCAA8B542464mov edx, dword ptr [esp+64]
...
:005DBCC08BC6mov eax, esi
:005DBCC25Epop esi
:005DBCC383C458add esp, 00000058
:005DBCC6C3ret

 

        Avec la fenêtre intitulée W32dasm API Details qui s'ouvre sucessivement sur les calls du listing ci-dessus on a le détail de ce qui se passe. Utilisez systématiquement le bouton bouton Get API Result de la fenêtre W32dasm API Details.
 

        005DBC1E -> on met le registre esi à 00000000.
        005DBC2C -> on ouvre la clé HKEY_LOCAL_MACHINE\Software\Elaborates bytes\CloneDVD2\CDKey
        005DBC34 -> si cette clé n'existe pas on saute et on met esi 00000000 dans eax en 005DBCC0
        005DBC54 -> on ouvre la valeur Serial dans la clé ci-dessus avec la fonction ADVAPI32.RegQueryValueExA.
        005DBC5C -> si la valeur Serial n'existe pas on saute vers RegCloseKey pour fermer la clé qu'on vient d'ouvrir
        005DBC9A -> si la clé et la valeur Serial existent on met esi à 00000001 et eax = 00000001 en 005DBCC0

 

             d/ Serial valide ?

        Une fois sorti avec des F8 successifs de la routine de lecture du serial vous arrivez en 005DC56B

 

:005DC56BE860F7FFFFcall 005DBCD0
:005DC57083C404add esp, 00000004
:005DC57385C0test eax, eax
:005DC5757428je 005DC59F
:005DC57753push ebx
:005DC5788D4C2410lea ecx, dword ptr [esp+10]
:005DC57CE88FF8FFFFcall 005DBE10

 

        En 005DC56B le programme fait un test de validité du serial lu en base de registre.Comment est ce que je sais ça ? Eh bien le call 005DBE10 en 005DC57C appelle la chaîne Company (faîtes dans w32dasm SHIFT F12 -> 005DC57C -> OK -> flèche droite du clavier pour descendre dans ce call) mais en faisant ensuite des F8 successifs vous voyez que le programme en 005DC575 saute vers 005DC59F. On en déduit que si le programme ne prend pas la peine de lire la valeur Company dans le registre c'est qu'il sait déja si le serial trouvé en base de registre est faux. Il suffit alors d'annuler le saut en 005DC575 pour que le programme croit que le serial entré dans la base de registre est bon.

        Pour annuler le saut en 005DC575 cliquez quand vous êtes arrivé sur l'adresse 005DC575 (par des F8 successifs) sur le bouton Modify Data dans la grande fenêtre du debugger de w32dasm puis sur le 1 en dessous la lettre Z en haut de la fenêtre qui apparaît. Faîtes ensuite Modify puis Close.

        Si vous descendez avec F7 dans le call 005DBE10 vous voyez que le programme appelle une chaîne nommée Name avant Company dans la même clé que précédemment HKEY_LOCAL_MACHINE\Software\Elaborates bytes\CloneDVD2\CDKey : c'est là qu'il faut mettre votre nom qui sera le nom d'enregistrement.

 

             e/ Enregistrement des modifications

       -> Dans le code du programme

       Ce que nous allons faire c'est annuler physiquement ce saut en 005DC575. Pour cela on ouvre une copie vierge de CloneDVD.exe dans winhex et on remplace par la commande ALT G -> 1DC575 (1DC575 c'est l'offset donné dans w32dasm dans la barre de statut quand vous sélectionnez l'adresse 005DC575) le code hexadécimal suivant en rouge :

 

      :005DC575   7428                   je 005DC59F
        remplacé par
      :005DC575   7400                    je 005DC577

 

       -> Dans le registre de windows

        Cela est effectué par le crack qui met à jour le contenu de la valeur Name présente sous la clé HKEY_LOCAL_MACHINE\Software\Elaborates bytes\CloneDVD2\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_clonedvd.reg :

         REGEDIT4

        [HKEY_LOCAL_MACHINE\SOFTWARE\Elaborate Bytes\CloneDVD2\CDKey]
         "Name"="Pifoman"
         "Serial"="123456"
         "Company"=""

 

 

CONCLUSION

 

      Dans ce cours vous avez appris à craquer un logiciel en utilisant 2 méthodes.

      La première consiste à effectuer manuellement l'annulation du time-limit, des nags-screens et des messages d'évaluation par une étude des messages affichés dans l'application pendant son exécution. Elle fait appel aux sections du programme pour convertir un offset dans winhex en adresse dans w32dasm.Cette méthode patche au total 6 octets et n'intervient pas sur le registre de Window.

      La seconde méthode quant à elle consiste via le registre à atteindre le statut d'utilisateur enregistré pour lever toutes les limitations du logiciel. Elle est plus efficace que la première en patchant 1 seul octet mais demande plus d'affinité avec le débugging et nécessite un minimum de connaissances pour savoir manipuler le registre de windows (API ADVAPI32.RegOpenKeyExA et ADVAPI32.RegQueryValueExA).

 

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

 



pifoman




Nombre de visites depuis le 12/07/2005