Tutorial
de Cracking
|
Pour etre plus
concret, on a vu que JE =75
en hexa...Eh ben 75,
c'est 1 byte ;)
Pourquoi a-t-on besoin de l'offset ?
Souvenez vous du dernier
cours...on a fait une recherche sur 85C0742E8D84
alors qu'on voulait juste trouver le code 742E...Si
on avait utilisé l'offset, on aurait pu aller directement a l'endroit voulu,
sans taper des ribambelles de code hexa...
C'est cool, mais ou on le trouve cet offset ?

(NB:
Agrandissez votre fenêtre Wdasm si vous ne voyez pas de barre d'etat...)
Bon, maintenant
il faut que je vous explique comment on se sert de l'offset :
Prenons
une ligne en exemple... :

Le
petit h a coté de l'offset, ca ne vous sert a rien, vous l'oubliez :)
Et
tous les zéros avant le premier chiffre, vous pouvez les oublier aussi :)
On
se retrouve donc avec un offset qui est 2F65
A quoi correspond cet offset ?
NON ! Je vous ai dit que l'offset est
l'adresse hexadecimal d'un byte !
Mais alors c'est quoi cet offset ?
Donc 2F65
est l'offset de 0F
Ok! Mais alors, les autres byte de la ligne, c'est quoi leur adresse ?
En decimale, on compte
de 0 a 9 (0 1 2 3 4 5 6 7 8 9), d'ou decimale : il y a dix chiffres...
En Hexa,
on compte de 0 a F (0 1 2 3 4 5 6 7 8 9 A B C D E F), donc seize chiffres...
Maintenant,
on va determiner les offsets de chaque byte de la ligne 0F8478010000
:
Tiens, un truc pour verifier que vous ne vous êtes pas trompé
: regardez la ligne suivante :

Bon, maintenant
que vous savez ce qu'est un Offset, vous aller pouvoir vous en servir !
J'en fais quoi de cet offset ?
Comme
ca, ca vous évite de taper plein de valeurs Hexadecimales...
Voici les menus
concernés pour 2 éditeurs :
Et si je veux connaitre l'offset d'un byte depuis l'editeur Hexa, je fais comment ?


Et cet "Offset", ca sert qu'a trouver un byte en hexa ?
Donc, la principale
utilité de rechercher l'offset, c'est de faire un crack grâce à notre
petit code :)
Et notre code source, il est expliqué dans le 5eme Tutorial de Cracking !!
Bon, alors comment on fait ?
Vous savez qu'on peut annuler un nombre par son inverse ?
Par exemple, si
on prend 34,
on peut l'annuler avec -34
Facile,
non ? Eh bien, pour un saut conditionnel, c'est le meme principe !
Ainsi,
un JE est annulé
par un JNE...
De
meme, un JNE
est annulé par un JE
!
Comment ca se traduit en hexadecimal ?
Pour annuler un 74,
on va mettre un 75
! (RAPPEL: 74=JE et 75=JNE)
Pour annuler un 0F84xxxxxx,
on va mettre un 0F85xxxxxx
(RAPPEL: 0F84=JE et 0F85=JNE)
Réciproquement, pour annuler un 75,
on va mettre un 74...
Et
pour annuler un 0F85xxxxxx,
on va mettre un 0F84xxxxxx !
Normalement,
vous devriez comprendre sans problème... ;)
Ok! Mais pourquoi "annuler" au lieu de "nopper" ?
Ca fait quand même plus propre, non ? Et puis surtout, vous verrez que quand
vous allez écrire la source du crack, ca sera moins fastidieux : 1 ligne au
lieu de 6.

Si
on efface le nom de la fenetre dans le code hexadecimal, elle n'apparaitra plus
au lancement du programme...tout simplement...Donc plus de nag-screen...
Comment je retrouve le "Register!"
en hexadecimal ?
Dans
votre editeur hexadecimal, il suffit de faire une recherche sur ce mot !

Ben alors ?? Pourquoi ca marche pas ?
Et
alors? allez vous me dire...ben en 32 bit, vous
devez sépare chaque byte de lettre par un byte "00"...
Ohlala
! c'est quoi ca ?! Rassurez-vous, vous allez comprendre
en regardant l'écran suivant :

Et a l'avenir, comment je
pourrais savoir qu'un programme est en 16bits ou en 32bits ?
Et
bien c'est simple : en general, les programmes windows 9x sont tous en 32bits,
sauf quelque uns...
Si c'est un programme Windows 3.x ou DOS, c'est forcement
du 16bits...
Au pire des cas, si vous savez pas, ben vous essayer les deux
méthodes ! Compris ?...
Ok! Je fais quoi maintenant
?
Eh
bien maintenant, il faut remplacer les valeurs hexadecimales des lettres par des
zéros...
Si vous comprenez pas, regardez les deux ecran ci-dessous :


_______
OK! ca marche, mais la fenetre
principal du programme, pourquoi elle n'apparait plus ?
Ah...ca
c'est le petit inconvénient de la technique...rappelez-vous :
Quand on lance
StartClean, il faut cliquez sur "OK" dans le Nag-screen avant de pouvoir
accéder a la fenêtre principale... Mais nous, on a viré le nag, donc on ne peut
plus appuyer sur "OK", donc le programme ne se lance plus...logique
!
Alors quel interet de nous
faire un cours sur un truc qui ne marche pas !
Du
calme !! Qui a dit que ca ne marchait pas ? On a bien virer la fenetre non ?
En fait, ce qui nous gêne, c'est juste qu'on peut pas appuyer sur le bouton
"OK"... D'ou la caracteristique suivante :
Donc dans le cas ou
le nag-screen est "au dessus" du programme deja lancé, cette
technique marche parfaitement... ;) Par contre, n'abusez pas de cette methode
car elle n'est pas tres "fine"...C'est même plutot bourin... Personnellement
je ne l'utilise que dans les cas ou toutes mes autres tentatives ont echouées...
Vous
savez, les VBRUN300.DLL et autres MSVBVM50.DLL...Et c'est pour ca que quand
vous allez decompiler le programme vous allez rien voir dans les "Data
String References"...
Il y a aussi d'autres programmes qui ne possèdent
pas de Data String (bien qu'il ne soit pas programmer en VisualBasic). Dans
ce cas, essayez de voir si le code n'est pas contenu dans un fichier DLL annexe...
Sinon,
considerez qu'il n'y a rien a faire (ca serait bien trop dur a expliquer a votre
stade actuel).
Nous aborderons le sujet dans un prochain numero...
Ceci
dit, si vous etes confronter a un nag-screen, vous pouvez toujours essayer la
technique décrite précédemment ! Avec un peu de chance, ça peut marcher :)
Maintenant,
à vous de vous faire les dents sur des sharewares...
Commencez par des petites
production, parceque sinon, vous risquez de désesperer rapidement !
En effet,
les grand logiciels (ACDSee, Paint Shop Pro ....) sont très difficile à cracker
pour un debutant.
En fait, je dirais meme que vous n'y parviendrez pas avant
un bon bout de temps...
Mais tout arrive avec le temps ;) Donc patience...
Et surtout bonne chance !
Mais avant de vous lancer dans l'aventure, passez
par le dernier cours !
Vous y apprendrez comment faire vos propres crack a
l'aide d'un code source qu'on vous fournit :)