Les premières notions

Les Outils

Recherche de cracks

Cours et tutorials

Les liens

LES PREMIERES NOTIONS:

 

Le cracking consiste à cracker les programmes, c'est à dire enlever la protection ou le password d'un programme en le désassemblant. Il existe beaucoup de mags et de E-zines sur le sujet. J'en donne quelques un dans cette page. Pour commencer je vous conseille de vous procurer WINDASM 8.9 (disponible dans la rubrique Download), pour désassembler les logiciels et un éditeur Hexadécimal pour modifier ces programmes.

Présentation de w32dasm :

Lorsque l'on fait un programme dans n'importe quel langage, une fois compilé en exécutable il est également traduit dans un langage appelé l'assembleur. Avec un désassembleur, on va afficher le code source du programme en assembleur, après cette brève introduction, commençons. On ouvre W32Dasm et on fait "open file to disassemble". Alors on sélectionne un quelconque programme exécutable. Voila vous avez devant les yeux de l'assembleur. On descend un peu, aïe ça se complique légèrement:

Bon au premier abord ça a l'air compliqué, mais c'est bon vous apprendrez avec le temps. Pour l'instant on à pas besoin de comprendre. On est là pour observer et apprendre le fonctionnement de W32Dasm. Bon on remarque que la barre bleue devient verte lorsqu'elle passe sur un je, jne, jmp ou autre...  C' est juste pour executer des sauts.

Pour aller à l'adresse qui nous intéresse on fait Goto Adress, l'option Patch Code est assez utiles, vous entrer la modification que vous souhaitez effectuer (en assembleur, bien sur) et elle vous est traduit en hexadecimal lorsque vous faites apply patch, s'il y a marqué write protected memory c'est pas la peine de continuer. Bon ça devrait suffir pour l' instant. Notez bien que le debugger de W32Dasm ne fait pas le poids par rappport à SoftICE, un debugger qui permet de charger un programme en mémoire et l'exécuter pas à pas(tracage).

 


Qu'est-ce q'un désassembleur ?


Un désassembleur sert a voir ce qu'il y a à l'intérieur d'un prog. Quand vous en désassemblerez un, vous aurez droit à un listing traduisant le code assembleur.

Lorsqu'un programmeur fait un prog, il utilise des instructions spécifiques à son langage ( c++, c,visual basic,..etc.).Il enregistre ensuite son code source dans un fichier puis il le compile. Le compilateur va transformer le code source spécifique au langage en assembleur qui ne peut être lu que par le même environnement ou il a été compiler. Si le programme a été compilé sous Windows il ne marchera que sous Windows (Logique non LOL).
Quand vous avez un .EXE sur votre disque celui-ci est donc en assembleur. Si vous l'ouvrez avec un éditeur hexadécimal vous ne verrez pas d'instructions assembleur mais les caractères ASCII correspondants a ces instructions.
Pour voir ces instructions assembleur il vous faut donc un désassembleur et donc il vous faut w32dasm.

 

Qu'est-ce q'un debugger ?


Le débugging consiste à tracer un prog ligne par ligne. C'est à dire d'exécuter ligne par ligne les instructions assembleur, un programme contient des milliers de lignes. Donc vous verrez le prog se développer au fur et à mesure de l'avancement dans les lignes de codes donc vous pourrez éventuellement virer des trucs que vous n'aimez pas, genre des splash unregistrered ...etc.

Petite note : Quand vous changez des trucs dans
softice les changements ne marchent q'une fois, c'est a dire que ça n'est que temporaire. Pour modifier réellement le programme il faut un éditeur hexadécimal.
En fait
softice sert à trouver les endroits où par exemple une fonction appelle une fenêtre "veuillez vous enregistrer ...etc.", et donc à savoir où patcher le programme pour ne qu'il n'appelle plus cette fonction.
Pour debugger il vous faut donc
softice (quoi que w32dasm le fait aussi mais bon c'est mieux softice).

 


 

Qu'est-ce q'un éditeur hexadécimal ?

Un éditeur hexadécimal sert donc à modifier réellement le prog à tel ou tel endroit. C'est vraiment trop bon ces progs car on peut presque tout changer dans le progs (Virer du texte, changer des mots... etc)

Comme éditeur hexadécimal il vous faut ultraedit et hiew c'est les 2 seuls que j'utilisent et les meilleurs selon moi.

 


 

Tout d'abord sachez qu'il existe 3 types de programmes shareware :


1. limitation à X de jours ou à X utilisations. (Il est entier)
2. version bridée (incomplète à l'utilisation mais il quand même entier).
3. les versions "démo" (tout n'est pas dedans).

Pour les versions demo ont peut rien faire (normal)

Pour les version limitée à un certain nombre d'utilisations ou de jours, on peut par exemple bloquer la fonction qui compte le nombre de fois qu'il a été lancé ou le nombre de jours.

Pour les version bridées ont peut déjà chercher ce qui n'est pas accessible et le rendre accessible.

On peut aussi chercher le serial avec
softice (pour 1 et 2) et donc ne rien changer au programme mais bon je ne trouve pas ça très excitant. (en règle générale c'est souvent comme ça, mais bon des fois c'est différent mais ce sera pour le futur ; commencez déjà par ceux la.)

 

La table des sauts assembleurs:

JNE

Saute si pas egal

75 ou 85

JE

Saute si egal

74 ou 84

JMP

Saute

EB ou E9

JA

Saute si au dessus

0F87

JNA

Saute si pas au dessus

0F86

JAE

Saute si au dessus ou egal

0F83

JNAE

Saute si pas au dessus  ou egal

0F82

JB

Saute si en dessous

0F82

JNB

Saute si pas en dessous

0F83

JBE

Saute si en desous ou egal

0F86

JNBE

Saute si pas en dessous ou egal

0F87

JG

Saute si plus grand

0F8F

JNG

Saute si pas plus grand

0F8E

JGE

Saute si plus grand ou egal

0F8D

JNGE

Saute si pas plus grand ou egal

0F8C

JL

Saute si moins grand

0F8C

JLE

Saute si moins grand ou egal

0F8D

JNLE

Saute si pas moins grand ou egal

0F8E

NOP

Ne fais rien

90 ou 908F

Alors une fois que vous avez trouve l'endroit a patcher dans la fenetre de code par exemple un jne en je il vous faut connaitre l'adresse car on ne peut pas directement changer le truc qu'on veut dans la fenetre du prog desassemblé (cest tres con d'ailleurs). Pour pouvoir changer donc il vous faut un editeur hexadecimal mais le probleme c'est que ce nest pas le meme langague entre le prog desassemblé et le prog dans l'editeur hexa, c'est pour ca que dans w32dasm il ya un truc tres bien qui vous indique l'adresse a laquelle se trouve votre ligne jaune en assembleur et en hexadecimal.