[Tuto-Cracking] TheHardButcher 2

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Status
Not open for further replies.

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
Il est interdit de modifier/copier ce tuto et de le redistribuer sans autorisation.
Si vous désirez le copier, demandez la permission a l'administrateur, mais vous devrez citer le nom de l'auteur ( TheHardButcher ) et ProgSource.fr.cr


Bonjour, et bienvenue pour mon second tuto.

Ce tuto est plutôt là pour ceux qui n'ont pas tout comprit dans le premier tuto, pour être sur qu'il ai bien tout assimilé.

Pour réaliser ce tuto, vous aurez besoin :
- ollydbg Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
- Le CrackMe 1 de TheHardButcher Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!

La source du CrackMe est disponible sur le forum.
Nous utiliserons surement encore ce CrackMe plus tard pour le cracker avec d'autre technique, mais pour cette fois, nous allons faire exactement la même chose que dans le premier tuto.

Je sais vu que je l'ai crée qu'il n'est pas packer, donc je n'utilise pas PEID pour voir si il y en a un.
Les packers seront expliqué dans un cours plus lointain, je ne sais pas encore quand ^^

Je commence donc par rechercher dans les référence string
clique droit --> search for --> all referenced strings
et je trouve directement ce que je veux :

CPU Disasm
Address Hex dump Command Comments
0040138E |. C70424 F13040 MOV DWORD PTR SS:[ESP],OFFSET 004030F1 ; ASCII "Please Enter Password :
"
00401395 |. E8 CA060000 CALL <JMP.&msvcrt.puts>
0040139A |. 8D4424 1C LEA EAX,[ESP+1C]
0040139E |. 894424 04 MOV DWORD PTR SS:[ESP+4],EAX
004013A2 |. C70424 0A3140 MOV DWORD PTR SS:[ESP],OFFSET 0040310A ; ASCII "%d"
004013A9 |. E8 BE060000 CALL <JMP.&msvcrt.scanf>
004013AE |. 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C]
004013B2 |. 894424 04 MOV DWORD PTR SS:[ESP+4],EAX
004013B6 |. C70424 103140 MOV DWORD PTR SS:[ESP],OFFSET 00403110 ; ASCII 0A,"Vous avez "
004013BD |. E8 9A060000 CALL <JMP.&msvcrt.printf>
004013C2 |. 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C]
004013C6 |. 3D D76A641B CMP EAX,1B646AD7
004013CB 75 26 JNE SHORT 004013F3
004013CD |. C70424 3C3140 MOV DWORD PTR SS:[ESP],OFFSET 0040313C ; ASCII 0A," ---------"
004013D4 |. E8 8B060000 CALL <JMP.&msvcrt.puts>
004013D9 |. C70424 5C3140 MOV DWORD PTR SS:[ESP],OFFSET 0040315C ; ASCII 0A," Le mot de"
004013E0 |. E8 7F060000 CALL <JMP.&msvcrt.puts>
004013E5 |. C70424 803140 MOV DWORD PTR SS:[ESP],OFFSET 00403180 ; ASCII " -----------------------------"
004013EC |. E8 73060000 CALL <JMP.&msvcrt.puts>
004013F1 |. EB 0C JMP SHORT 004013FF
004013F3 |> C70424 A03140 MOV DWORD PTR SS:[ESP],OFFSET 004031A0 ; ASCII 0A,"Le mot de "
004013FA |. E8 65060000 CALL <JMP.&msvcrt.puts>
004013FF |> C70424 C43140 MOV DWORD PTR SS:[ESP],OFFSET 004031C4 ; ASCII " --- TheHardButcher ---"

On voit très bien le %d suivit d'un cmp puis un JNE qui saute juste au dessus du premier message.
Je pourrais modifier comme la dernière fois, mais là, vous n'auriez vraiment rien apprit de différent du premier tutoriel ^^

Je vais donc utiliser une technique qui me permet de tester si j'ai raison, sans avoir besoin de modifier le CrackMe avec l'editeur Hexa.

Je vais modifier le JNE
004013CB /75 26 JNE SHORT 004013F3

par un NOP ( 90 )
Si vous ne comprenez pas ce que c'est que les NOP, JNE et autre, un autre tuto est la pour sa, il explique ou rappel les bases. Si vous vous trouvez sur un forum extérieurs a ProgSource, vous pouvez trouvez ce tuto ici : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris! car je ne le poste pas sur les autres forum ( il change trop souvent ^^ )

Faite un clique droit sur la ligne du JNE --> EDIT --> Fill with NOPs

