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.61.0 fr

 

INFOS SUR LE CRACK

 

Nom du prog

FTP Expert 3.61.0

Editeur

http://www.visic.com/

Téléchargeable

http://www.visic.com/

Date du progMercredi 8 septembre 2004
Date du crackSamedi 4 décembre 2004
Réalisé parPifoman
Url site

http://crackinfrance.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

 

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.

 

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

006752B0

2746B0

1500Enregistrement 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 boite 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 à la zone 

        :006752E5 B202 mov dl, 02
        * Possible StringData Ref from Code Obj ->"Mauvais code d'enregistrement"
        :006752E7 B870546700 mov eax, 00675470
 

        Remontons dans le code pour voir comment on arrive ici

        * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
        |:00675245(C), :0067524B(C), :0067527A(U), :006752AF(C)
 

        On y arrive par les adresses 00675245, 0067524B, 0067527A, 006752AF. 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 et entrons l'adresse 00675245 -> OK puis sélectionnons la ligne de code où nous sommes arrivé et F2 (nous venons de mettre bp sur la ligne d'adresse 00675245).Refaisons la même chose pour les 3 autres adresses trouvées précédemment 067524B, 0067527A, 006752AF. Pendant qu'on y est aussi mettons en un sur l'endroit où l'on saute à savoir la ligne de code


        :006752C6 A1444F6F00   mov eax, dword ptr [006F4F44]
 

        Revenons à FTP Expert puis cliquons sur OK.La nous entendons un bing.w32dasm vient de breaker sur la ligne de code d'adresse 00675245 (notre premier bp posé). Ensuite qu'est ce qu'on fait. On va tracer le programme ligne de code par ligne de code pour voir ce qui se passe avec la touche F8 qui veut dire exécution pas à pas sans entrer dans les call mais en les exécutant quand même. Nous arrivons ici :
 

        :00675265 8B55C8           mov edx, dword ptr [ebp-38]
        :00675268 8B45F0           mov eax, dword ptr [ebp-10]
        :0067526B E884F6D8FF call 004048F4
 

        Avant d'exécuter le call 004048F4 (avec F8) on voit si on regarde le contenu du registre eax

        Remarque : 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) si vous voulez voir quelque chose dans les registres !!).
 

        [eax-00000008] -   00000001     ....
        [eax-00000004] -   0000001b     ....
        [eax+00000000] -  32393337     7392
        [eax+00000004] -  472d4633     3F-G
        [eax+00000008] -  56583347     G3XV
        [eax+0000000C] -  33462d48    H-F3
        [eax+00000010] -  42463837     78FB
        [eax+00000014] -  3932322d     -229
        [eax+00000018] -  00464244    DBF.
        [eax+0000001C] - 00f73dc8      .=..
        [eax+00000020] -  00000030    0...


        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 ! On pourrait s'arrêter là mais nous ce qu'on veut c'est craquer le programme. Donc on continue.

        On fait plusieurs fois F8 le programme arrive sur notre 5 ième point d'arrêt que l'on avait posé en 006752C6.
 

        * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
        |:00675245(C), :0067524B(C), :0067527A(U), :006752AF(C)
        :006752C6 A1444F6F00 mov eax, dword ptr [006F4F44]
 

        Si on fait F8 arrivé sur la ligne d'adresse 006752C6 et que l'on ragarde le contenu du registre EAX il contient une adresse qui est EAX=006F76E0.Interrogeons le contenu de cette adresse en entrant 006F76E0 dans la case User Addr 1 de la grande fenêtre du debuggeur et faisons entrée suivi d'un clic surle bouton UA1 pour voir le contenu de UA1 (UA1 pour User Addr 1).

        Remarque : on aurait pu directement cliquer sur le bouton eax dans la grande fenêtre du debugger au lieu de passer par le User Addr 1 pour interroger le registre EAX.On aurait une présentation différente [eax+00000000] au lieu de [006F76E0] mais la même valeur hexadécimale 00000001. On voit alors en utilisant le User Addr 1 ceci
 

[006F76CC] -ffffffff....
[006F76D0] -ffffffff....
[006F76D4]- ffffffff....
[006F76D8] -ffffffff....
[006F76DC] -00ef5bf8.[..
[006F76E0] -00000001....
[006F76E4] -00000000....
[006F76E8]- ffffffff....
[006F76EC] -ffffffff....
[006F76F0] -ffffffff....
[006F76F4] -ffffffff....

        Le contenu de l'adresse de 006F76E0 (ce qui se note en asm [006F76E0]) vaut 00000001 (Les crochets [ ] autour de 006F76E0 ça veut dire contenu de l'adresse 006F76E0). Regardons la suite du code après l'adresse 006752C6.
 

