MemenTo
Cours de Crack
(2eme Partie)
Dans cette seconde partie de notre tutorial, nous allons aborder differents
raisonnement pour cracker, toujours avec StartClean...(le pauvre :( ). Dans
cette partie du cours, je m'adresse particulierement aux Newbies qui ont deja
essayer de cracker un truc mais qui ont pas reussi, sans comprendre
pourquoi...
Imaginez le contenu d'un programme :
Il y a des menus, un titre en
haut de la fenetre, une barre d'etat, des boites de dialogues....
Tous ces
elements contiennent du texte (menu "Fichier", "Erreur 806...")
Eh ben,
WinDasm permet de retrouver ce texte a l'interieur de l'executable !
C'est ce
que nous avons deja fait dans la premiere partie du cours (souvenez vous de la
recherche sur le mot "name"), sauf que maintenant, je vais expliquer un
raisonnement que beaucoup de newbies ont mais qui s'avere erroné...
Lorsque l'on rentre un code au pif, on tombe sur la boite de dialog
"Incorrect Code"...
Reflechissons donc deux secondes : ce message ne
s'affiche qu'a condition que le code soit faux...
Donc, si on arrive a
retrouver ce message, on pourrait faire en sorte qu'il ne s'affiche plus (en
"noppant" un saut conditionnel par exemple...) Essayons ce raisonement dans
WinDasm...:
Lancer Windasm.
Desassembler le fichier StartClean. (cf cours de crack
1)
Faites Refs => String Data
References....
Là, vous devriez avoir une petite fenetre comme celle ci :

Bon, balladez vous
dedans jusqu'a ce que vous trouviez la phrase "Incorrect
Code"...
Double cliquez sur cette phrase : vous
etes amenez a l'endroit precis ou on y fait reference !
Cependant, de la meme
maniere qu'il y avait plusieur fois le mot name dans le 1er cours, verifiez que
"Incorrect Code" n'est pas repetée plusieurs fois dans le
programme...(double cliquez plusieurs fois
dessus)
Par chance, il n'y a qu'une seule occurance a cette phrase
!
NB: S'il y avait eu plusieurs occurance, il aurait fallu
s'occuper de chacunes de ces occurances, ou alors determiner celle qui nous
interresse (cf 1ere partie du cours).
Bien, maintenant observons l'endroit ou on a atteri :

La ligne "Referenced by..." indique l'addresse qui nous a amenée ici,
c'est a dire depuis quelle endroit du programme est ce qu'on a sauté...Il y a un
"C" entre parenthese juste derriere l'addresse.
Ce
"C" signifie tout simplement "Conditional". Ca veut dire que c'est un
saut conditionnel qui nous a envoyé a cette partie du code. Reflechissons un
minimum : si on veut ne pas venir ici, il suffit de nopper ce vilain saut
!
On va donc aller a l'adresse indiquer par le "Referenced by....", a savoir 004027A3...Faites :
Goto => Goto Code Location... et rentrer l'adresse en
question...
Oh !! Le beau JE 004027C1 !! Bon, ben vous savez ce qu'on va faire :
On va nopper le saut :)
Donc, dans l'éditeur hexadecimal, vous aller cherchez
741C...cependant, il va falloir mettre plus d'instruction que "741C" parcequ'il
peut y avoir plusieurs fois "741C" dans le code Hexadecimale du programme
:)
Donc, on va cherchez "741C" en rajoutant un peu devant et un peu derriere
: 83C40485C0741CC7054C7240
NB: Si vous
comprenez pas d'ou sorte les chiffres avant et apres, faites le rapprochemment
avec le listing.
Une fois la recherche effectué, vous remplacez le 741C par 9090...
Maintenant, lancer le prog et enregistrer vous n'importe
comment : ca marche !!! Super !!!
Etes vous sur que ca marche vraiment
? Bien sur, le programme ne vous dit plus "Incorrect Code", mais etes vous pour
autant enregistrer ? Un seul moyen de le savoir : fermer le prog' et relancer
le...
Sniff!...ben non, ca a pas marcher :(...enfin, pas tout a fait...
Explication: En fait, tout ce qu'on a fait, c'est detourner le message
sensé nous indiquez que le code est incorecte...Ce message s'affiche lorsque le
programme sait deja qu'on a entrer un faux code.
Reprenons les choses
pas-a-pas :
On vous demande de rentrer un nom et un code...
Lorsque vous
cliquez sur "OK", le programme verifie le code :
Si il est bon, c'est cool et
vous etes enregistrer,
si il est pas bon, on vous previens par un petit
message que le code est mauvais...
Donc,s'il y a le message "Incorrect
Code", ca veut dire que le programme a deja determiner que le code etait
faux...Inutile donc d'essayer de changer le message qu'on nous affiche, c'est
bien avant qu'il faut agir :) Compris ??
Si j'ai pris le temps d'expliquer cette erreur, c'est parceque beaucoup de
Newbies tombent dans le piege lors de leur premiers crack. J'espere donc que ce
cours aura eclairer certains et prévenu d'autres sur les resultats d'un tel
raisonnement ;)
