• STATISTIQUES
  • Il y a eu un total de 2 membres et 4295 visiteurs sur le site dans les dernières 24h pour un total de 4 297 personnes!


    Membres: 2 605
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [FR] PHP France
    Pour tout savoir sur le PHP, en français. Vous trouverez des tutoriels, des exemples, des astuces, toute la do...
    Hacking
    [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [FR] dcode
    dcode.fr est le site indispensable pour décoder des messages, tricher aux jeux de lettres, résoudre des énigmes...
    Outils / Add-on
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Débuter en reverse engeneering.
08-09-2011, 00h05 (Modification du message : 08-12-2012, 17h29 par ark.)
Message : #1
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
Débuter en reverse engeneering.
Débuter en reverse engeneering.


On peut trouver sur le net d'excellent tutos de cracking, alors je vais faire en sorte que celui ci soit facile à aborder, il s'adresse aux débutants qui veulent se lancer dans le cracking. C'est mon premier tuto, alors soyez indulgents, j'accepte tout de même les critiques. Wink

1) Qu'est ce que le cracking ?

En informatique le cracking consiste a modifier des octets dans un programme pour en détourner certaines fonctionnalités, comme par exemple créer un patch no-cd...

2) Les outils.

Un débugger : OllyDBG (dispo ici)
Un editeur HexaDécimal : J'utilise HxD (ici) mais vous pouvez utiliser n'importe quel autre éditeur.
Le CrackMe (bah oui, ça peut servir...)

3) On se lance !


Pour commencer, on ouvre OllyDBG et on ouvre le crackme

[Image: ollydbg.png]

Dans le cadre bleu se trouve le code assembleur du CrackMe, c'est lui qui va nous permettre de comprendre l'algorithme.
Dans ce cadre se trouvent les registres, que l'ont va étudier pour retrouver un sérial par exemple.
Ici, c'est la pile. les infos qui se retrouvent dans les registres on peut y trouver des mots de passe parfois Wink

Bon, allez, a l'attaque !
On commence par lancer le crackme, pour voir de quoi il s'agit.
Une magnifique console s'ouvre, et nous demande un numéro de série. Malheureusement, vous ne le connaissez pas... Et quand vous tapez n'importe quoi, il vous dit "Et... Non !"
Pas très sympa tout ça, mais rassurez vous ça va vite changer ! On va le maltraiter un peu pour cet affront ! Wink

On retourne sur ollydbg, on fait click droit -> "Search for" -> "All referenced text string".
Et hop on retrouve nos messages d'erreur. On va commencer par faire valider notre sérial bidon. Pour ça double clic sur le message "Et... non !"

On se retrouve sur ce bout de code :

Code ASM :

00401317     90             NOP
00401318  /$ 55             PUSH EBP
00401319  |. 89E5           MOV EBP,ESP
0040131B  |. 83E4 F0        AND ESP,FFFFFFF0
0040131E  |. 83EC 20        SUB ESP,20
00401321  |. E8 5A040000    CALL CrackMeT.00401780
00401326  |. C74424 1C D848>MOV DWORD PTR SS:[ESP+1C],448D8               ; |||
0040132E  |. C70424 2430400>MOV DWORD PTR SS:[ESP],CrackMeT.00403024      ; |||ASCII "Entre ton numero de serie : "
00401335  |. E8 82060000    CALL <JMP.&msvcrt.printf>                     ; ||printf
0040133A  |. 8D4424 18      LEA EAX,DWORD PTR SS:[ESP+18]                 ; ||
0040133E  |. 894424 04      MOV DWORD PTR SS:[ESP+4],EAX                  ; ||
00401342  |. C70424 4130400>MOV DWORD PTR SS:[ESP],CrackMeT.00403041      ; ||ASCII "%d"
00401349  |. E8 76060000    CALL <JMP.&msvcrt.scanf>                      ; |scanf
0040134E  |. 8B4424 18      MOV EAX,DWORD PTR SS:[ESP+18]                 ; |
00401352  |. 3B4424 1C      CMP EAX,DWORD PTR SS:[ESP+1C]                 ; |
00401356  |. 75 0E          JNZ SHORT CrackMeT.00401366                   ; |
00401358  |. C70424 4430400>MOV DWORD PTR SS:[ESP],CrackMeT.00403044      ; |ASCII "Bravo ! "
0040135F  |. E8 68060000    CALL <JMP.&msvcrt.puts>                       ; puts
00401364  |. EB 0C          JMP SHORT CrackMeT.00401372
00401366  |> C70424 5030400>MOV DWORD PTR SS:[ESP],CrackMeT.00403050      ; |ASCII "Et... Non !"
0040136D  |. E8 5A060000    CALL <JMP.&msvcrt.puts>                       ; puts
00401372  |> C70424 5D30400>MOV DWORD PTR SS:[ESP],CrackMeT.0040305D      ; |ASCII "pause"
00401379  |. E8 56060000    CALL <JMP.&msvcrt.system>                     ; system
0040137E  |. B8 00000000    MOV EAX,0
00401383  |. C9             LEAVE
00401384  . C3             RETN
00401385     90             NOP

 

