First Name: LUCIFER Last Name: 48 Password: JQPDOBB First Name: LUCIFER48 Last Name: FOR EVER Password: VOPZVZB Programme : Goldwave Cathégorie : Utilitaire PlateForme : Windows 95/NT Date : 21h, 25 juin 1998 Version : v3.24 Protection : Registration (via Serial Number) Fichier : Goldwave.exe Outils : Soft-ice v2.0 Ou ça? : CD PRO n°28 de PcTeam / http://www.goldwave.com Temps passé: Quelques secondes (+ quelques dizaines de minutes pour la rédaction) Cours : 05 - Menu Options / Register on remplie les trois cases. - On met un breakpoint BPX DIALOGBOXINDIRECTPARAM (ouf c'est long!), pourquoi ce bp et pas un autre? Parce que goldwave s'en sert! (comme beaucoup d'autres shareware) J'en rassure quelqu'uns, la méthode hmemcpy fonctionnerait mais serait beaucoup plus longue. - Je valide donc la boîte de dialogue de goldwave et ça revient sous soft-ice. En tracant un peu le message "Invalid registration. Please check your password and try agin" apparaît. Recliquer sur 'Ok' et maintenant il s'agit de se retrouver dans le code de goldwave. Via F10 (ou F12 qui sort du call en cours) on sort de la routine, on passe KERNEL32!_FREQASM, et on finit par y arriver. Nous sommes ici: XXXX:004249DD 8B4868 MOV ECX,[EAX+68] XXXX:004249E0 51 PUSH ECX XXXX:004249E1 E84FF60300 CALL 00464035 <--- On est enfin hors de ce call XXXX:004249E6 83C414 ADD ESP,14 Attention, selon la longueur de votre serial entrée le résultat du traçage ne sera pas le même, si votre serial bidon est trop petit, vous n'arriverez jamais dans le code de goldwave. (j'ai pris un serial de longueur 6) Je désactive mon breakpoint et j'en met un nouveau (BPX XXXX:004249E0 par exemple) au cas où on devrait recommencer la manipulation (c'est à dire, réentrer le nom, le serial...) Nous sommes donc dans le code du programme, nous allons donc remonter dans le code... XXXX:004249B1 8D95B4FEFFFF LEA EDX,[EBP+FFFFFFEB4] XXXX:004249B7 52 PUSH EDX XXXX:004249B8 E8A7F8FFFF CALL 00424264 <--- Key générateur XXXX:004249BD 59 POP ECX XXXX:004249BE 84C0 TEST AL,AL XXXX:004249C0 0F859C000000 JNZ 00424A62 <--- Si on saute alors le code est bon XXXX:004249C6 8B15D0594A00 MOV EDX,[004A59D0] Ce JNZ est la première instruction conditionnelle trouvée. Est-ce la bonne ? Et ce CALL que fait-il ?? Petite précaution on regarde l'instruction précente a l'adresse du saut JNZ (00424A62), c'est une instruction JMP, c'est donc bon signe. Avant le call on fait D EDX et on remarque que c'est l'adresse de nos données (nom, prénom et serial). Ce call ne prend donc qu'un seul argument et en ressort un unique qui est dans ECX Après le call, en faisant D ECX on s'aperçoit que c'est la même adresse qu'en EDX avant le call, cependant on regardant notre serial on s'aperçoit qu'il s'est maraculeusement transformé en VRAI serial valide.