et voila, le JNE 75 26 est remplacé par NOP NOP 90 90

004013CB 90 NOP
004013CC 90 NOP

Pour tester, appuyez maintenant sur la petite fleche en forme de "play" pour tester le CrackMe Cracker.

Et voilà ce que c'est sensé vous donnez :

273182



Voilà, le second tuto est finit.
Il était moin complet et moin instructif, mais le but était plutôt de vous entrainez.
Attention, le prochain tuto ne sera pas de tout repos =)

---- > TheHardButcher

Il est interdit de modifier/copier ce tuto et de le redistribuer sans autorisation.
Si vous désirez le copier, demandez la permission a l'administrateur, mais vous devrez citer le nom de l'auteur ( TheHardButcher ) et ProgSource.fr.cr
 

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
Ce tuto es presque identique au précédent, il est là pour être sur que tout le monde ai au moin ce niveaux pour débuter l'apprentissage réel =)
 
Dec 17, 2009
725
0
581
Oui ici tu donnes les bases pour nous aider à avoir un meilleur départ dans cet "apprentissage réel" =)
 

ModernLobby

Membre d'Honneur
V
Aug 23, 2010
1,422
1
942
Devant mon ecran
Salut et merci pour ce tuto
J'ai un petit problème quand j'ouvre le crackme avec ollydbg et que je fait clique droit --> search for --> all referenced strings sa me marque unable to read memory of debugged process (76F10000..76FE5FFF)
Voila merci pour votre aide
 

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
Essai d'appuyer une fois sur le petit play au moin, sa charge le programme, car chez toi, il n'est pas chargé.
 

Imhotep

Vétéran CG3
V
Aug 17, 2010
799
0
441
33
Hinamizawa
Moi quand j'ai fait le truc de modernloby, je ne trouve pas le texte que tu a mis en citation :arf: ! Tu peut m'aider ?
 

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
Merci mais sa reste simple :P
Ben quand ta commencé les math, ta pas commencé par les vecteur, mais par les additions, chaque chose en leurs temps.

Tu sais faire un tuto pour retrouver un serial key valide ?

Ben l'idée c'est d'arrivé a ce genre de manipe, mais on ne fait pas ça comme ça en suivant une démarche prédéfinit, mais en étudiant beaucoup de cas différents.
 
Dec 14, 2009
89
0
566
Ben quand ta commencé les math, ta pas commencé par les vecteur, mais par les additions, chaque chose en leurs temps.



Ben l'idée c'est d'arrivé a ce genre de manipe, mais on ne fait pas ça comme ça en suivant une démarche prédéfinit, mais en étudiant beaucoup de cas différents.

Merci :)

Si c'est possible , envoye moi des crackme plus dur , pour m’entraîner (si tu as le temps).
merci :noel:

Une derniere question , tu crois que c'est possible de cracker un jeu(La monnaie) ? Je veut dire que par exemple quand t’achète un objet que le programme oublie que tu as acheter(et donc tu perds pas l'argent) cette objet en gros mettre un breakpoint au JNE ?
 
Last edited:

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
Ben dans l'idée c'est toute a fait possible, mais on peut plus faire ça depuis longtemps ^^

Pour les crackMe, attend les prochain tuto, je peut pas t'envoyer les miens pour le moment, mais sinon, fait comme moi, programme les toi même, c'est pas trop dure ^^
 
Dec 14, 2009
89
0
566
Ben dans l'idée c'est toute a fait possible, mais on peut plus faire ça depuis longtemps ^^

Pour les crackMe, attend les prochain tuto, je peut pas t'envoyer les miens pour le moment, mais sinon, fait comme moi, programme les toi même, c'est pas trop dure ^^


Pourquoi on ne peut plus faire ça depuis longtemps est-ce parce que les adresses changent tout le temps et ne sont que visuel (Comme CE) ?

J'imagine que tu les programmes en c++ (console) ?
En tout cas merci pour tes réponses :)
 

TheHardButcher

Programmeur C/C++
V
Dec 14, 2009
1,461
58
964
France
Ben en faite pour les jeux en ligne, c'est sécuriser via le serveur. Et pour les jeux solo, c'est plus ou moin possible.

Les CrackMe, je les fait en C++ Console, car il sont ensuite traduit en assembleur, et donc pas de merde comme en VB ou C# avec la plateforme .NET
 

ßiin

Membre
Jun 3, 2012
29
0
306
je vais poser une question conne mais j'ai envie de connaitres plus sur la programation et donc j'ai pas compris se tutorial sert à quoi ^^
 
Status
Not open for further replies.