|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ce cours est un reflet fidèle du cours intégré au crack de ma création de FTP Expert 3.70.0 fr
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
Offset Déplacement depuis le début de la zone de code d'un programme. EB 90
Détail des modifications ftpxpert3.exe
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 :
Remontons dans le code pour voir comment on est arrivé ici
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.
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
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 ....
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]
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 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 !
-> 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.
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.
![]()
|