MemenTo
Cours de Crack
(1ere Partie)
Notre objectif: tout vous expliquer de A à Z pour que vous
puissiez comprendre comment fonctionne le Cracking. Il va falloir que vous
lisiez bien tout attentivement de façon à bien comprendre le
cours...
Qu'est ce qu'un crack ?
Un crack, est un ch'tit programme qui va
modifier certains octets à certains emplacements du fichier cible de façon à
jouer à votre jeux préféré sans CD par exemple. Mais bon, passons aux choses
sérieuses, pour le crack qui suit, certaines fonctions ne seront pas expliquées
du fait de leurs compléxitées pour les débutants. (tout les bons cracker l'ont
étés un jour ;)
Pour faire votre premier crack, on a choisi un programme
super fastoche à cracker pour vous montrer un truc super classique, le saut
conditionnel ;))
Comme son nom l'indique, un saut conditionnel, est un
passage du programme en assembleur qui fait que, si une condition est remplie ou
non, un " saut "vers la suite du programme d'effectue ou non.
Par exemple,
une barre de défilement s'active a condition que vous cliquiez avec le
bouton de gauche de la souris...Ainsi, le bouton droit n'aura aucun
effet...
Voici le prog choisi; Start Clean
v1.2 (cliquez ici)
Ce
programme sert à supprimer les raccourcis qui ne menent nul part dans le menu
Démarrer.
Tout d'abord, il faut un logiciel, qui
s'appelle un désassembleur. Comme son nom l'indique, il sert à
désassembler un fichier de façon à le rendre lisible et plus tard
compréhensible. Pour ma part, j'utilise WinDasm 8.9 facile à trouver sur le net
:)
Il faut aussi se qu'on appelle un éditeur
hexadécimal. Comme son nom l'indique aussi, il sert à faire apparaitre un
fichier sous forme héxadécimal pour pouvoir remplacer un octet par un autre, de
façon a pouvoir quand même executer le prog après modification(s) précise(s).
Mon préferé est HexWorks 3.X, mais il y a ausi WinHex 8.3 dont le crack est
fourni sur le site ;)...N'importe quel éditeur hexadecimal fera l'affaire
:)
Enfin, il vous faudra dans tous les cas (enfin presque) un
cerveau réveillé et en état de marche ;)
Bon, passons au crack
D'abord, lancez StartClean. Au démarrage,
une fenêtre s'affiche pour pouvoir s'enregistrer. Mais le blèm c'est que vouz
avez peut être pas que ca à faire d'envoyer des tunes, d'ou le crack ;)
Donc, pour pouvoir voir le programme de façon lisible, il
faut l'ouvrir avec un désassembleur :)
Avant tout, faite une copie de
StartClean.exe
Lancez
WinDasm...
Comme c'est le premier lancement de WinDasm, il faut choisir
la fonte par default que l'on va utiliser...Faites :
Disassembler =>Font... => Select Font =>...
Et
pour sauvegarder la fonte choisie, faite :
Disassembler
=> Font => Save Default Font.
Allez cherchez ensuite la copie du fichier executable
STARTCLN.EXE de la façon suivante :
Disassembler => Open
File to Disassemble...;
double-cliquer sur la copie de startcln.exe
Ouch!
Ben ouais, c'est ca l'assembleur ;)
Ce sont de petites
instructions qui s'enchaînent pour former un tout, un programme.
L'assembleur est le language de programmation le plus bas. Quand vous
programmez que se soit en Delphi ou en C, tout est traduit en assembleur pour
que votre prog soit compréhensible par l' ordinateur, car ne l'oublions pas
l'assembleur, c'est le language machine par exellence. Ses avantages résident
dans le fait qu'il est tout de suite compris par la machine, ainsi, un
programme, même écrit en C sera exécuté moins rapidement que s'il avait été fait
en assembleur ( de quelques dixièmes de secondes, mais bon... ).
Ok, vous devez peut-être vous dire " bordèl c'est quoi ce truc, je quitte ça
et je retourne télécharger des cracks tous faits!" Si c'est ce que vous vous
dites, alors quittez ce tutorial, et vous serez obligé d'attendre sur le net que
les cracks sortent, et surtout, vous ratterez le plus important, la satisfaction
personnelle et le monde superbe qu'est l'assembleur.
Par contre si vous vous dites " bordèl c'est quoi ce truc,
c'est chelou mais j'ai quand même envie de savoir comment on s'y prend pour
cracker" ; alors la suite de ce tutorial est pour vous ;))
Bon, ce qui apparait à l'écran, s'appelle un
listing. C'est là dessus que l'ont va
étudier.
Récapitulons. En démarrant Start Clean, une option nous
propose de vous enregistrer. Allez-y et entrez un truc bidon puis faite Ok. Si
ça marche, c'est que vous avez un méga-bol du fait qu'il y des possibilitées
quasiment infines ! Sinon le prog vous affiche " Incorrect code !". Un saut
conditionnel est donc présent :)) Dans la boîte de dialogue en question où l'on
doit entrer son code et-tout, il y a deux cellules de saisie. Celle du nom et
celle du code ;) L'une s'appelle "name", et l'autre "code"
C'est à ce moment là que l'on va faire un ch'tit peut
d'assembleur...
Revenez a WinDasm.
Avant de lancer une recherche sur un
mot, on va se placer directement à l'entrée du prog, car ce qu'il y a
avant on s'en fou un peut ;) Pour ca, faites: Goto => Goto
Code Start...
Lancez ensuite une recherche automatique sur le mot
"name"; ( ne rentrez pas les guïllemets ), car il fait partie de la boîte de
dialogue se chargeant de la saisie du code. On pourrait aussi rechercher " code
"...
Pour faire cette recherche, faites: Search => Find
Text..
Et là, vous allez forcement tomber sur quelque chose.
Cependant, il se peut qu'il y ait plusieurs fois ce mot dans le
programme...donc, par mesure de prudence, faites "Suivant"
Vous verrez alors que vous arrivez a d'autre
endroit du programme...Alors, que choisir ??
Revenez au debut du code
( Goto => Goto Code Start..). Refaite une recherche
et arretez vous a la seconde occurance de " name " (qui doit etre trouvée a la
ligne 375), car elle se trouve à un endroit particulièrement interressant. Mais
alors pourquoi cet endroit est t-il si interessant ???
Parce que si l'on observe bien cette petite partie (ce qu'il y a avant et
apres...), on remarque que l'indication "*Reference
To: ADVAPI32. RegCreateKey, Ord: 00C6h "est affichée.
Cette indication
de fonction indique que Start Clean va inscrire un truc dans la base de registre
de Windows, sans doute votre nom et code...a condition que votre
code soit bon :)
Voyons voir ce listing...
L'instruction que l'on recherche est un saut conditionnel. En assembleur, ca
se traduit par :
JNE, JNZ... qui sont des
sauts appelé de "non egalité"...
JE, JZ....
qui sont des saut qui s'effectue en cas d'"egalité"...
Egalité
signifie ici "deux valeur identique"... Lorsque que le programme va comparez
votre code avec le vrai, il va indiquez si il sont "egaux" ou non...
Si le
saut est de forme JE, alors on dira que "le saut se
fait si les codes sont égaux".
Si le saut est de la forme JNE, alors on diras que "le saut se fait si les codes
ne sont pas egaux"...
Il existe un type de saut appelé
inconditionnel, c'est a dire que le saut s'effectue sans
conditions...
Ce saut s'ecrit JMP en
assembleur, mais cela ne nous serviras pas pour ce tutorial...
Donc, pour
revenir a StartClean, il va falloir qu'on trouve tout les sauts qu'il y a
dans le bout de code ci dessus, puis qu'on analyse ou est-ce qu'il nous font
sauter...
On est chanceux, ici il n'y a qu'un seul saut qui est a
l'adresse 004011EB, et qui est situé juste apres un
test (Un TEST est l'instruction qui determine si une valeur est egale a
zero...).
On a donc :

