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 héxadé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
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"
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 :)
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 :
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 :))
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 ;)
NOP | 90 |
JNE | 75 ou 0F85xxx |
JE | 74 ou 0F84xxx |
JMP | EB ou E9 |
XOR | 33 |
RET | C3 |
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 ;)
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 ;)