Crack in France
par pifoman

 
 

Ce cours est un reflet fidèle du cours intégré au crack de ma création de WebExpert 6.05.2 fr

 

INFOS SUR LE CRACK

 

Nom du prog

WebExpert 6.05.2

Editeur

http://software.visicommedia.com/fr/

Téléchargeable

http://softwares3.visicommedia.com/

Date du prog Jeudi 17 février 2005
Date du crackJeudi 24 avril 2005
Réalisé parPifoman
Url sitehttp://pifoman.free.fr/pif.php
Url redirectionhttp://www.geocities.com/mitonnes/pif.htm

 

COMMENTAIRES SUR LE PROGRAMME

 

       WebExpert 6 est un puissant logiciel d'édition Web qui vous permet de concevoir et de gérer des sites Web, de façon professionnelle en toute simplicité. Grâce à un éventail impressionnant d'outils riches en fonctionnalités, vous détenez le plein contrôle de votre projet de développement Web. A l'aide de WebExpert 6, vous maîtrisez les standards du Web comme le HTML, le JavaScript, les feuilles de styles CSS, l'ASP et le PHP.

 

LIMITATIONS

 

    1 - 30 jours d'évaluation
    2 - Nag-screen au démarrage.

 

LES OUTILS

 

Windasm 8.9
Pour désassembler le programme (transformation en langage d'assemblage) et 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 trouvé dans Windasm 8.9 impliqué dans la protection et on utilise ce même offset dans WinHex pour effectuer physiquement la modification.

 Softice
Débugger d'application qui permet de définir des points d'arrêt
sur des adresses ou des API chargées par le programme.

Regmon 6.0.6
Logiciel qui enregistre tous les échanges entre
un programme et le registre de windows.

Ollydbg 1.10
Désassembleur / débugger

 

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 un endroit du code.

90
      Code hexadécimal correspondant en assembleur à une instruction à rien (= nop = No OPeration). 

 

LE CRACK

 

         Détail des modifications wexpert6.exe

OctetAdresse OffsetOriginalCrackéEffet
1

008165D7

4159D7

A000Forçage de l'enregistrement.

2

00816627

415A27

BC

FC

Forçage de l'enregistrement.

 

ANALYSE  DU  PROGRAMME

 

        Wexpert6.exe

 

        Avant propos

          Le logiciel comporte une limitation au niveau du temps d'utilisation qui est fixée à 30 jours. Si vous avancez d'un an la date du système en utilisant l'horloge en bas à droite de votre écran le logiciel se lancera mais il vous sera impossible de créer un nouveau document ou d'enregistrer un document existant ; un message "Votre période d'essai est terminée.Veuillez vous enregistrer si vous désirez continuer l'utilisation du logiciel" vous rappelant que la période d'essai est terminée.Normal vous me direz le logiciel est limité à 30 jours d'utilisation ! On se dit alors qu'en le ramenant à la date d'aujourd'hui le programme va à nouveau se lancer (c'est le cas par exemple pour certains logiciels comme paint shop pro). Le problème c'est que le logiciel est définitivement verrouillé (en apparence du moins parceque nous on va passer par là :)).

         On réfléchit. Si le logiciel sait que la date d'utilisation a expiré c'est que cette information il l'a enregistrée au préalable quelque part. Ce quelque part dans une grosse majorité des cas c'est le registre (la registry pour les anglophones). Pour ceux qui ne connaissent pas le registre c'est la table de paramétrages des systèmes windows et des applications qui y sont installées.On y accède via l'utilitaire regedit.exe à partir de démarrer->exécuter->regedit.exe.

         La question se pose alors comment retouver cette information dans le registre ; information qui est examinée par Wexpert6.exe pour savoir s'il doit se lancer ou se bloquer (passé les 30 jours d'utilisation il se bloque). Pour cela j'utilise en général un petit utilitaire gratuit qui s'appelle Regmon.exe (Regmon = Registry monitoring -> en français surveillance du registre). Il est disponible an anglais sur http://www.sysinternals.com . Il est très petit (seulement 188 ko pour la version 6.06).

        Comment allons nous l'utiliser ? En fait c'est assez simple. Vous le lancez et comme on veut surveiller l'activité du processus Wexpert6.exe avec le registre vous tapez dans la case include Wexpert6.exe et vous décochez les cases Log Writes et Log Errors.Vous avancez la date du système de 1 an (après avoir ouvert Wexpert6.exe une première fois pour initialiser le repère de temps) et vous lancez ensuite Wexpert6.exe. Ensuite revenez à Regmon.exe.Attendez 10 minutes.Vous avez alors à l'écran 72195 lignes !!! Trouver l'information dans ce dédale est chose impossible : il faudrait examiner les clefs une par une.

        On change de technique.On va utiliser le logiciel Ashampoo Uninstaller Suite 1.3.1.0 disponible sur www.ashampoo.com (logiciel en anglais). Je suppose dans la suite que vous n'avez pas encore lancé le logiciel au dela de sa période d'évaluation de 30 jours (vous n'avez pas avancé la pendule de windows de 1 an) et qu'il vous reste 30 jours d'évaluation.Ce que l'on va faire c'est faire une photo du système tant que Wexpert6.exe est encore évaluable (période d'évaluation de 30 jours non terminée) et une autre photo du sytème après 1 an d'installation et comparer ces 2 photos et voir ce qui a changé pour trouver l'endroit où est situé le time-limit.

        . Lancez Ashampoo Uninstaller Suite 1.3.1.0
        . Clic OK (test shareware)
        . File -> change mode -> switch to expert mode
        . Clic sur le bouton Save Surrent System Configuration.

        . Avancez la pendule de windows de 1 an.

        . Lancez Wexpert6.exe.

        Dans Ashampoo Uninstaller Suite 1.3.1.0.

        . Clic sur le bouton Compare / create log
        . Enregistrez sous wexpert 6 délai dépassé.ECL
        . Clic sur l'onglet Log Files -> Available Log Files
        . Double clic sur wexpert 6 délai dépassé.ECL.
        . Clic sur Registry Changes pour voir les modifications apportées au registre.

        Arrivé ici lorsque vous déroulez les clés du registre qui ont été modifiées vous en voyez une particulièrement intéressante

        Sous windows XP

        HKEY_USERS\S-1-5-21-1292428093-1580436667-854245398-1004\Control Panel\Color
        Name              Value
        Type 7bf          $0000016D (365)

        Sous windows 98

        HKEY_USERS\.DEFAULT\Control Panel\Color
        Name              Value
        Type 7bf          $0000016D (365)

         Vous avez compris la clé de nom Type 7bf indique le nombre de jours utilisés depuis l'installation du logiciel.Pour remettre 30 jours d'évaluation il suffit avec regedit.exe (voir plus haut) de supprimer les clés Type 7bf et colEveQf situées suivant votre système dans le chemin HKEY_USERS\S-1-5-21-1292428093-1580436667-854245398-1004\Control Panel\Color ou HKEY_USERS\.DEFAULT\Control Panel\Color.En effet la valeur numérique (chez moi 38436) de la 2 ième clé colEveQf sert à initialiser le repère de temps à la date d'installation de webexpert 6.J'ai installé mon logiciel le 24/03/2005.La valeur Type 7bf correspond à la différence en jours entre la date courante et la date d'installation inscrite dans la valeur de la clé colEveQf. Par exemple si on est le 25/03/2005 et que je lance webexpert 6 la valeur de Type 7bf vaut 25/03/2005 - 24/03/2005 = 1 (en décimal).

         Comment ai-je trouvé ça ? Eh bien le 24/03/2005 j'ai effacé ces 2 clés puis lancé le logiciel webexpert 6 .J'ai ensuite noté la valeur de la clé colEveQf qui vaut 38436. Puis j'ai refait la même manipulation en me plaçant au préalable le 25/03/2005.A ce moment colEveQf qui vaut 38437.J'ai recommencé sur plusieurs dates consécutives (26/03/2005 ; colEveQf qui vaut 38438 ...).

         La protection sur le time-limit est ici particulièrement difficile à trouver d'une autre manière car en temps normal chercher un time-limit sous une clé qui parle de couleur n'a aucun sens.

 

        Analyse du programme

 

           1/ Enregister le logiciel (partie 1)

 

          On commence par rétablir les 30 jours d'évaluation si ce n'est pas déja fait (voir l'avant propos).Quand on lance le logiciel on voit que l'on peut s'enregistrer dans le menu Aide -> Entrez la clé d'activation. Si vous saisissez le couple nom d'enregistrement / clé d'activation suivant pifoman / 123456 vous avez une fenêtre qui vous dit "Mauvaise clé d'activation.Vérifier si vous avez inscrit correctement votre clé d'activation.".

          Comme on ne peut pas désassembler Wexpert6.exe dans w32dasm par la commande de w32dasm suivante Disassembler -> Open File to Disassemble -> Wexpert6.exe (w32dasm se ferme sans qu'on ait le temps de faire quoi que ce soit) on va utiliser le célèbre débugger d'application softice 4.05. Si vous voulez l'installer correctement avec ses différents patchs ou savoir comment il se manipule je vous conseille mon cours de cracking sur photoimpact 8.5.

          Démarrez softice si ce n'est pas déja fait par Démarrer -> tous les programmes -> NuMega SoftICE -> Start SoftICE.On rentre ensuite le nom et la clé dans la boîte d'enregistrement de Wexpert6.exe et avant de cliquer sur OK dans Wexpert6.exe on passe sous softice par CTRL D et on pose un point d'arrêt sur l'API createwindowexa qui est utilisée dans la création de fenêtres sous windows en tapant dans softice bpx createwindowexa (suivi de entrée).Ce point d'arrêt permettra d'interrompre l'exécution de Wexpert6.exe quand celui-ci invoquera la fonction système createwindowexa pour créer la fenêtre contenant le message "Mauvaise clé d'activation.Vérifier si vous avez inscrit correctement votre clé d'activation.". Avant de repasser sous windows faites CTRL F1 pour agrandir la fenêtre de softice.On repasse ensuite sous windows par CTRL D puis on clique sur le bouton OK de la fenêtre d'enregistrement de Wexpert6.exe.A ce moment là on passe sous softice.Softice nous affiche break due to BPX User32!CreateWindowExa.

          On réfléchit.Quand Wexpert6.exe crée la fenêtre en invoquant la fonction CreateWindowExa il sait déja si le code d'enregistrement (ici 123456) est bon ou non.Ce qu'on va faire c'est rechercher via softice l'endroit dans la mémoire où est stockée le nom d'enregistrement pifoman car le calcul de la bonne clé est fait à partir du nom entré et demander à softice de nous dire tous les accès qui sont fait par webexpert 6 sur le nom pifoman entre le clic sur le bouton OK et la création de la fenêtre.Pour cela tapez la commande suivante dans softice une fois qu'il vous annonce le break sur CreateWindowExa après le clic sur OK de wexpert 6

          s 0 L ffffff 'pifoman'

          Softice vous affiche dans la zone de donnée (zone en dessous de la première ligne verte en partant du haut) l'adresse où il a trouvé l'occurence de pifoman (ici il n'y en a qu'une).Ici c'est l'adresse 1C7A30 dans le segment 0010.L'adresse trouvée peut être différente chez vous.

          0010:1C7A30 70 69 66 6F 6D 61 6E - 00 00 00 00 00 00 00 00         pifoman.........

          A ce moment là on va poser breakpoint on memory access sur l'adresse 0010:1C7A30 (suivi de entrée).

          bpm 0010:1C7A30

          Faîtes ensuite autant de F5 (exécution jusqu'au prochain point d'arrêt) ; que nécessaire (3 exactement) pour passer de softice à windows et recliquez sur le bouton OK qui valide l'enregistrement.Vous repassez sous softice qui est arrêté sur l'adresse 0010:1C7A30.Faites ensuite 4 F5.Vous voyez alors que softice break sur createwindowexa.L'idée ici est de se dire que le bon numéro de série est calculé après le dernier accès au nom pifoman et avant le break sur createwindowexa.Il faut donc faire 3 fois F5 après le premier break.Ensuite faîtes quelques F12 (8 exactement) pour repasser dans wexpert (vous voyez alors sur la dernière ligne verte de softice en partant du haut wexpert6!code et non plus user32!.text).Ensuite faîtes une suite de F10 (37 exactement) pour tracer l'exécution de webexpert en mode pas à pas.Vous remarquez que vous passez sur une série de ret qui signifie sortie d'une fonction (un call en asm).Vous arrivez ici en 001B:0081659E

 

001B:00816599E8EA91C7FF CALL 0048F788
001B:0081659E8B45D0 MOV EAX,DWORD PTR SS:[EBP-30]
001B:008165A18D4DFC LEA ECX,DWORD PTR SS:[EBP-4]
001B:008165A433D2 XOR EDX,EDX
001B:008165A6E8BD070000 CALL 00816D68
001B:008165AB8D55C8 LEA EDX,DWORD PTR SS:[EBP-38]
001B:008165AE8B4508 MOV EAX,DWORD PTR SS:[EBP+8]
001B:008165B18B40FC MOV EAX,DWORD PTR DS:[EAX-4]
001B:008165B48B80F8020000MOV EAX,DWORD PTR DS:[EAX+2F8]
001B:008165BAE8C991C7FF CALL 0048F788
001B:008165BF8B45C8 MOV EAX,DWORD PTR SS:[EBP-38]
001B:008165C28D55CC LEA EDX,DWORD PTR SS:[EBP-34]
001B:008165C5E83E41BFFF CALL 0040A708
001B:008165CA8B55CC MOV EDX,DWORD PTR SS:[EBP-34]
001B:008165CD8B45FC MOV EAX,DWORD PTR SS:[EBP-4]
001B:008165D0E877EFBEFF CALL 0040554C
001B:008165D50F85A0000000JNZ 0081667B
001B:008165DBA1BC729800MOV EAX,DWORD PTR DS:[9872BC]
...
001B:0081667B8D55B4 LEA EDX,DWORD PTR SS:[EBP-4C]
 

          Arrivé sur la ligne d'adresse 001B:008165D0 par une suite de F10 depuis 001B:0081659E si vous tapez dans softice d edx pour voir le contenu du registre edx (d = display) vous voyez le vrai serial : PLGN-JUWM-HFCZ-ZZZZ calculé pour pifoman apparaître dans la zone de donnée de softice en haut sous la première ligne verte.Si vous faîtes d eax vous retrouvez notre serial bidon 123456.On en déduit aussitôt que le call 0081667B en 008165D0 est chargé de faire la comparaison entre le bon et le mauvais serial. Si vous faîtes un nouveau F10 softice nous indique que wexpert6.exe veut sauter vers l'adresse 0081667B.Il faut donc annuler le saut en 008165D5 en faisant le remplacement suivant dans wexpert6.exe ouvert dans winhex (faîtes recherche -> remplacer chaîne hexadécimale et remplacez E877EFBEFF0F85A0000000 par E877EFBEFF0F8500000000)

 

          008165D0  E877EFBEFF        CALL 0040554C
          008165D5  0F85A0000000     JNZ 0081667B

          remplacé par

          008165D0  E877EFBEFF        CALL 0040554C
          008165D5  0F8500000000     JNZ 008165DB

 

          Enregistrer la modification et lancez wexpert6.exe (depuis le répertoire d'installation de web expert 6 qui est par défaut C:\Program Files\Visicom Media\WebExpert 6) et rendez-vous dans la boîte d'enregistrement de web expert 6.Saisissez pifoman / 123456 pour le nom et la clé mais avant de cliquer sur OK lancez regmon en mettant dans include wexpert6.exe.Cliquez sur OK dans wexpert6.exe.Un message vous dit que le logiciel est enregistré.Dans regmon vous voyez les clés Usager = 70 69 66 6F 6D 61 6E  (= pifoman) et Format = 31 32 33 34 35 36 (= 123456) qui ont été créees dans le registre sous le chemin HKLM\Software\Visicom Media\WebExpert 6\ ; HKML signifiant HKEY_LOCAL_MACHINE. Il y a un problème au vue de cette création de clé.Le logiciel a mis le serial bidon 123456 comme serial dans le registre au lieu de mettre le vrai PLGN-JUWM-HFCZ-ZZZZ ! Le logiciel n'est donc pas enregistré comme il y paraît (relancez-le pour vous en convaincre).

 

           2/ Enregister le logiciel (partie 2)

 

          On va désassembler notre wexpert6.exe (patché) dans ollydbg par la commande File -> Open -> wexpert6.exe.Ensuite on démarre le logiciel via le debugger avec F9.Allez dans le menu Aide -> Entrez la clé d'activation de wexpert6.exe et entrez le couple pifoman / 123456 pour le nom et la clé sans faire OK.Revenez à ollydbg et cliquez droit sur la zone de code désassemblé en haut à gauche puis Goto -> expression -> 008165D5.Puis cliquez droit sur l'adresse trouvée à savoir 008165D5 et choisissez breakpoint -> toogle.On vient de mettre un point d'arrêt sur l'adresse 008165D5.Cliquez sur OK dans wexpert6.exe.Ollydbg break sur l'adresse 008165D5.Cliquez droit sur la zone de code désassemblé en haut à gauche puis search for -> Name (label) in current module.Vous avez alors la liste des fonctions importées par wexpert6.exe (type import dans la colonne type) et celles exportées par wexpert6.exe (type export dans la colonne type).

          Sélectionnez la ligne 0098C428  .idata   Import  (Known)  advapi32.RegSetValueExA et cliquez droit dessus et choisissez Set breakpoint on every reference.Cette fonction RegSetValueExA de C:\WINDOWS\system32\advapi32.dll sert à mettre à jour une valeur dans le registre par exemple attribuer 31 32 33 34 35 36 à Format.On a donc demandé à ollydbg de s'arrêter dès qu'il attribue une valeur à une clé dans le registre.Revenez ensuite à la fenêtre principale d'ollydbg et faites une suite de F8 (exécution ligne de code par ligne de code sans entrer dans les call mais en les exécutant quand même).Vous entrez alors dans ce call

          0081664C   . E8 9B0C0000    CALL wexpert6.008172EC

          Pour arriver ici (2 ième break sur advapi32.RegSetValueExA).Le 1ier break est sur Usager sur lequel on ne s'attarde pas car il ne nous intéresse pas (faîtes des F8 successifs).Vous remarquez que vous êtes passé dans advapi32.dll.

          00817384  |. 8BC8                     MOV ECX,EAX                                        ; |
          00817386  |. BA 1C748100       MOV EDX,wexpert6.0081741C                ; |ASCII "Format"
          0081738B  |. 8B45 F4                MOV EAX,DWORD PTR SS:[EBP-C]     ; |
          0081738E  |. E8 CDFCCAFF    CALL wexpert6.004C7060                        ; \wexpert6.004C7060

          En 00817384 EAX qui vaut 123456 est mis dans ECX et RegSetValueExA est invoquée en 0081738E.Il faut donc que se débrouille pour mettre le bon serial dans EAX avant d'entrer dans le call en 0081664C.Justement qu'est ce qu'on a avant d'entrer dans ce call.

 

00816625 . 8B45 BC MOV EAX,DWORD PTR SS:[EBP-44]
00816628 . 8D55 C0 LEA EDX,DWORD PTR SS:[EBP-40]
0081662B . E8 D840BFFF CALL wexpert6.0040A708
00816630 . 8B45 C0 MOV EAX,DWORD PTR SS:[EBP-40]
00816633 . 50 PUSH EAX
00816634 . 8D55 B8 LEA EDX,DWORD PTR SS:[EBP-48]
00816637 . 8B45 08MOV EAX,DWORD PTR SS:[EBP+8]
0081663A . 8B40 FC MOV EAX,DWORD PTR DS:[EAX-4]
0081663D . 8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
00816643 . E8 4091C7FFCALL wexpert6.0048F788
00816648 . 8B45 B8MOV EAX,DWORD PTR SS:[EBP-48]
0081664B . 5A POP EDX
0081664C . E8 9B0C0000CALL wexpert6.008172EC
 

          Si vous avez regardé les registres avant d'arriver sur l'adresse 0081664C vous auriez vu

          EAX 03842744 ASCII "pifoman"
          EDX 03842730 ASCII "123456"

          Remontons dans le code pour voir comment EDX est mis à jour.L'une des adresses 00816628 et 00816634 met à jour EDX. Laquelle prendre ? Relançons une session de debugging par le menu debug -> restart.Désactivez tous les breakpoints posés sauf celui en 008165D5 en cliquant sur le B de la barre de boutons d'ollydbg et en les sélectionnant un par un et en appuyant sur la touche suppr du clavier.Démarrez le programme avec F9.Puis allez dans la boîte d'enregistrement de wexpert6.exe et entrez le couple pifoman / 123456 pour le nom et la clé puis faîtes OK.Ollydbg break alors sur l'adresse 008165D5.Ensuite faîtes F8 plusieurs fois jusqu'à arriver sur 00816625.Puis aller dans le menu Plugins -> command line -> command line -> d [ebp+44] (le plugin command line correspond au fichier Cmdline.dll dans le répertoire d'installation d'ollydbg. Si vous n'avez pas le plugin aller le chercher sur internet et mettez-le dans le répertoire d'installation d'ollydbg.Il est sur mon site si besoin).

          Dans la zone de données d'ollydbg (en bas à gauche) vous voyez alors que le contenu de ebp+44 (noté [ebp+44]) vaut 123456.Et si on mettait à la place PLGN-JUWM-HFCZ-ZZZZ. Pour cela il sufit de se rappeler que ce numéro était situé dans [EBP-4] (on a déja étudié cela plus haut avec softice) à l'adresse 008165CD.On passe donc en mode d'assemblage en appuyant sur la barre d'espace du clavier quand on est à l'adresse 00816625 dans ollydbg.Tapez alors le code suivant : MOV EAX,DWORD PTR SS:[EBP-4] en décochant la case Fill with NOP's puis cancel.Faites des F8 successifs. Arrivé en 0081664C vous avez alors EDX qui vaut PLGN-JUWM-HFCZ-ZZZZ et non plus 123456.C'est ce qu'on voulait.Faites F9 puis dès que le message nous disant que l'on est enregistré apparaît sortez du désassembleur par ALT X.Relancez wexpert6.exe. Le logiciel est cette fois-ci enregistré pour de bon.

 

          NB : si vous voulez effectuer physiquement la modification dans l'exécutable pour un enregistrement ultérieur d'un nouveau nom par exemple (effacez pour cela la clé HKEY_LOCAL_MACHINE\Software\Visicom Media\WebExpert 6\Format) ouvrez wexpert6.exe dans winhex et faites ALT G -> 415A27 puis tapez BC à la place de FC. 

 

 

CONCLUSION

 

         Dans ce cours vous avez appris à trouver l'endroit dans le registre où est conservé la trace du time-limit grâce à Ashampoo Uninstaller Suite 1.3.1.0.Vous avez également appris à poser un point d'arrêt sur la fonction de création de fenêtre l'API createwindowexa avec le débugger softice.Enfin je vous ai montré comment se servir du debugger ollydbg pour forcer la routine d'enregistrement en posant un breakpoint sur la fonction de mise à jour de valeur dans le registre RegSetValueExA.

 

 

Bonne soirée à tous.
Et à bientôt pour de nouveaux cours.
Pifoman

 



pifoman




Nombre de visites depuis le 25/03/2005