L'instruction JNE 00401271 signifie : "Sauter a l'adresse 00401271 si la
valeur testée n'est pas egale a zero."
Il y a fort a parier que la valeur
testee soit le numero de serie que vous avez rentrer au pif.
Il faut bien
comprendre que souvent, un numero de serie est considere comme valide lorsque la
valeur du test est egale a zero. Autrement, dans le cas ou le test n'est pas
egale a zero, alors ce numero est reconnu comme incorrecte... C'est un peu comme
le courant electrique : 0=ouvert et 1=fermer...Compris ?
Donc, "Sauter a
l'adresse 00401271 si la valeur testée n'est pas egale a zero." siginfie que si
le code est mauvais, on va "sauter" tout ce qu'il y a entre l'adresse 004011EB
(l'endroit d'où l'on saute) et l'adresse 00401271 (l'endroit ou le saut nous
amene...).
Regardez sur le listing...concretement, le saut va passer au
dessus de toutes la partie du programme qui inscrit notre nom et notre code dans
la base de registre...
Par contre, si le code est bon, le saut ne
s'effectue pas et le programme va continuer son listing en passant par " * Reference To: ADVAPI32.RegCreateKey " et
" * Reference To: ADVAPI32.RegCloseKey
" qui represente la procédure de création de votre code perso dans la
base de registre de Windows 9x. Cette étape est importante à
comprendre et si vous ne l'avez pas comprise relisez la plus
attentivement...
Donc, il va falloir que l'on modifie le saut jne
00401271
Dans ce cas de figure, il faut faire ce que l'on appelle
"nopper" une valeur :)
Mais avant, un p'tit cour sur l'héxadécimal
s'impose :))
L 'héxadécimal
D'abord oubliez la façon dons vous avez appris à compter. Parce qu' en héxa,
on compte le la façon suivante :
1 2 3 4 5 6 7 8 9 A B C D E F
Par exemple 15 en décimal s' ecrit F en héxadécimal. Mais pouquoi dit'on
héxadécimal ? Tout simplement parce qu' après les neufs premier chiffres il y à
six lettres, 6 d'où héxa, comme un héxagone a six cotés ;) Sinon pour ce qui est
des conversions étout, nous verons ca dans un autre tutorial ;)
Que veut dire nopper une valeur ?
Nopper une valeur,
veut dire que l'on va remplacer une valeur par un 90 en héxadécimal, ce qui
correspond à un no opperation .L'instruction nop
en assembleur est un peu bizarre, puisqu'elle ne sert à rien. Sauf dans
certains cas pour faire perdre du temps CPU en encombrant ses entrées/sorties.
Voici une petite liste qui vous indique la valeur Hexadecimale de quelque
instruction Assembleur.
NOP |
90 |
JNE |
75 ou 0F85xxx |
JE |
74 ou 0F84xxx |
JMP |
EB ou E9 |
XOR |
33 |
RET |
C3 |
Il existe encore
beaucoup d'autres instruction, mais qui sont peu interessantes a notre stade
;)
Regardez la valeur " 0F8580000000 " se trouvant à
la gauche du "jne" dans le listing.
C'est en fait sa valeur en assembleur
convertie en héxadécimal. 0F85 c'est JNE et 80000000 c'est le bloc memoire ou l'on saute... Un
bloc mémoire, si vous ne savez pas, c'est un peut comme un petit carré de
mémoire éléctronique qui va contenir une information. Par exemple si vous collez
un post-it avec écrit dessus " achète du pain pour ce soir "sur un porte, et ben
la porte c'est le bloc mémoire et le post-it l'information ;)
Comment nopper le saut conditionnel ?
Il suffit d' ouvrir le
fichier STARTCLN.EXE avec votre éditeur héxadecimal, de lancer une recherche
automatique sur la valeur " 0F 85 80 00 00 00
" (qui represente le JNE 00401271 en hexadecimal)... Une fois cette
valeur trouvée, vous la remplacer par " 90 90 90
90 90 90 " , puis vous enregistrer les modifications (n'oubliez pas de
faire une sauvegarde du fichier d'origine au préalable, au cas ou vous vous
tromperiez...(on ne sait jamais).
Maintenant, lancer le programme ainsi modifie...
Quoi ? La boite de
dialogue d'enregistrement est toujours présente ? Normal puisque le programme
n'a pas encore enregistrer votre code dans la base de registre de Windows 9x. il
faut donc cliquer sur " REGISTER " et rentrer un nom, un code bidon, puis
cliquer sur Ok.
Et là ca marche! Car le saut "jne" n'existe plus, donc le
prog continue tranquilement sont listing en passant par les " * Reference To: ADVAPI32.RegCreateKeyExA " et " * Reference To: ADVAPI32. RegCloseKey ". Le prog
est donc complet et illimité. Vous pourrez aussi observer qu'il à inscrit un
code personnel qu'il s'est auto-générer dans la base de registre de Windows9x
;))
Miracle ? Non, assembleur ;)))
PS: j'dit pas ca pour vous découragez, mais pour un cracker
conséquant, un tel raisonnement, observations et crack comprit dans ce type de
sécurité ne prend que deux à trois minutes et encore... Alors entrainez vous
bien et vous verrez, c'est pas si compliquer que ça en à l'air
;)
Ch'tites astuces pour bien commencer à cracker :)
- Lire pleins de
tutoriaux fait sur de petit progs et les comprendres
- Faut pas se prendre la
tête et laisser son ésprit logique tourner seul, ca donne plus d'endurance
-
Faire une pause de 5 minutes minimum toutes les heures, quand on commence à
cracker, c'est mieux
- Faire ses devoirs avant ;) , car cracker, surtout pour
la première fois prend du temps
- S'acheter un p'tit bouquin sur
l'assembleur. Pour moi la réference, c'est " L' assembleur " de Bernard Fabrot,
éditions Marabout, env: 50 balles :)
- Ne pas s'auto proclamer bon crackeur
parce qu'on à cracker 1 ou 2 progs
- Avoir un bon écran, car pour le listing,
c'est primordial
- Ne pas rester tout le temps dans le désassembleur et
naviguer de façon équilibré entre ce dernier et l'editeur héxa (N'ésitez pas à
faire pleins d'éssais)
- Désassemblez un fichier d'origine et le même ficher
mais cracker pour comparer et comprendre les modif' qui ont étés faites

and
