|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ce cours est un reflet fidèle du cours intégré au crack de ma création de WebCopier 4.2 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 WebCopier.exe
Détail des modifications WebCopier Pro.exe
Détail des modifications French.wlg
WebCopier.exe
On ouvre WebCopier.exe dans w32dasm. Dans w32dasm on inspecte les string data references de WebCopier.exe par ref -> String Data References. On voit une chaîne intéressante String Resource ID=65207: "You are running WebCopier Trial version.You may evaluate i" (en français "Vous utilisez la version d'essai de WebCopier.Vous devez l'évaluer"). Cette chaîne est intéressante car elle nous dit que le logiciel est en version d'essai. Nous on va chercher à faire passer le logiciel de la version d'essai à la version complète en retirant les limitations décrites plus haut. Si vous lancez le logiciel vous remarquez que cette chaîne apparaît seulement la première fois dans un nag-screen au démarrage de l'application.
a/ Localiser l'endroit où est stocké le marqueur de temps pour le time-limit Le logiciel comporte une limitation au niveau du temps d'utilisation qui est fixée à 15 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 vous ne pourrez pas aller plus loin : le seul bouton actif après les 15 jours d'évaluation est un bouton close dans le nag-screen de démarrage. On se dit alors qu'en ramenant le logiciel à 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 WebCopier.exe pour savoir s'il doit se lancer ou se bloquer (passé les 15 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 WebCopier.exe avec le registre vous tapez dans la case include WebCopier.exe. Vous avancez la date du système de 1 an (après avoir ouvert WebCopier.exe une première fois pour initialiser le repère de temps) et vous lancez ensuite WebCopier.exe. Ensuite revenez à Regmon.exe.Vous tombez alors nez à nez sur la clef dans le registre où est stockée le marqueur de temps (il y a 3 marqueurs de temps fait : Data , Type1 et Type2). 3333 4.80438771 WebCopier.exe:3704 QueryValue Pour repasser le logiciel en version d'évaluation 15 jours il suffit alors d'effacer la clé
b/ Retirer le time-limit et le nag-screen de démarrage Si vous cliquez sur la phrase String Resource ID=65207: "You are running WebCopier Trial version.You may evaluate i" dans les string data references de WebCopier.exe (menu ref -> String Data References dans w32dasm) vous voyez que cette chaîne est appelée à 4 adresses 00401FEA, 004020FA, 00402347, 00467E3F.Avant d'aller plus loin on va d'abord charger par la commande CTRL L de w32dasm le programme WebCopier.exe en mémoire. Comme nous avions trouvé 4 adresses différentes et que l'on cherche à déterminer quelle adresse provoque l'affichage du message "You are running WebCopier Trial version.You may evaluate i" dans la boîte de dialogue au démarrage de l'application on va poser un bp (breakpoint ou encore point d'arrêt) sur chacune des 4 adresses. Pour cela cliquez sur le message "You are running WebCopier Trial version.You may evaluate i" dans les string data references et en appuyez sur la touche F2 du clavier en recommençant la manipulation 3 fois de suite.Voici les 4 adresses où vous avez posé un breakpoint.
Si vous démarrez le programme par la touche F9 de w32dasm vous voyez que c'est l'adresse 00467E3F qui provoque l'affichage du message "You are running WebCopier Trial version.You may evaluate i".Remontons dans le code pour voir comment on est arrivé en 00467E3F
Si vous regardez l'adresse à côté du Referenced by vous constatez que c'est par l'adresse 00404F56 que vous arrivez à exécuter l'adresse 00467E3F.Terminons la session de debugging dans w32dasm par CTRL T (T pour Terminate) puis redémarrons en une nouvelle par CTRL L. Effaçons tous les bp posés en cliquant sur le bouton Clear à droite Bpts dans la grande fenêtre du debugger (c'est la fenêtre qui s'était ouverte quand on avait fait CTRL L dans w32dasm) puis posons un bp sur l'adresse 00404F56 (SHIFT F12 -> 00404F56 -> OK -> F2). On va étudier ce qui se passe après le chargement du message "You are running WebCopier Trial version.You may evaluate i".Démarrez le débugguing avec F9 puis après le break de w32dasm sur l'adresse 00404F56 faîtes des F8 successifs (exécution ligne de code par ligne de code sans entrer dans les calls mais en les exécutant quand même).
Si on est toujours dans la période d'évaluation de 15 jours le programme quand vous arrivez sur l'adresse 00404F81 le programme saute vers l'adresse 00404FBE et déclenche l'affichage de la boîte de dialogue "You are running WebCopier Trial version.You may evaluate i" en 00404FF4. Si vous êtes en dehors de la période d'évaluation 15 jours (avancez par exemple pendule en bas à droite de votre écran d'un an) le programme quand vous arrivez sur l'adresse 00404F77 le programme saute vers l'adresse 00404FF8 et déclenche l'affichage de la boîte de dialogue "You have reached the end of your 15 days trial period." en 00405015 à la suite de laquelle on ne peut plus lancer le programme. On remarque aussi dans les 2 cas de figure que si on saute tout le temps depuis 00404F85 vers 00404FA8 on évite systématiquement l'appel à l'API USER32.SendMessageA qui affiche la boîte de dialogue en la survolant avec un saut depuis l'adresse 00404FBC. Eh bien voila pour retirer le time-limit de 15 jours et le nag screen il suffit dans une copie de WebCopier.exe ouverte dans winhex de remplacer à partir de l'offset 4F77 par la commande ALT G -> 4F77 le code hexadécimal en rouge suivant avec les 3 octets blancs (l'offset 4F77 est donné la barre de statut en bas dans w32dasm quand vous sélectionnez la ligne d'adresse 00404F77). :00404F77 747F je 00404FF8 remplacé par :00404F77 7400 je 00404FF9
c/ Retirer le mot TRIAL dans la barre de titre et le menu help -> about. Dans cette partie on ne va travailler qu'avec l'éditeur hexadécimal winhex. On ouvre copie de WebCopier.exe si ce n'est pas déja fait dans winhex et on cherche par la commande de winhex CTRL F l'expression TRIAL version pour voir où est chargé le TRIAL version dans la barre de titre de copie de WebCopier.exe.On le trouve à l'offset 126CF2 avec le mot WebCopier qui le précède. Pour dire au logiciel de terminer la lecture de la chaîne WebCopier TRIAL version après WebCopier et non pas après le WebCopier TRIAL version il suffit de remplacer à l'offset 126CF1 le code hexadécimal 20 par 00 (le code 20 est code hexadécimal pour un espace et le code 00 est le code pour les fin de chaînes). Malheureusement si vous lancez le programme en faisant la modification en 126CF1 le programme détecte que la chaîne dans la barre de titre a été modifiée en fermant par exemple le programme si vous cliquez sur le bouton New Project. Après plusieurs tests sur WebCopier TRIAL version (permutation de mots, transformation des majuscules en minuscules) on voit que le programme détecte la modification du titre du programme seulement si le mot TRIAL n'a pas été trouvé dans le titre.On aperçoit dans le code hexadécimal un peu plus bas à l'offset 126D44 une chaîne TRIAL toute seule qui n'est attaché à aucune autre chaîne. Bizarre ! Et si le programme faisait la comparaison entre le TRIAL du WebCopier TRIAL version et ce TRIAL pour savoir si le titre de l'application a été modifié ? Faisons le test suivant : mettons 00 en 126CF1 et remplaçons le TRIAL en 126D44 par WebCo (WebCo est dans le nouveau titre WebCopier qu'on veut afficher) puis relançons copie de WebCopier.exe ainsi modifiée. Bingo ! L'hypothèse se vérifie :). Il faut donc écrire WebCo à partir de l'offset 126D44. De même pour le TRIAL version du menu help -> about utilisez la commande de winhex CTRL F -> TRIAL version avec cette fois-ci l'option Jeu de caractères unicode cochée.Vous tombez à l'offset 171CB8. Remplacez alors TRIAL version %s par version %s en complétant avec des 20 jusqu'à la fin normale de la chaîne en 171CD6.
d/ Retirer le message d'évaluation dans le menu help -> about. Dans cette partie on ne va travailler qu'avec l'éditeur hexadécimal winhex. On ouvre copie de WebCopier.exe si ce n'est pas déja fait dans winhex et on cherche par la commande de winhex CTRL F l'expression You may EVALUATE the program for %d days. l'option Jeu de caractères unicode cochée. Vous tombez sur l'offset 171D88. Il suffit alors de remplacer toutes les lettres de cette expression par des blancs (le code 00 en 171D88 empêche ici l'affichage du menu help -> about) jusqu'à l'offset 171E1A inclus.
e/ Enregistrer le logiciel à son nom dans le menu help -> about. Dans cette partie on ne va travailler qu'avec l'éditeur hexadécimal winhex. On ouvre copie de WebCopier.exe si ce n'est pas déja fait dans winhex et on se place sur l'offset 171E1A correspondant à la fin de l'expression After that you must register it. qu'on vient d'effacer en d/ et on écrit une case sur 2 à l'envers l'expression Registered to Pifoman (le R de Registered doit être en 171DF2) en ajoutant en 171DF0 le code hexadécimal 0A (code hexadécimal pour le retour à la ligne).Pourquoi est ce qu'on écrit à l'envers les lettres à partir de la fin ? C'est pour aligner Registered to Pifoman au milieu de la fenêtre help -> about.
f/ La version française Les messages qu'on a modifiés dans le menu help -> about ne sont plus les mêmes dans la version française.Ils sont en plus gérés par le fichier French.wlg. Pour passer le logiciel en français allez dans les menu Edit -> WebCopier Option -> bouton language -> French. Ouvrez French.wlg dans winhex et cherchez par la commande de winhex CTRL F l'expression version d'essai. Vous tombez sur l'offset BFD. Il suffit alors de remplacer l'expression version d'essai %s par exemple par version %s suivi du code hexadécimal 00. Ouvrez French.wlg dans winhex et cherchez par la commande de winhex CTRL F l'expression Vous pouvez tester ce programme pendant %d jours. Vous tombez sur l'offset C72. Il suffit alors de remplacer cette expression par Enregistré à Pifoman suivi de 00 en précédant le Enregistré en C72 par le code 0A (code hexadécimal pour le retour à la ligne).
WebCopier Pro.exe
Le raisonnement utilisé pour craquer WebCopier.exe est exactement le même pour craquer WebCopier Pro.exe. Je met la solution sans la commenter.
a/ Localiser l'endroit où est stocké le marqueur de temps pour le time-limit Pour repasser le logiciel en version d'évaluation 15 jours il suffit d'effacer cette fois cette clé
b/ Retirer le time-limit et le nag-screen de démarrage :00404EB7 747F je 00404F38 remplacé à l'offset 4EB7 dans winhex par :00404EB7 7400 je 00404EB9
c/ Retirer le mot TRIAL dans la barre de titre et le menu help -> about. Offset 135E15 mettre 00 à la place de 20 avant le mot TRIAL dans l'expression WebCopier Pro TRIAL version. Offset 1BE814 TRIAL version %s devient version %s complété avec des codes hexadécimal 20 jusqu'en 1BE832.
d/ Retirer le message d'évaluation dans le menu help -> about. Offset 180D88 You may EVALUATE the program for %d days.After that remplacé par des blancs.
e/ Enregistrer le logiciel à son nom dans le menu help -> about. Offset 180DF2 you must register it remplacé par Registered to Pifoman en mettant 0A en 180DF0
f/ La version française Idem que dans WebCopier.exe
Ce cours vous appris à manipuler le débugger fourni avec le désassembleur w32dasm en mettant des points d'arrêt sur WebCopier.exe. Ces points d'arrêt issus de l'étude des string data reférences permettent de localiser l'endroit dans le programme où se fait la comparaison entre la date d'installation et la date d'utilisation (time-limit) ainsi que l'endroit où est déclenché l'affichage du nag-screen. La deuxième partie du cours de cracking traite du menu help -> about de WebCopier.exe que l'on a refait à notre guise en changeant le texte affiché dans la version anglaise et la version française. J'ai terminé le cours en vous montrant que la version de base et la version porfessionnelle de WebCopier se craquent de la même manière.
Bonne soirée à tous. ![]()
|