888 ,e, e88'888 888,8, ,"Y88b e88'888 888 ee " 888 8e e88 888 d888 '8 888 " "8" 888 d888 '8 888 P 888 888 88b d888 888 Y888 , 888 ,ee 888 Y888 , 888 b 888 888 888 Y888 888 "88,e8' 888 "88 888 "88,e8' 888 8b 888 888 888 "88 888 , 88P "8",P" ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Programme : Windelete97 v4 Protection: Evaluation + Serial Ecrit par : LuCiFuGe RoFoCaLe Type de Crack: Patch + Serial + Reg Date : 07/1998 Niveau: Moyen moins ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Introduction: ÄÄÄÄÄÄÄÄÄÄÄÄÄ Me balladant pour une fois sur ircnet, un lecteur des mes precedents cours m'a demande de faire un cours sur ce soft. Je tiens a m'excuser pour le petit delais d'attente (2 semaines) mais j'avais d'autres projets a faire avant (Total Packager). Pour me faire pardonner, je vais vous faire un cours montrant plusieurs facon de cracker ce soft francais de surcroit :) Pour ce faire vous aurrez besoin de: - W32Dasm v8.9 [Thx to Revolt] - SoftIce v3.22 - le soft dispo sur http:// Phase D'approche: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Etudions le fonctionnement du soft: - Install Windelete - Lancer le, on repere tout de suite la belle fenetre TimeLock :) - on a le choix entre une periode d'essai a retirer ou un serial Time Trial: ÄÄÄÄÄÄÄÄÄÄÄ Phase Analyse: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ - deplacer l'horloge systeme afin d'obtenir "Time expired" - charger softice et faire bpx getlocaltime - tracer comme un malade jusqu'a l'apparition de la boite "time expired" :1001525F A1F01E0410 mov eax, dword ptr [10041EF0] :10015264 83B88C00000000 cmp dword ptr [eax+0000008C], 00000000 :1001526B 0F8489070000 je 100159FA :10015271 8BC8 mov ecx, eax :10015273 E8B8E7FFFF call 10013A30 :10015278 833DDC1E041000 cmp dword ptr [10041EDC], 00000000 regarde si egale a 0 :1001527F 7439 je 100152BA oui si time expired :10015281 8B8534FFFFFF mov eax, dword ptr [ebp+FFFFFF34] :10015287 50 push eax :10015288 E853FDFEFF call 10004FE0 :1001528D 8945E4 mov dword ptr [ebp-1C], eax :10015290 6A00 push 00000000 :10015292 6AFF push FFFFFFFF :10015294 6809070000 push 00000709 :10015299 8B0DE41E0410 mov ecx, dword ptr [10041EE4] :1001529F E82C390000 call 10018BD0 :100152A4 8945E4 mov dword ptr [ebp-1C], eax :100152A7 6A04 push 00000004 :100152A9 8D45E4 lea eax, dword ptr [ebp-1C] :100152AC 50 push eax :100152AD 8B0D780E0410 mov ecx, dword ptr [10040E78] :100152B3 E888E9FFFF call 10013C40 :100152B8 EB0F jmp 100152C9 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:1001527F(C) | :100152BA 8D8530FFFFFF lea eax, dword ptr [ebp+FFFFFF30] :100152C0 50 push eax :100152C1 E83AFCFEFF call 10004F00 Affiche la mauvaise boite :( :100152C6 8945E4 mov dword ptr [ebp-1C], eax * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:100152B8(U) | :100152C9 8B0DF01E0410 mov ecx, dword ptr [10041EF0] :100152CF E89CE7FFFF call 10013A70 :100152D4 8B45E4 mov eax, dword ptr [ebp-1C] :100152D7 50 push eax :100152D8 8B0DF01E0410 mov ecx, dword ptr [10041EF0] :100152DE E86DE8FFFF call 10013B50 Phase d'attaque: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ On essaye donc betement de forcer le passage sur la bonne routine en virant par exemple le je par un nop. Mais cela fait , windelete ne marche pas bien donc on peut en conclure que la version brutus n'est pas la bonne. Donc ressayons en mettant dans [10041EDC] la valeur 1, ce qui devrait forcer le passage vers la bonne routine. Cool la ca marche nickel :) donc on va faire tout simplement une modif dans la tl31inj.dll ... ben vi mais je l'ecris ou ma modif ?.... et bien on a plus besoin des instructions appelantes la mauvaise boite donc ca va faire : :10015278 833DDC1E041000 cmp dword ptr [10041EDC], 00000000 jmp 100152ba :1001527F 7439 je 100152BA jmp 10015281 ..... :100152BA 8D8530FFFFFF lea eax, dword ptr [ebp+FFFFFF30] mov dword ptr [10041EDC],00000001 :100152C0 50 push eax jmp 1001527F :100152C1 E83AFCFEFF call 10004F00 soit 833DDC1E041000 -> EB40 EB05 8D8530FFFFFF -> C705DC1E5E0001000000 50 E83AFCFEFF -> EBB4 voila pour le time trial , il y a sans aucun doute d'autres facons de faire peut etre moins bourrin ..mais perso si je veux pas faire bourrin je trouves un serial sinon je patches sans compter mes instructions :) l'importance c'est le resultat pas la facon d'y arriver (enfin tel est ma philosophie) un petit detail, il vous reste a virer le checksum sur la dll...il faut bien vous laisser un peu de boulot. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Serial: ÄÄÄÄÄÄÄ Phase d'approche: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ bon on a fait notre crack version brutus, maintenant essayons de se la jouer plus cool. On va donc essayer de trouver le serial de ce soft de merde car comme vous avez pu le remarquer, avec notre patch on a pas le droit a l'assistance technique (et moi comme je suis un peu polio j'en ai besoin). donc je vais essayer de m'enregistrer , je rentre : prenom: Lucifuge nom: Rofocale et j'obtiens une belle boite me disant que mon code est faux. Phase d'Analyse: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ je poses mon bpx messageboxa, et je retentes, j'appuies sur F12 et je reviens sur 100083A9 en memoire. Analysons ce qui nous a ammene a cette boite. :100082DB 8BE9 mov ebp, ecx :100082DD 57 push edi * Possible StringData Ref from Data Obj ->"L97QR" | :100082DE 6894840210 push 10028494 tiens c'est koi ca ??? :))) :100082E3 8D4C241C lea ecx, dword ptr [esp+1C] :100082E7 E894010100 call 10018480 :100082EC 8D7D64 lea edi, dword ptr [ebp+64] :100082EF C744242400000000 mov [esp+24], 00000000 :100082F7 8BCF mov ecx, edi :100082F9 E81A030100 call 10018618 :100082FE 8B742418 mov esi, dword ptr [esp+18] :10008302 8B07 mov eax, dword ptr [edi] * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10008326(C) | :10008304 8A10 mov dl, byte ptr [eax] :10008306 8A1E mov bl, byte ptr [esi] :10008308 8ACA mov cl, dl :1000830A 3AD3 cmp dl, bl compare les deux codes entre eux :1000830C 751E jne 1000832C :1000830E 84C9 test cl, cl :10008310 7416 je 10008328 :10008312 8A5001 mov dl, byte ptr [eax+01] :10008315 8A5E01 mov bl, byte ptr [esi+01] :10008318 8ACA mov cl, dl :1000831A 3AD3 cmp dl, bl :1000831C 750E jne 1000832C :1000831E 83C002 add eax, 00000002 :10008321 83C602 add esi, 00000002 :10008324 84C9 test cl, cl :10008326 75DC jne 10008304 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10008310(C) | :10008328 33C0 xor eax, eax :1000832A EB05 jmp 10008331 * Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:1000830C(C), :1000831C(C) | :1000832C 1BC0 sbb eax, eax :1000832E 83D8FF sbb eax, FFFFFFFF * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:1000832A(U) | :10008331 33C9 xor ecx, ecx :10008333 85C0 test eax, eax :10008335 0F94C1 sete cl :10008338 84C9 test cl, cl :1000833A 7412 je 1000834E :1000833C 8BCD mov ecx, ebp :1000833E E89D010000 call 100084E0 :10008343 6A01 push 00000001 :10008345 8BCD mov ecx, ebp :10008347 E8C4C70000 call 10014B10 :1000834C EB7D jmp 100083CB * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:1000833A(C) | :1000834E 8D4C2414 lea ecx, dword ptr [esp+14] :10008352 E8B5FF0000 call 1001830C :10008357 8D4C2410 lea ecx, dword ptr [esp+10] :1000835B C644242401 mov [esp+24], 01 :10008360 E8A7FF0000 call 1001830C * Possible Reference to String Resource ID=00113: "Ugyldig registrering." | :10008365 6A71 push 00000071 :10008367 8D4C2418 lea ecx, dword ptr [esp+18] :1000836B C644242802 mov [esp+28], 02 :10008370 E84D030100 call 100186C2 * Possible Reference to String Resource ID=00114: "Ugyldigt registreringsnummer" | :10008375 6A72 push 00000072 :10008377 8D4C2414 lea ecx, dword ptr [esp+14] :1000837B E842030100 call 100186C2 :10008380 E8E0060100 call 10018A65 :10008385 85C0 test eax, eax :10008387 740E je 10008397 :10008389 E8D7060100 call 10018A65 :1000838E 8B10 mov edx, dword ptr [eax] :10008390 8BC8 mov ecx, eax :10008392 FF527C call [edx+7C] :10008395 EB02 jmp 10008399 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10008387(C) | :10008397 33C0 xor eax, eax * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:10008395(U) | :10008399 8B4C2410 mov ecx, dword ptr [esp+10] :1000839D 8B542414 mov edx, dword ptr [esp+14] :100083A1 8B401C mov eax, dword ptr [eax+1C] :100083A4 6A00 push 00000000 :100083A6 51 push ecx :100083A7 52 push edx :100083A8 50 push eax * Reference To: USER32.MessageBoxA, Ord:0195h | :100083A9 FF1568190310 Call dword ptr [10031968] -> mauvaise boite alors la , on a affaire un simple code de merde meme pas calcule par rapport a son nom. celui ci est bien evidement "L97QR". Donc faites votre registration et ne me parlez plus de ce genre de protection a deux balles a tout jamais. NOTA: le fait d'enregistrer ce soft, cree dans la base de registre la cle suivante: [HKEY_LOCAL_MACHINE\Software\IMSI\WinDelete 97\REG] "REGISTERED"="TRUE" Ceci confirme mes dires. Deplus si vous avez depasse le time trial, vous ne pouvez meme plus acheter le soft. Donc acheter le avant ou faites le patch de la premiere partie celui ci vous permettra d'acheter le soft :) Skrew: j'esperes que ce cours t'auras convenu. LuCiFuGe RoFoCaLe [STYX] 1998