Mon 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
10.2 ...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.. ou bien clic
sur le bouton avec une lampe marqué Cd Start en dessous dans la barre de bouton
de w32dasm). Refaite
une recherche et arretez vous a la seconde occurance de " name " (qui
doit etre trouvée a la ligne 473 comme indiqué dans la photo d'écran ci-dessous).
On se trouve alors à un endroit
particulièrement interressant. Mais alors pourquoi cet endroit est t-il
si interessant me direz-vous ???
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 :). En français pour ceux qui sont allergiques à l'anglais RegCreateKey
veux dire Créer une clef dans le registre (Reg pour Register).
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...concrètement, 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).
/*
NB:
Message de pifoman :
Si votre éditeur héxadécimal vous dit qu'il ne peut enregistrer les modifications enlevez l'attribut lecture seule de STARTCLN.EXE.Si cela ne suffit pas fermez le désassembleur w32dasm 8.93.
*/
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 ;)
Petites astuces pour bien commencer à
cracker :)
-
Lire pleins de tutoriaux fait sur de petit progs et les comprendre
- Ne
pas se prendre la tête et laisser son esprit 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 petit bouquin sur l'assembleur. Pour moi la réference, c'est
" L' assembleur " de Bernard Fabrot, éditions Marabout, env:
8 Euros :) et "L'assembleur
une découverte pas à pas" aux éditions Marabout de
Philippe Mercier (10 €) en français
et bien expliqué [ISBN 2-501-01176-7].
- 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'hésitez pas à faire pleins d'essais)
-
Désassemblez un fichier d'origine et le même ficher mais cracker
pour comparer et comprendre les modifications qui ont étés faites


positionnement google - infrastructures virtuelles - maquilleuse - Cours de maquillage - passage aux mines - annonces bateaux