Le Manuel Du CrAcKeuR ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Part 7 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ I-INTRODUCTION ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Après les fêtes de noël et une crise de foie me revoilà...mais je préviens: le premier qui me parle de chocolat je lui vomis dessus :(^^). ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ II-THE TOOLS OF THE TRADE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -W32Dasm v8.9 Tiens il y a une nouvelle version qui est sortie, je l'ai sur mon disque mais j'ai pas encore testé....c'est la 9.3 -Softice v3.2 Indispensable.... ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ III-GO AND FIGHT ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Une, deux, une, deux, une, deux, bon on reprend l'entrainement avec un logiciel pas mal du tout: *Borland Java Builder v2.00 Professionnel version Française* C'est un logiciel que j'ai trouvé sur un cd de ".net Pro"...magazine ceçi dit totalement nul si il n'y avait pas son CD... Bon donc on installe le prog....dans l'install il nous dit d'entrer 1789 comme sérial...là on doit surement pouvoir en entrer un autre qui nous installe directement la version illimité....m'enfin j'ai pas essayé... Donc on a installé le truc, on le lance.....hmmmm pas mal il mérite que je le garde plus de 30 jours =). Donc on augmente la date(on passe de 1998 à 1999 par ex) pis on look... Une horrible boite de dialogue nous indique que "Cette preversion de Java Builder a expirée"....mouais on verra ;). On lance donc "/JBuilder/bin/Jbuilder.exe" avec le Symbol Loader fournit avec Softice pour pouvoir tracer depuis le debut et chopper le call qui affiche la boite de dialogue...et donc on tombe sur ce call là: *********************************************** 0137:0056977C call 004343A0 0137:00569781 mov eax,[ebx] 0137:00569783 call 0043442C <--- Ce call là *********************************************** Bon on regarde autour et on voit pas de jz et autre jumps conditionnels...donc il faut rentrer dans le call....on double clique sur le call pour mettre un breakpoint et on relance le prog....et cette fois on trace dans le call avec F8 puis F10.... On trace, on trace et on finit par tomber sur ça: ******************************************************** jmp 004344AA mov dl,01 call 0042FF3C <--Call qui affiche la boite de dialogue ******************************************************** Il y a de plus pas mal de jz autour...mais si vous essayez de modifier un de ces jumps conditionnels vous vous rendrez compte que le prog ne se lance pas! Donc ce call n'est pas seulement là pour afficher la boite de dialogue mais bien pour initialiser le programme.... Donc vous effaçez votre precedent call(BC *) et vous double-cliquer sur ce nouveau call, histoire de mettre un nouveau breakpnt et d'aller encore plus en profondeur.... Donc vous recommençez tout le bazard, vous rentrez dans le call qu'on vient de breakpointer avec F8 et vous traçez pour trouver le call qui affichera la boite de dialogue...et vous tombez sur ça: ************************************* ret mov eax,ebx call 0042415C <-- Here is the call pop ebx ret ************************************* Bon n'effaçez pas tout de suite votre precedent breakpoint, mettez en d'abord un nouveau sur ce call et faite Ctrl+D.....et là quesque vous voyez? Le break- point qu'on vient de mettre arrête plusieurs fois le programme...et ça ce n'est pas bon du tout....en fait il s'aggit surement d'une boucle qui a pour but d'initialiser le programme :(. Donc on efface le dernier breakpoint qu'on a mit(sur le call 0042415C) et on relance encore une fois le prog.... Bon là on touche presque au but...le breakpoint que nous avons mit nous permet de mieux preciser l'endroit ou se trouvera l'apparition de la fenêtre mais en traçant cela ne marche pas....il faut donc rajouter un autre breakpoint...essayons Bpx MessageBox...marche pas....hmmmm...il s'agit sans doute d'une fenêtre normale....essayons Bpx ShowWindow....BINGO!!! Le programme s'arrête...et si on appuit sur Ctrl+D il attend que nous cliquions sur OK....il s'agit donc de toute évidence de la bonne fenêtre =). Bon une fois que le programme a stoppé vous effaçez ce breakpoint car windows a tendance a l'appeler dès que vous cliquez sur la fenêtre...(BL pour avoir la liste des breakpoints, et BC pour effacer un breakpoint)... Et vous appuyez sur F12 jusqu'a revenir dans le code du programme de JBuilder.exe....dans les 0137:004XXXXX...et vous tombez sur ça ********************************************** push eax push 004EEE5C call ebx <-- this is the fucking call test al,al <-- vous vous retrouvez là.... ********************************************** Voilà donc the fucking call qui nous appelle cette fucking fenêtre(ha vraiment, le language des jeunes!!!)...bon si on nop le "call ebx"....le programme se lance sans limitation....mais il y a des push au dessus, faudrait les nopper aussi sinon il y a des risques de stack overflow(depassement de pile, allez apprendre l'asm j'vous dit)...et pis ça fait pas bien nickel tout ça ;). Donc on efface tout les precedents breakpoints(BC *) et on en met un sur ce call ebx...et on rentre dedans avec F8(vous commencez à en avoir l'habitude non??)...et on tombe sur du jolie code comme d'ab: *********************************************************************** mov ecx,[EBP+10] mov edx,[EBP+0C] <-- Sans doute la date mov eax,[EBP+08] call 00C2D594 <-- Hello i'm here to annoy you mov ebx,eax test bl,bl <-- haaaa enfin un beau test ;) jnz 00C2DBAE <-- Si t'es pas gentil tu ira dormir sans soupe mov eax,00C2DBC0 <-- "Cette preversion a expirée" call 00C2C37C <-- Je te le montre avec ma belle boite de dialogue *********************************************************************** Notez qqchose de très important, regardez dans le titre de la fenêtre ou vous pouvez entrez les commandes softice....il est écrit: BLDINFO!CODE+0002CB8C En fait nous ne sommes plus dans Jbuilder.exe mais dans Bldinfo.dll, une bibliothéque utilisé par Jbuilder.exe qui se trouve dans le mêmme repertoire. Revenons à notre code... Donc on repere...le resultat du test de la date est renvoyé dans eax... eax est copié dans ebx, qui est lui testé pour voir si il est à 0...si il n'est pas à 0 alors il saute et se suicide...euh keske je raconte??? Si il est pas à 0(donc à 1 par ex) il n'affiche pas la boite de dialogue et continue à fonctionner... Les petits "malins" qui ont lus mes premiers tutorials diront..."mais boss, il y a qu'a changer le jnz en jmp...et pis ça roule...". Bein non mes ptits gars...car c'est bl qui est testé....et pourquoi croyez vous qu'ils aient choisit de tester bl....et bein pour tester eax plus tard pour verifier que des ptits crackeurs n'auraient pas voulus se foutre d'eux(non mais des fois!!) Donc il faut modifier qqchose pour que eax soit tout le temps à 1 avant que le mov ebx,eax soit executé....bein on quitte softice, et on va desassembler Bldinfo.dll... On regarde dans les chaines de caractères et on trouve effectivement "Cette prev"...donc on double clique dessus et on se retrouve au mêmme endroit que tout à l'heure avec Softice =)....on rentre dans le call qui suit les 3 mov... Et pis là on fait les modifications necessaires....tout ce qu'on a à faire c'est de mettre eax à 1 et de faire un ret non? Bein on modifit les octect suivants avec Fxedit: ******************************** 55 8B EC 81 C4 B4 FE FF FF 53 56 ******************************** en ************************************************************ B8 01 00 00 00 mov eax,00000001 C3 ret FE FF FF FF > ne veut rien dire mais de toute façon ne 53 56 > sera jamais executé =) ************************************************************ Donc tout ce que fera ce call c'est mettre eax à 1(ret qui le call)... On lance et....ça marche impec, et ça c'est clean les aminches ;) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ IV-CONCLUSION ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Je ne dirais qu'une chose: professionnel...mon cul!!! SaTaNiK http://www.multimania.com/gripsou/