Crack in France
par pifoman

 
 

Ce cours est un reflet fidèle du cours intégré au crack de ma création de FTP Expert 3.70.0 fr

 

INFOS SUR LE CRACK

 

Nom du prog FTP Expert 3.70.0
Editeur

http://www.visic.com/

Téléchargeable

http://softwares4.visicommedia.com

Date du prog Vendredi 1 avril 2005
Date du crack Vendredi 15 avril 2005
Réalisé parPifoman
Url sitehttp://pifoman.free.fr/pif.php
Url redirectionhttp://www.geocities.com/mitonnes/pif.htm

 

COMMENTAIRES SUR LE PROGRAMME

 

       FTP Expert 3 est conçu expressément pour les utilisateurs qui rêvent de maîtriser le transfert de fichiers par Internet en toute simplicité. Quelques fonctions du logiciel :

  •        Transferts de fichiers serveur à serveur
  •        Transferts de fichiers local à local
  •        Ouverture facile de plusieurs sites à la fois
  •        Exécution de plusieurs transferts en parallèle de façon simultanée
  •        Reprise des transferts interrompus
  •        Vérification automatique des URL dans le presse-papiers
  •        Suivi de l'état des transferts à l'aide d'un graphique

 

LIMITATIONS

 

    1 - Ecrans de harcèlement (Nag-screen).
    2 - 30 jours d'utilisation maximum.

 

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.

 

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 ftpxpert3.exe

OctetAdresse OffsetOriginalCrackéEffet
1

006A6365

2A5765

0A00Enregistrement du programme

 

ANALYSE  DU  PROGRAMME

 

        ftpxpert3.exe

 

        Aujourd'hui on s'attaque à un logiciel très connu dans le monde du transfert de fichiers par FTP.

        En ouvrant le logiciel on voit une boîte d'enregistrement dans Aide->Enregistrez FTP Expert. Allons dans la boîte d'enregistrement du logiciel et entrons comme couple nom / code le couple pifoman / 123456. Une boîte s'affiche disant "mauvais code d'enregistrement". Notons ce message et cherchons le dans les string data référence de ftpxpert3.exe que nous avons au préalable désassemblé dans w32dasm par la commande Disassembler -> Open File to disassemble. Les string data reference dans w32dasm on y accède par le bouton nommé Strn Ref dans la barre de bouton de w32dasm.
 

        Cliquons sur la phrase trouvée dans la fenêtre qui s'est ouverte. Ce clic nous mène à cette zone de code :

 

:006A63D9B202 mov dl, 02
 
* Possible StringData Ref from Code Obj ->"Mauvais code d'enregistrement"
 
:006A63DBB864656A00 mov eax, 006A6564
 

        Remontons dans le code pour voir comment on est arrivé ici

 

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:006A6339(C), :006A633F(C), :006A636E(U), :006A63A3(C)
 
:006A63BAA104AE7300 mov eax, dword ptr [0073AE04]
 

        On y arrive par les adresses 006A6339, 006A633F, 006A636E, 006A63A3. Ce qu'on va faire c'est mettre un bp (bp pour breakpoint ou encore point d'arrêt en français) sur chacune de ces adresses juste avant de cliquer le bouton OK de la boîte d'enregistrement de FTP Expert.Pour cela faites CTRL L (L pour Loader) pour charger le programme en mémoire dans w32dasm.Ensuite faites F9 pour le démarrer avec le débuggeur de w32dasm. Le logiciel se lance.Direction la boîte d'enregistrement. Saisissons pifoman / 123456.Ne faites pas encore OK.

        Revenons sous w32dasm. Ensuite SHIFT F12, entrons l'adresse 006A6339 -> OK puis sélectionnons la ligne de code où nous sommes arrivé et F2 (nous venons de mettre bp sur la ligne d'adresse 006A6339).Refaisons la même chose pour les 3 autres adresses trouvées précédemment 006A633F, 006A636E, 006A63A3. Pendant qu'on y est aussi mettons en un sur l'endroit où l'on saute à savoir la ligne de code d'adresse 006A63BA.

        Revenons à FTP Expert puis cliquons sur OK.Là nous entendons un bing.w32dasm vient de breaker sur la ligne de code d'adresse 006A6339 (notre premier bp posé). Ensuite qu'est ce qu'on fait ? Eh bien on regarde en faisant plusieurs fois F8 (traçage du programme ligne de code par ligne de code) quelle adresse parmi les 4 premiers bp posé saute vers l'adresse 006A63BA (la zone qui contient la phrase "mauvais code d'enregistrement"). C'est l'adresse 006A63A3.

 