Si vous avez déjà fait un peu de C, vous pouvez facilement comprendre le code a l'aide des printf et scanf...
Bon, mais ce qui nous intéresse ici c'est de comprendre pourquoi et comment le programme arrive au message "Et... Non!".

On peut voir juste au dessus du message "Bravo ! Smile" :

Code ASM :
CMP EAX,DWORD PTR SS:[ESP+1C]
JNZ SHORT CrackMeT.00401366


Içi, la premiere ligne indique que le programme compare deux valeurs. Le CMP renvoi 1 si les deux valeurs sont égales, et 0 sinon.
Le JNZ ou JNE (jump if not equal) va donc sauter jusqu'à l'adresse 00401366 si le test est faux. Et a la ligne 00401366 on trouve le message "Et... non!" ! C'est donc ce saut qui nous renvoi ce message si on se trompe !
On va donc faire en sorte que le programme nous laisse passer si notre sérial est faux.
Pour celà, il suffit de double cliquez sur le JNZ, et d'écrire JE a la place, ce qui aura pour but d'inverser le saut. Le programme va donc valider tous les faux sérials !

Mais, si on tombe sur le vrai, il va nous le refuser... Pour y remédier, on va carrément supprimer le saut !
Comment faire ? C'est tout simple, on va mettre a la place du saut une commande qui ne fait strictement rien. Cet opération, c'est le NOP. Donc, on double clic sur notre JE, et on écrit NOP a la place de toute la ligne. (bah oui, plus la peine de garder l'adresse puisqu'on ira plus !)

Vous avez réussi a bypasser votre premier password ! Smile

Le problème maintenant est que les changement d'OllyDBG ne sont que temporaires... Et si vous désirez garder votre crack sans avoir a le refaire a chaque fois, ben va falloir utiliser l'éditeur hexadécimal. Mais, ne fermez pas encore OllyDBG !

Bon, alors vous avez peut être déjà remarquer qu'il y a des valeurs hexadécimales écrites entre les adresses et les commandes, par exemple :

Code ASM :
00401356  |. 75 0E          JNZ SHORT CrackMeT.00401366


Ces valeurs hexadécimales sont tout simplement les valeurs de la commande.

A retenir :

Code :
______________________
|Commande | Valeur hexa |
______________________
|   JE          |       74      |
|   JNZ        |       75      |
|   NOP        |       90      |
|   JMP        |       EB      |
______________________

Ces quatres commandes vous servirons très souvent pour modifier différentes choses, pour détourner des protections...
On a déjà vu le JE, JNZ et NOP, je vous explique donc rapidement le JMP : Il sert a sauter directement, sans condition a l'adresse demandée.

