|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ce cours est un reflet fidèle du cours intégré au crack de ma création de FTP Expert 3.61.0 fr
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
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 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 Remontons dans le code pour voir comment on arrive ici * Referenced by a (U)nconditional or (C)onditional Jump at Addresses: 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 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] 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 .... 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: 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
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.
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 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 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.
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 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 !
-> 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.
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. ![]()
|