:006A63A37515 jne 006A63BA
:006A63A5A104AE7300 mov eax, dword ptr [0073AE04]
:006A63AAC60000 mov byte ptr [eax], 00
:006A63AD8D4DF0 lea ecx, dword ptr [ebp-10]
:006A63B033D2 xor edx, edx
:006A63B28B45FC mov eax, dword ptr [ebp-04]
:006A63B5E8EE09FDFF call 00676DA8
 
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:006A6339(C), :006A633F(C), :006A636E(U), :006A63A3(C)
 
:006A63BAA104AE7300 mov eax, dword ptr [0073AE04]
:006A63BF803800 cmp byte ptr [eax], 00
:006A63C27445 je 006A6409
:006A63C4B203 mov dl, 03
 
* Possible StringData Ref from Code Obj ->"TSerialNumFrm.btnOKClick(Registration "
* ->"failed)"
 
:006A63C6B828656A00 mov eax, 006A6528
...
 
* Possible StringData Ref from Code Obj ->"Mauvais code d'enregistrement"
 
:006A63DBB864656A00 mov eax, 006A6564
...
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:006A63C2(C)
 
:006A6409B203 mov dl, 03
 
* Possible StringData Ref from Code Obj ->"TSerialNumFrm.btnOKClick(Registered "
* ->"successfully)"
 
:006A640BB88C656A00 mov eax, 006A658C

 

        Comme vous vous en doutez le vrai serial est calculé un peu avant d'arriver à l'adresse 006A63A3.On calcule d'abord le vrai serial, on le compare à celui entré dans la boîte d'enregistrement et on saute vers la zone d'affichage du résultat qui commence à l'adresse 006A63BA.En remontant dans le code vous voyez ces lignes de code

 

:006A63598B55C8 mov edx, dword ptr [ebp-38]
:006A635C8B45F0 mov eax, dword ptr [ebp-10]
:006A635FE8FCE9D5FF call 00404D60
:006A6364750A jne 006A6370
:006A6366A104AE7300 mov eax, dword ptr [0073AE04]
:006A636BC60000 mov byte ptr [eax], 00
:006A636EEB4A jmp 006A63BA
 

        Si vous faîtes plusieurs fois F9 pour provoquer l'affichage du message "mauvais code d'enregistrement" dans ftpxpert3.exe et que vous mettez un bp sur l'adresse 006A635F (avec F2) et que vous recliquez sur le bouton OK de la boîte d'enregistrement vous arrivez après plusieurs F9 sur 006A635F.En regardant ensuite la zone des registres en haut à gauche de la grande fenêtre du debugger vous voyez  que EDX = 00F6DA08 et EAX = 00FF4F40.EDX et EAX sont ici des adresses.Pour voir ce qu'elles contiennent mettez l'affichage sur On dans la grande fenêtre du debuggeur (le bouton en dessous de UA2 si ce n'est pas déja fait) et tapez en dessous de User Addr 2 par exemple 00FF4F40 (suivi de entrée).Vous voyez alors ceci

 

        [00FF4F38] - 00000001  ....
        [00FF4F3C] - 0000001b  ....
        [00FF4F40] - 32393337  7392
        [00FF4F44] - 472d4633  3F-G
        [00FF4F48] - 56583347  G3XV
        [00FF4F4C] - 33462d48  H-F3
        [00FF4F50] - 42463837  78FB
        [00FF4F54] - 3932322d  -229
        [00FF4F58] - 00464244  DBF.
        [00FF4F5C] - 0073c60c  ..s.

 

        Ca c'est très intéressant. Ce nombre ne ressemble t'il pas à un vrai serial (on remarquera les - révélateurs). Eh bien oui ! Le serial est 73923F-GG3XVH-F378FB-229DBF pour le nom pifoman (un serial est généralement calculé à partir du nom). Bon eh bien voila on a le code de déverrouillage et l'endroit où se fait la comparaison ie le call 00404D60 en 006A635F ! En effet à l'adresse EDX = 00F6DA08 on a 123456.Eh bien il n'y a qu'à annuler le saut en 006A6364 puisqu'après le call 00404D60 le programme saute vers 006A6370. Pourquoi est-ce intéressant d'annuler ce saut ?

 

        :006A63BA  A104AE7300    mov eax, dword ptr [0073AE04]
        :006A63BF   803800              cmp byte ptr [eax], 00
        :006A63C2   7445                  je 006A6409

 

        Parceque pour sauter vers "Registered successfully" dans le listing ci-dessus depuis 006A63C2 grâce au jump if equal to zero (instruction je 006A6409) il faut que l'on ai obtenu 0 dans l'instruction précédente à savoir l'instruction cmp byte ptr [eax], 00 ie que byte ptr [eax] - 00 = 00.Pour cela il faut que byte ptr [eax] = 00.Or si on annule le saut en 006A6364 on passe sur l'adresse 006A636B qui met exactement byte ptr [eax] à 00 (instruction mov byte ptr [eax], 00).

 

        Pour effectuer physiquement la modification ouvrez dans winhex une copie de ftpxpert3.exe.Placez vous dans winhex par ALT G -> 2A5764 sur l'offset 2A5764 (trouvé dans w32dasm en sélectionnant la ligne d'adresse 006A6364 et en regardant dans la barre de statut en bas où il y a marqué @offset) et remplacez le code hexadécimal en rouge suivant :

        :006A6364   750A     jne 006A6370
        remplacé par
        :006A6364   7500      jne 006A6366

        Enregistrez et lançez le programme modifié. Allez vous enregistrer avec pifoman/123456 puis OK. Cette fois-ci on est enregistré pour de bon. Le time-limit de 30 jours est par conséquent retiré (on est enregistré).

        Voila c'est fini !

 