:006752C6 A1444F6F00 mov eax, dword ptr [006F4F44]
:006752CB 803800 cmp byte ptr [eax], 00
:006752CE 7445 je 00675315
:006752D0 B203 mov dl, 03
* Possible StringData Ref from Code Obj ->"TSerialNumFrm.btnOKClick(Registration "->"failed)"
...
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:006752CE(C)
:00675315 B203 mov dl, 03
* Possible StringData Ref from Code Obj
->"TSerialNumFrm.btnOKClick (Registered " ->"successfully)"
 

        Je crois que c'est clair.Pour ceux qu'on besoin d'explications supplémentaires je vais leur expliquer les lignes de code assembleur.

        006752C6 -> à cette adresse le contenu de l'adresse 006F4F44 qui vaut 00000001 est mis dans EAX

        006752CB -> à cette adresse le programme compare (instruction cmp) le premier byte du contenu de EAX (en assembleur c'est le byte ptr [eax]) au byte 00.Le premier byte de EAX ici est 01. Pourquoi 01 ? Parceque EAX qui contient 00000001 est un registre sur 4 octets. Les 4 octets en question sont ici 00 00 00 et 01. Le premier byte (ou octet) c'est le dernier de la suite de byte.

        006752CE -> à cette adresse le programme saute vers 00675315 à cause du jump if equal (en asm c'est le je dans je 00675315).En effet le résultat de la comparaison en 006752CB a donné faux c'est à dire 0 puisque 00 != 01 (ie byte ptr [eax]!= 00).Le je qui signifie jump if equal to 0 dans l'instruction qui précède (ici le cmp) va donc être interprété par le programme comme un saut vers l'adresse 00675315 puisque qu'on a obtenu 0 dans la comparaison.
 

        Maintenant on réfléchit. Le programme arrivé en 006752CE ne saute pas vers la section du programme où l'on a Registered successfully. Nous on veut être Registered successfully. On se dit alors naïvement eh bien qu'il n'y a qu'à forcer le saut depuis 006752CE vers 00675315 en remplaçant
 

        006752CE 7445 je 00675315
        par
        006752CE EB45 jmp 00675315
 

        Ce type de raisonnement n'est pas bon c'est pour cela que je vous le laisse à titre d'exemple. En effet en forçant le saut en 006752CE vous ne faites que remplacer un message par un autre "Mauvais code d'enregistrement" par "Merci...".Si vous ne me croyez pas faites le test avec winhex.Ouvrez ftpxpert3.exe dans winhex puis ALT G -> 2746CE (c'est l'offset obtenu avec w32dasm quand après avoir sélectionné la ligne d'adresse 006752CE vous avez regardé dans la barre de statut où c'est marqué @offset 002746CEh) puis remplacez 7445 par EB45.Ensuite enregistrez et lancez ftpxpert3.exe que vous venez de modifier.Allez dans la boîte d'enregistrement et en rentrant un nom et un serial bidon le logiciel suivit d'un clic sur OK le logiciel vous affiche "Merci de votre enregistrement.Le logiciel est maintenant assigné à votre nom". Seulement en allant dans le menu Aide->A propos de FTP Expert la période d'évaluation existe toujours !!!

        Reprenons une copie non modifiée du programme et réfléchissons cette fois de façon plus expérimentée. Le saut vers Registered successfully est conditionné par la valeur de EAX qui pour l'utilisateur qui a entré un bon serial est 00000000. Pour rappel on avait cmp byte ptr [eax], 00 en 006752CB et nous on avait 00000001 dans [EAX]. Remontons dans le code pour voir s'il y a moyen de forcer la valeur de [EAX] à 00000000.
 

:006752AF7515jne 006752C6
:006752B1 A1444F6F00 mov eax, dword ptr [006F4F44]
:006752B6 C60000 mov byte ptr [eax],00
:006752B9 8D4DF0 lea ecx, dword ptr [ebp-10]
:006752BC 33D2 xor edx, edx
:006752BE 8B45FC mov eax, dword ptr [ebp-04]
:006752C1 E88E09FDFF call 00645C54
 
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00675245(C), :0067524B(C), :0067527A(U), :006752AF(C)
 
:006752C6 A1444F6F00 mov eax, dword ptr [006F4F44]

 

        Dans notre session de debugging quand on fait plusieurs fois F8 le programme arrivé en 006752AF saute vers 006752C6.Regardez en 006752B6 qu'est ce que vous voyez ?

        :006752B6 C60000 mov byte ptr [eax], 00

        Eh bien c'est ce qu'on veut non ? On veut mettre 00 dans le premier byte de [EAX].C'est exactement ce qui est écrit. Bon voila il suffit d'annuler le saut en 006752AF en remplaçant

        7515 jne 006752C6
        par
        7500 jne 006752B1

        Dans la barre de statut on a l'offset de l'adresse 006752AF.C'est 2746AF.Allons dans winhex. Ouvrons ftpxpert3.exe et faisons ALT G->2746AF et remplaçons 7515 par 7500. Enregistrons et lançons le programme modifié. Allons nous 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 : pifoman/73923F-GG3XVH-F378FB-229DBF.Ouvrons pour cela FTP Expert non craqué et saisissons comme nom / code => pifoman / 73923F-GG3XVH-F378FB-229DBF et OK. Le logiciel s'enregistre c'était 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" (1.90 Mo) et "Copie de ftpxpert3.alf" (64.1 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 du 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 comme celui que j'ai fait sur gif movie gear vous avez la possibilité en exécutant le programme pas à pas à partir d'une certaine adresse fixée par avance par la recherche du message d'erreur apparu à l'enregistrement de trouver le bon serial pour un nom donné.

         Dans la seconde partie du tutorial je vous apprends par un raisonnement sur le contenu du registre EAX du microprocesseur à trouver l'adresse ou craquer la protection dans la routine d'enregistrement. Le crack consiste simplement à annuler un saut conditionnel.

 

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

 



pifoman




Nombre de visites depuis le 07/12/2004