II] SUPRESSION DU NAGSCREEN
1) un peu de théorie
ce qu'on va essayer de faire, c'est de supprimer le nagscreen (boite de
dialogue
qui te fait attendre et te dit que tu n'est pas enregistré au
lancement).
Cette methode n'est pas la meilleure puisque au final, on n'est pas
enregistré
mais on a simplement suprimé les symptomes de l'état non enregistré.
La structure du programme peut être shématisée comme cela:
exemple:
call1--> affiche le nagscreen puis la fenetre winzip (affiche le
nag)
.........call2 --> controle de la clef de registe pour le nagscreen
(affiche le nag)
..............call3 --> affiche le nagscreen si pas de clef ou clef non
valide (affiche le nag)
si on execute le programme pas à pas en commencant par le début, le
nagscreen
s'affiche quand on arrive sur le call1. On serait tenté de supprimer ce
call pour
empecher l'affichage du nagscreen, mais cela crérait une erreur
Pour réussir, il faut donc remonter le plus prés possible du call qui
affiche reellement
le nagscreen et le supprimer. (on peut peut être supprimer le call3 ou le call2).
2) la pratique
installez winzip et dezipez les fichiers d'ollydbg. Cliquez sur ollydbg.exe (icone rouge)
pour demarrer le debugger. Cliquez sur File, Open, et selectionez winzip32.exe
(normalement dans C:\program files\winzip). On obtient ca:
On execute le programme pas à pas avec la touche F8 (pour ne pas rentrer dans les call).
on appuye sur F8 jusqu'a ce que le nagscreen apparaisse(on peut laisser le doigt appuye
sur F8) quand le nagscreen de winzip apparait a l'ecran, on le quitte en cliquant sur sa
croix en haut a droite. Voila ce qu'on obtient dans la fenetre d'ollydbg:
ollydbg s'est arrette à la lgine 004A84FA (début de ligne en noir)
et la ligne juste au dessus, on voit CALL WINZIP32.00481393
c'est donc ce call qui a declenché l'affichage du nagscreen
On va mettre un breakpoint sur la ligne 004A84F5 en selectionnant
la ligne avec la souris puis en appuyant sur F2 (la ligne devient rouge)
remarque: un breakpoint est un point d'arret pour signifier au debugger
qu'on veut s'arreter a la ligne selectionnee
on peut donc lancer winzip avec F9, il s'arretera au niveau du breakpoint
on cliques sur le menu debug puis restart
la on cliques sur F9 pour executer le programme normalement. Ollydbg s'arrete sur
la ligne rouge (la ligne est rouge foncé car l'execution est arrétée à cet endroit)
au lieu de continuer l'execution du programme avec F8 comme tout a
l'heure, on appuie
une fois sur F7 pour rentrez à l'intérieur du call et on continue ensuite
a
executer les instructions avec F8 jusqu'a ce que le nag réapparaisse.
le nagscreen réapparait en 4813AF. Il est affiché par le CALL 4812A3.
On met un breakpoint sur ce call avec F2
remarque sur la gestion des breakpoints: un
breakpoint est signalé par une ligne rouge
on peut le
suprimer ou le remettre en selectionnant la ligne et en appuyant sur F2
si on veut
ajouter un breakpoint sans allez sur la ligne, on va dans le menu plugins,
command line,
command line, et on tape bp 47B491 pour mettre un breakpoint sur 47B491
On peut aussi
acceder a tous nos breakpoint en cliquant dans le menu View sur
breakpoints
On peut aussi desactiver ou reactiver un breakpoint en appuyant sur la barre d'espace
le call 9 (ligne grisée) est le dernier call, on ne peut pas aller plus loin, car si on rentre
dedans avec F7 on se retrouve dans la fonction DialogBoxParamA de User32.dll et
plus dans Winzip. En faisant quelques essais, on s'aperçoit qu'on peut patcher à partir
du call 5 (patcher avant n'est pas possible car winzip n'est pas suffisament initialisé)
le call 5
on va supprimer le call 5 à l'adresse 44661C. On double clic sur la ligne 44661CRemarque: ollydbg effectue une action
différente en fonction de l'endroit ou on cliques
sur la ligne (dessin ci
dessous)
une fenetre assemble at 44661C apparait. Cela va nous permettre de changer
l'instruction
on rentre nop et on tape sur entrée. L'instruction a été remplacé
par 4 lignes de nop...
Pour garder nos modifications en dur, on selectionne ce qu'on vient de modifier,
on fait un clic droit, et on cliques sur Copy to Executable-->selection.
Dans la fenetre qui apparait, on fait un clic droit et on selectionne save file et
on sauve avec le même nom. On vient de cracker winzip....
4) Pour faire plus joli
Dans le menu Help dans About Winzip, on voit ceci:
"This is an unregistered copy for Evaluation use only")
Avec un editeur hexadecimal, on peut rechercher cette phrase et la
supprimer pour faire plus joli...