REMARQUES FINALES

 

      -> En examinant le registre à la recherche de pifoman ou de 123456 je n'y ai trouvé aucune référence.En lançant l'utilitaire regmon.exe juste un peu avant FTP Expert pour tracer tous les échanges avec le registre je n'ai trouvé aucune clé qui ne contiennne l'enregistrement. Pour savoir où est marqué le couple pifoman/123456 j'ai donc lancé une recherche sur les derniers fichiers modifiés dans le système avant de d'entrer le couple pifoman/123456 dans le programme ftpxpert3.exe cracké. Eh là j'ai trouvé un fichier : le fichier

        C:\Documents and Settings\pifoman\Application Data\Visicom Media\FTP Expert\Settings.cfg

        C'est dedans sous forme binaire qu'est stocké le couple pifoman/123456. Supprimez ce fichier pour annuler l'enregistrement et re-saisir un nouveau code d'enregistrement par exemple le serial trouvé dans la session de debugging avec w32dasm. Entrez dans ftpxpert3.exe non craqué le couple suivant pifoman / 73923F-GG3XVH-F378FB-229DBF et OK. Le logiciel s'enregistre.C'était donc bien le bon serial (on s'en doutait déja !).

      -> Un conseil pour éviter le problème d'écriture sur fichier : désassemblez toujours une copie de l'exécutable à craquer et effectuez les modifications avec winhex dans l'exécutable d'origine. En effet w32dasm verrouille en écriture tout fichier ouvert dedans.

      -> Le désassemblage de "Copie de ftpxpert3.exe" est très long : 13 minutes avec un pentium III 1Ghz et 640 Mo de mémoire vive. Donc allez faire vous faire chauffer un chocolat en attendant ! Dès que c'est fini faites "Disassembler -> Save Disassembly Text File and Create Project File". Vous obtenez alors 2 fichiers "Copie de ftpxpert3.wpj" (2.00 Mo) et "Copie de ftpxpert3.alf" (68.9 Mo). A quoi est-ce que ça sert me direz vous ? Eh bien si vous êtes amené à fermer w32dasm pour une raison quelquonque ; au lieu de passer 13 minutes à attendre la fin d'un nouveau désassemblage de "Copie de ftpxpert3.exe" vous ne passerez qu'une seconde à désassembler le fichier "Copie de ftpxpert3.exe" en faisant dans w32dasm Project -> open Project File -> Copie de ftpxpert3.wpj.

 

CONCLUSION

 

         Dans ce cours vous apprenez à exploiter un message d'erreur donné lors de l'enregistrement du logiciel en fouillant dans les string data références du logiciel désassemblé.En remontant dans le code vous retrouvez ensuite l'endroit où se fait la comparaison du mauvais serial au vrai serial. Cette comparaison vous permet ensuite d'annuler un saut et ainsi de forcer l'enregistrement du logiciel.

 

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

 



pifoman




Nombre de visites depuis le 16/04/2005