Crackez Webexpert v.6 (6.01.2) Pêcher le Serial Number By Selima |
Info
Cible: webexpert v 6 un Puissant tool pour la conception de sites
web Date réalise :11 juin 2004 Adresse: http://www.visicommedia.com/ Tools Needed: - DeDe Delphi program analyzing tool
Lancer
Webexpert6.exe, une fenêtre s’ouvre avant le lancement définitif du
programme. On remarque
des limitations : Le
programme a besoin d’être enregistré, puis une limitation dans le temps,
le programme est un shareware, il offre une période d’essai de 30 jours,
au-delà de cette période le programme se débloque, pour le débloquer
commander le et payer le coder, il a sûrement besoin de votre argent pour
développer des softs. Pour des
raisons purement éducatives, on va cracker le programme pour découvrir les procédure de protections utilisées, et apprendre comment se
débarrasser d’un Nag gênant dans la période
d’essai pour ne pas nous harceler. Aller dans
Aide puis Enter la clé d’activation, un boite d’enregistrement s’ouvre,
entrer votre non et votre code fantoche, clic OK, une fenêtre surgit, vous
annonce, mauvaise clé d’activation Bien,
ouvrer W32dasm pour désassembler l’exécutable et chercher ce string Data.
Cette opération va durer plus que 20 minutes. Et bien pourqoi ? L’analyse
du programme avec studPe, ou mieux PeIdentifier,
nous révèle qu’il n’est ni packé ni
protégé et qu’il est codé en Delphi. Essayer de désassembler. Le code
des programmes en Delphi est
trop long, c’est pourquoi W32dasm a mis beaucoup de temps, la procédure de
désassemblage a duré plus que
20mn. Alors,
pourquoi ne pas utiliser un désassembleur adéquat ? mais quel
outil ? DeDe est notre tool
pour accomplir cette tache. Ouvrer
DeDe
choisissez notre cible Webexpert6.exe puis cliquer sur Process, lorsque le programme est complètement charger, cliquer sur
OK, DeDe décompile
notre application, valider la fenêtre {dump succesfull}, enfin cliquer sur « No » pour les deux fenêtres qui
s'affichent. Dans le
menu de la fenêtre de DeDe, cliquer sur
procédures. Dans la fenêtre de gauche, on cherche dans les procédures une
référence révélatrice, on
trouve une qui s'appelle "NoSerie", pour le
Name et TSerialNumFrm
pour Class Name. Cette procédure en fait, a pour
fonction le contrôle de l’enregistrement.On
clique dessus puis on se dirige vers la fenêtre de droite, TSerialNumFrm
s’affiche comme titre. Cliquer sur « Events » puis sur
Btn0kClick, on se trouve alors dans les procédures relatives aux
cliques sur le button OK On atterrit
dans cette partie du code. Apparemment, rien de spéciale sauf un
call. Dans le
haut de la fenêtre de gauche, on voit un +. Pour afficher l’arborescence,
on clique sur +, ou sur la flèche qui se dirige vers la droite, le niveau
bas s’affiche et la ligne du call est sélectionnée automatiquement. On
voit au dessus du call une
référence : [ Reference to : proc_00882500]
Si on clic
à gauche sur : proc_00882500, on est emmené tout droit vers le corps de la
procédure qui contrôle le Sérial number et par là l’enregistrement du
programme. On voit un
long listing si on jette un coup d’œil en bas on va découvrir des
informations importantes qui confirment qu’on est dans la bonne
voie. Fig1 Voila notre
string data de retour après votre tentative d’enregistrer le programme.
Plus en bas en découvre aussi le bon message Fig2
Dans Fig1,
on va que le mauvais message est appelé par un saut conditionnel JNZ
0088262E. on doit faire quelque chose pour ne pas arriver là.
On voit que
ce saut est activé par une comparaison juste en dessus. Le code compare
dword ptr [ ebp-28] à 0. dword ptr [ ebp-28] est un
pointer qui fait référence à notre code bidon, le programme teste
s’il est égale à 0, c’est à dire s’il est faux. Si c’est le cas le saut ne
s’exécute pas est le programme fait appel au Nag
qui affiche [ Mauvaise clé d’activation…],
si différent de zéro, il saute au-delà de cet affichage, vers le bon
message(Fig2). On peut
tester tout cela avec DeDE ? Dans la
fenêtre qui affiche la routine de la procédure "NoSerie", on double clic sur notre jnz, on peut voir que lorsque le s’exécute, il saute
au-delà du code qui gère l’affichage du message du
refus. Donc on
sait ce qu’on doit faire maintenant. Changer un seul byte. Inverser le
saut jnz, pour qu’il saute même si notre code
entré est invalide. Fire up ton hexa préféré, changer 7525 par 7425,
sauvegarder, lancer votre EXE patché, entrer
votre nom et n’importe quel code, valider, le programme est alors assigné
à votre Nom. Remarque :si vous voulez savoir la
correspondance de l’adresse virtuelle du jnz en
offset, dans la fenêtre principale de DeDe,
cliquer sur Tools puis sur RVA Converter, enter 00882607 dans la case RVA puis
cliquer sur Entrer l’adresse offset s’affiche sous Physical offset Récapitulatif : On a vu que
notre jnz était décisif dans le crack de notre
cible, et que juste avant le saut le programme comparait le vrai du faux
Serial number, donc à ce niveau là il était
capable de connaître le vrai Serial du faux. Mais par quel
billet ? Et bien par
le billet du call qui précede la comparaison. Il
fait appel à cette routine pour contrôler le code entré et le vrai code
qui correspond à notre nom, en sortant du Call le programme sait déjà si
notre code est vrai ou non. Vérifions
cette hypothèse : Pour
réaliser ce but on va quitter DeDe qui a
accompli sa mission pour céder la place à notre fameux OllyDbg. On charge Notre Webexpert6.exe non patché dans Ollydbg et on
pose un break point au niveau de notre call 0046C528 à l’adresse 008825FE.
Donc dans la fenêtre CPU , on fait
Ctrl+G , entrer 008825FE , Clic F9 une seule fois pour exécuter
le programme, valider le Nag par OK , dans
la barre du menu principale, un clic sur Aide puis sur Entrer la clé
d’activation, entrer votre nom et code bidon et validé, Ollydbg s’arrête sur notre Call. Push F7
pour entrer dans le call puis F8 pour tracer, dans la quarante quatrième
trace on arrive au call 004054B8 qui va nous dévoiler notre vrai Sérial Number qui correspond
à notre Nom et le place dans le Registre
EAX. Remarquer
que notre call initiale fait lui aussi à un sous call - 00882674 CALL004054B8 - qui gère
le vrai Serial. Alors si on veut pêcher notre bon Serial de la première
trace, on pose un breakpoint sur ce deuxième
call. Dans la
fenêtre CPU, faite un Ctrl+F2 pour recharger notre cible, une fois
réinitialisé, aller vers Wiew puis vers Breakpoints, une fenêtre s’affiche, clic sur la ligne
du premier call puis sur la barre d’espace pour le
désactiver. Fermer
cette fenêtre puis poser un BP sur notre call , Puis F9 pour exécuter le
programme, valider le Nag d’ouverture, puis
entrer vos donnés d’enregistrement, valider, le programme s’arrête au
niveau de notre call sans même
tracer, notre code qui
correspond au nom Willingness est affiche dans
la fenêtre Registre dans eax. Voila nos
Serial numbers
valides : Nom : DEAMON S.Num : « EEES-5FHB-SA2Z-ZZZZ
» Nom : devilZ S.Num : « VBBE-UGRJ-KHCZ-ZZZZ
» Nom : Willingness S.Num : « PFGQ-VVNJ-MJ8U-JQRT
» Nom : Selima S.Num : « RGHH-SGRX-UE2Z-ZZZZ
» ce tutorial
se termine pour laisser la place à ce qui veut continuer un tutorial sur le Keygening de Webexpert6. Greets : to DevilZ – Willingness – Deamon ( pour ces publications) et à tous ceux qui consacrent leurs temps à démocratiser le
savoir informatique sur le Net Juin
2004 Selima m.culture@netcourrier.com |