Nom : CDRWin Version : 3.8a Disponibilité : www.goldenhawk.com Protection : limitations/nag/trial/serial Tutoriel par : Dark-Angel Outils : Softice 4.0 Windasm 8.93 Hedit 2.0 Cerveau (si disponible) Préparation...: ~~~~~~~~~~~~~~ Tout d'abord pour vous faciliter le boulot lorsque vous cracker un programme suivez ces quelques conseils...: * Faire une fonction backup dans le menu contextuel de windows lorsque vous séléctionnez le fichier (*.exe,*.dll ...) à cracker : Pour cela créez un fichier 'Backup.bat' dans votre répertoire 'c:\windows' le fichier 'Backup.bat' devra contenir les lignes suivantes: @echo off copy %1 *.DIS >null copy %1 *.BAK > null del null exit Aprés ceci ouvrez regedit.exe allez dans la clé 'HKEY_CLASSES_ROOT/*/shell/' et créer une nouvelle clé appellée 'Backup' dans cette clé créer encore une autre clé appellée 'command'. Puis modifier la valeur (défault) par le chemin d' accés à votre fichier 'Backup.bat', comme ceci : 'c:\windows\backup.bat %1'. Et Voilà maintenant quand vous voulez cracker un prog vous cliquer avec le bouton droit dessus vous sélectionner 'Backup' et 2 fichiers son créer un *.DIS qui peut etre utiliser pour le désassemblage et *.BAK qui sert de sauvegarde. Description: ~~~~~~~~~~~ Bon aprés une petite parenthése sur le moyen de faire un backup du fichier a craquer entrons dans le vif du sujet, à savoir la description du programme a cracker, ici il s'agit de CDRWIN 3.8a , un trés bon logiciel de gravure la version de demonstration est disponible sur le site www.goldenhawk.com.Un fois le programme installé on le lance et la deja une mauvaise surprise, un joli nag avec le message suivant : 'This program is currently in demonstration mode, all recording operation are restricted to 1X speed...' et le message se termine par : 'WARNING:This software is heavily protected against piracy......' AH,AH,AH (c'est trés marrant comme vous allez le voir au cours de ce tut).Une fois ce nag passé dés que l'on choisi une des 4 options de gravure on obtient le message suivant : 'This program is currently in demonstration mode....' et la vitesse du graveur est bloquée à 1X, ce qui est relativement enmerdant.On cherche donc le moyen de s'enregister, il y a justement une icone avec un cadenas et une clef on clique dessus, et la horreur il faut entrer une 'Unlock Key' et une 'Check Key' merde ca a l'air dur a cracker, mais on ne va pas se laisser abattre pour si peu. STEP 1 On désassemble avec Windasm et on recherche le message : 'This program is currently in demonstration mode....' dans les String Data References, il est trouvé a l'adresse 402DC4 : :00402DB7 A1642F4700 mov eax, dword ptr [00472F64] <=met la valeur de [00472F64] dans eax :00402DBC 85C0 test eax, eax :00402DBE 740E je 00402DCE <= si eax=0,alors le prog est enregistré et on saute le nag 'This program is .....' si eax est différent de 0 alors on continue l'exécution du programme et on tombe sur le call 455D62 qui nous affiche le nag. * Possible Reference to String Resource ID=00255: 'No tracks have been loaded.' :00402DC0 6AFF push FFFFFFFF :00402DC2 6A40 push 00000040 * Possible Reference to String Resource ID=00239: 'This program is currently in demonstration mode...' :00402DC4 68EF000000 push 000000EF :00402DC9 E8942F0500 call 00455D62 <= le nag 'This program ....' est appellé * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00402DBE(C) :00402DCE 6A00 push 00000000 <= si le programme est en registré (eax=0) il saute directement ici sinon il affiche le nag. :00402DD0 8D4C2404 lea ecx, dword ptr [esp+04] :00402DD4 E8A7EA0000 call 00411880 .........etc......etc....... on recherche la 2éme, la 3éme, la 4éme réference a 'This program is currently .....' et on tombe a chaque fois sur le même schéma,a savoir: la valeur de [00472F64] est mise en eax si la valeur est 0 alors le programme est enregistré et il saute donc le message 'This is currently in demonstration mode ...'.Si le programme n'est pas enregistré (donc eax different de 0) il ne saute pas et le programme continu de s'exécuter il tombe alors sur un call qui appelle la messagebox 'This program is ....' STEP 2 On reflechit alors trés fort (si si c'est dur mais il faut se forcer) et on se dit : la valeur de l'adresse 472F64 est chargé dans EAX si cette valeur est égale à 0 le programme est enregistré et donc le messages 'This program is currently ...' n'est pas affiché, donc le programme se base a cette valeur pour savoir si le programme est enregistré et afficher ou non le message 'This program is .....' et il de même pour afficher ou non le nag au lancement du programme et donc pour limiter ou non la vitesse de gravure. STEP 3 En fait le prog se sert de cette addresse (472F64) pour déterminer si l'utilisateur est enregistré ou pas (472F64=0 ===> utilisateur enregistré) . Comme nous sommes des utilisateurs non enregistés 472F64 différent de 0, mais il y a forcément un endroit dans le code où le prog met 472F64 à 0 lorsque l'utilisateur s'enregistre en entrant le bon serial number, il s'agit donc maintenant de trouver cet endrois et de forcer la valeur de l'adresse 472F64 à passer à 0. STEP 4 Pour cela on va trouver les endroits où l'addresse 472F64 est appelée par le prog, on va à l'option 'Search' et 'Find Text' de Windasm . On entre 472F64 et on cherche un truc du style 'mov dword ptr [00472F64],0' et on trouve a l'adresse 41F3C1: :0041F3AC 8B30 mov esi, dword ptr [eax] :0041F3AE 81F689347289 xor esi, 89723489 :0041F3B4 3BD6 cmp edx, esi :0041F3B6 740F je 0041F3C7 <=saute si le numero de serie n'est pas correct :0041F3B8 83C008 add eax, 00000008 :0041F3BB 41 inc ecx :0041F3BC 83F901 cmp ecx, 00000001 :0041F3BF 7CEB jl 0041F3AC :0041F3C1 893D642F4700 mov dword ptr [00472F64], edi <= met la valeur de EDI (0) à l'adresse 472F64 on va verifier si c'est bien l'endroit qu'on recherche en utilisant Softice.On lance le 'Symbol Loader' on choisit le fichier cdrwin.exe on clique sur 'load file' softice se lance on pose un BPX sur l'adresse 41F3AC et on relance le tout en appuiyant sur F5 softice se rebloque sur l'adresse voulu on descent alors lignes par lignes avec la touche F10 et lorsqu'on arrive sur la ligne JE 0041F3C7 on s'a remarque que le programme saute à l'adresse 41F3C7 sans passer par la mise du registre EDI a l'adresse 472F64 on en deduit donc que si l'on entre le bon numero de serie la valeur de EDI (0 car c'est le bon numero de serie) sera mise a l'adresse 472F64 et donc que motre programme sera enregistré.Pour ce faire nous devont enviter que le JE 0041F3C7 ne s'execute et donc le plus simple c'est encore de l'enlever, il suffit donc de remplacer JE 0041F3C7 par NOP donc de modifier le code Hexa de 740F en 9090 , il nous reste donc à patcher le prog pour cela on note l'offcet affiché en bas à droite de Windasm puis d'Hediter cdrwin.exe d'allez à l'offcet 1F3B6 et de remplacer le 740F par 9090 puis de sauvegarder. DARK-ANGEL Say a Big GReeTz to SiFLyiNG and TaMaMBoLo