Passons maintenant a l'editeur hexa. Il n'y a pour ce programme qu'une seule ligne a modifier.
Vous avez ouvert l'editeur ? Bien, alors faites Ctrl+F et cherchez le message "Bravo"(celui situé juste après le saut) ensuite, refaites Ctrl+F, et recherchez en arrière la valeur hexadécimal 75 (le JNZ).
ça y est, vous l'avez ? Fermez donc OllyDBG, et remplacez ensuite cette valeur par 90 (le NOP) dans l'éditeur. Puis, sauvegardez le programme (sous un autre nom pour garder l'original).

Voilà, vous avez enfin un crack permanent !

Pour ceux qui veulent aller plus loin, je suis entrain de rédigé un second tuto, dans lequel on ne va pas bypasser le mot de passe, mais le retrouver et programmer un keygen. Wink

Si ce tuto vous a plus, si vous avez des questions, ou si vous trouvez que j'explique mal, faites le moi savoir ! Smile
+1 (6) -1 (0) Répondre
08-09-2011, 00h15
Message : #2
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 157
Inscription : Jan 2012
Débuter en reverse engeneering.
wow très bon tuto _Ark_ ! REP +20 !
+1 (0) -1 (0) Répondre
08-09-2011, 01h03
Message : #3
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
Débuter en reverse engeneering.
Bien joué Wink
+1 (0) -1 (0) Répondre
08-09-2011, 10h02
Message : #4
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
Débuter en reverse engeneering.
Merci les gens ! Big Grin
+1 (0) -1 (0) Répondre
06-11-2011, 19h04
Message : #5
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
Débuter en reverse engeneering.
Sympa ton tuto Wink
+1 (0) -1 (0) Répondre
20-11-2011, 23h09
Message : #6
oxoo Hors ligne
Newbie
*



Messages : 11
Sujets : 1
Points: 0
Inscription : Nov 2011
Débuter en reverse engeneering.
Iop, juste comme ça, IDA (free) a une excellente capacité d'analyse à froid (arbres de fonctions, référenciation des chaînes avec tris par adresses, contenu, recherche, etc.). Perso je l'utilise pas mal conjointement à olly/immunity (immunity roxx a lot Big Grin).

Vuala, cool comme tuto, RE roxx a lot Wink.
+1 (0) -1 (0) Répondre
21-11-2011, 22h31
Message : #7
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
Débuter en reverse engeneering.
Thx oxoo pour ces conseils logiciels, j'ai connu IDA il n'y a que peu de temps, quand je me suis lancé dans le reverse sur gnu/linux (Ils sont sympa les tools de backtrack !).
+1 (0) -1 (0) Répondre
01-11-2012, 13h54
Message : #8
WiiiZzzz Hors ligne
Newbie
*



Messages : 2
Sujets : 1
Points: 0
Inscription : Oct 2012
RE: Débuter en reverse engeneering.
Merci pour le tuto Smile
+1 (0) -1 (0) Répondre
08-09-2013, 12h48
Message : #9
Hask Hors ligne
Newbie
*



Messages : 9
Sujets : 3
Points: 5
Inscription : Nov 2012
l
Je commence à faire mes premiers pas en RE, et je me devais de commenter pour dire que ton tuto est super complet, et que (Malgré l'aide intégrale que tu nous donnes, faut bien commencer !) la sensation de réussite après l'édition du CrackMe est terrible Big Grin !

Merci à toi pour ce tuto !

PS : Pas forcément besoin de HxD, on peut aussi faire : Click droit -> Copy to executable -> All modifications

Ce qui (vous vous en doutez) sauvegarde (En écrasant ou en créant un binaire avec un nom différent) les changements effectués sur le binaire.
Btw, je ne sais pas si cette fonction était déjà présente quand Ark a écrit le tuto, mais je précise quand même, au cas ou !
+1 (0) -1 (0) Répondre
08-09-2013, 23h08
Message : #10
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: Débuter en reverse engeneering.
Yop,

Merci pour ton commentaire :)
Pour ce qui est de la fonction de sauvegarde du binaire, je ne sais pas si elle existait a l’époque ou pas, en tout cas merci de l'avoir précisé :)
+1 (0) -1 (0) Répondre
09-09-2013, 01h11
Message : #11
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: l
(08-09-2013, 12h48)Hask a écrit : Je commence à faire mes premiers pas en RE, et je me devais de commenter pour dire que ton tuto est super complet, et que (Malgré l'aide intégrale que tu nous donnes, faut bien commencer !) la sensation de réussite après l'édition du CrackMe est terrible Big Grin !

Merci à toi pour ce tuto !

PS : Pas forcément besoin de HxD, on peut aussi faire : Click droit -> Copy to executable -> All modifications

Ce qui (vous vous en doutez) sauvegarde (En écrasant ou en créant un binaire avec un nom différent) les changements effectués sur le binaire.
Btw, je ne sais pas si cette fonction était déjà présente quand Ark a écrit le tuto, mais je précise quand même, au cas ou !

Content de voir que tu trouves la motivation pour te remettre au RE avant la rentrée :p
+1 (0) -1 (0) Répondre
09-09-2013, 16h45
Message : #12
Wabouz Hors ligne
Membre actif
*



Messages : 96
Sujets : 8
Points: 16
Inscription : Nov 2012
RE: Débuter en reverse engeneering.
Juste top! Hate de voir la suite et j'espère qu'il y en aura beaucoup ^^
C'est l'histoire d'un mec qui rentre dans un canard... ( °3°)♫
+1 (0) -1 (0) Répondre
09-09-2013, 16h56
Message : #13
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: Débuter en reverse engeneering.
(09-09-2013, 16h45)Wabouz a écrit : Juste top! Hate de voir la suite et j'espère qu'il y en aura beaucoup ^^

J'ai fait une suite, dispo ici

Mais il y auras pas plus avant un certain temps je le crains. Et puis si suite il y a, ça sera très probablement pour des environnement de type GNU/Linux.
+1 (0) -1 (0) Répondre
09-09-2013, 20h44
Message : #14
Wabouz Hors ligne
Membre actif
*



Messages : 96
Sujets : 8
Points: 16
Inscription : Nov 2012
RE: Débuter en reverse engeneering.
Bah normal, boulot boulot ? ^^
Arf, ça me forcera à passer sous Linux le plus tôt possible Smile
C'est l'histoire d'un mec qui rentre dans un canard... ( °3°)♫
+1 (0) -1 (0) Répondre
11-09-2013, 18h02
Message : #15
Hask Hors ligne
Newbie
*



Messages : 9
Sujets : 3
Points: 5
Inscription : Nov 2012
RE: l
(09-09-2013, 01h11)fr0g a écrit : Content de voir que tu trouves la motivation pour te remettre au RE avant la rentrée :p

Ahah, me fallait juste la motivation de commencer tout ça, maintenant c'est parti :p

Dommage que tu ne puisses pas continuer cette super série Ark, c'est pas grave, on se débrouillera tout seuls pour la suite, comme des grands !
+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Débuter en analyse de malwares supersnail 6 331 07-11-2013, 23h26
Dernier message: supersnail
  Continuer en reverse engeneering ark 4 424 16-09-2013, 09h05
Dernier message: Ark
  Débuter en reverse engineering avec 0$ 0x41 9 519 14-09-2012, 19h55
Dernier message: LR-6
  Introduction au reverse engineering sous Win32 fr0g 7 1,022 11-10-2011, 11h50
Dernier message: naab

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut