You are on page 1of 8

Tutorial de reverse engineering

du brute-forcing au keygenning
par Valdstyn
Table des matires
1. But de ce papier
2. Outils
3. Brute-forcing
4. Brute-forcing amlior
5. Srial fishing
6. Keygenning (*** venir)
7. Prograation du keygen en !"" (*** venir)
a. #pplication !onsole(*** venir)
b. #pplication $%& ('(V!6) (*** venir)
8. Remerciements
1. BUT DE CE PAPIER
!ai crit ce tutorial pour plusieurs raisons. "a premi#re est $ue %e souhaite faire partager mes
connaissances &certes encore maigres' en re(erse engineering ) la communaut d*utante. +n effet,
les crac-ers confirms (erront pro*a*lement peu d!intr.t, (oire pas du tout, ) lire ce tutorial, les
techni$ues e/pli$ues tant relati(ement *asi$ues &tout du moins, pour ceu/ $ui les ma0trisent1'. "a
deu/i#me raison est $ue la meilleure fa2on de (rifier si l!on comprend $uel$ue chose en dtail est
de l!e/pli$uer ) $uel$u!un d!autre. +nfin, crire ce tutorial est un peu la touche finale ) l!anal3se de
mon programme.
e (ais partir du postulat $ue le lecteur a des (agues notions de crac-ing &a(oir lu 2-3
tutoriau/, m.me tr#s *asi$ue, est recommand'. "es termes essentiels seront e/pli$us simplement
et les instructions seront dtailles de la fa2on la plus comprhensi*le pour les d*utants.
e ne prtends pas $u!) la fin de la lecture, (ous sere4 capa*le de tout crac-er &%!en suis moi-
m.me tr)s loin' mais (otre *agage en crac-ing sera plus su*stantiel.
Sur ce, *onne lecture1
5aldst3n, le 26 mars 2668
2. OUTILS
- Oll37B8
- 9alculatrice de :indo;s &1'
- <+i7
- =n compilateur 9>> &Bloodshed 7+5-9>> est tr#s performant et gratuit' &?.a'
- @icrosoft 5isual 9>> A.6 &ncessaire pour ?.*'
- <rogramme ci*le B SpCCCrogCCm
&(olontairement mas$u, seule la techni$ue importe, pas le logiciel 1'
3. BRUTE-FORCING
<remi#re tape, on (a regarder le langage utilis par notre logiciel ci*le et (rifier s!il utilise
une $uelcon$ue protection &Dspac-, Drmadillo,...'. <our ce faire, utilise4 l!outil <+i7.
9hance ici B' le logiciel n!est pas protg. @oralitB %e ne m!atta$uerai pas ) de longues
e/plications sur l!unpac-ing. 7!autres tutoriau/ 3 sont consacrs et de nom*reu/ outils sont
tlchargea*les sur le net.
Eotre ci*le tant (ierge de protection, on peut la charger dans Oll37B8. =ne fois charge
compl#tement &rien ne doit plus F *ouger G dans la fen.tre d!Oll3', on lance l!application en
appu3ant sur F HI G. Jout de suite, on (oit l!infectionB
On entre alors un nom et un srial *idon. Raction du soft;are sans surprise...
F Dh *en 4ut alors 1 G. "es choses srieuses (ont commencer K'. 7ans Oll3, on fait cli$ue
droit sur le code assem*leur &(otre programme traduit en un langage tr#s *asi$ue' LM Search for LM
Dll referenced te/t strings
5ous (ous sou(ene4 de notre message apr#s l!insertion du mau(ais codeN F Jhis is a 16
da3...G. On (a rechercher cette cha0ne de carat#res. 9oche4 *ien la case F+ntire Scope G
&Lrechercher dans tout le code, sans considrer de position de recherche' et dcoche4 F 9ase
sensiti(eG &Lne pas prendre en compte la casse, c!est-)-dire la distinction entre ma%uscules et
minuscules'. "!image ) la page sui(ante est asse4 e/plicite.
On tape le d*ut de notre message d!erreur &ou en entier, si (ous .tes moti(s...' et on cli$ue
sur OO. "a premi#re cha0ne correspondante trou(e &pas tou%ours la *onne' se met en sur*rillance.
On fait alors dou*le cli$ue gauche dessus. 5oil) oP on arri(eB
Rapide anal3se de ce $u!on peut (oirB
"a cha0ne en sur*rillance se trou(e dans une accolade a(ec la mention F te/t L G.
9ette accolade se termine, comme (ous le constate4, sur Q@essageBo/DR. 7e $uoi s!agit-ilN
@essageBo/ est une fonction permettant d!afficher une *o0te de dialogue contenant un message &en
l!occurence, ici, notre F Jhis is a 16... G'. 9e $ue (ous (o3e4 en %aune &+, E+ ou ES' sont des
SD=JS 9OE7TJTOEE+"S. +/prims en fran2ais, ils signifientB FST ceci est, alors saute &+'G ou
FST ceci n!est pas, alors SD=J+G &E+'. Or, $ue (oit-onN uste a(ant notre message d!erreur, 2
sauts conditionnels1 +t si (ous regarde4 de pr#s, les 2 sautent (ers le m.me endroit, c!est-)-dire D=-
7+"D du message badboy &message d!erreur'. <remier essai, on (a transformer le premier + en
@< &SD=J sans condition', de sorte $ue le programme passe tou*ours au-dessus du message
d!erreur. 9li$ue gauche sur Q+ SUORJ 6644A952R pour mettre en sur*rillance. On appuie sur
+space. =ne *o0te appara0t alors a(ec ladite instruction. Remplace4 + par @< et cli$ue4 sur
Dssem*le. 9li$ue droit sur la 4one de code &(oir premi#re image' LM 9op3 to e/ecuta*le LM all
modifications LM cop3 all. =ne nou(elle *o0te apparait a(ec le code modifi. 9li$ue droit dedans
LM Sa(e file. +nregistre4 alors sous monprogVcrac-.+W+. "ance4-le. On tape un nom, un srial...le
programme n!affiche rien et se lance. On a (it l!enregistrement1 B'
<remi#re (ictoire1 @ais il (a falloir aller plus loin, autrement ditB forcer un fau/
enregistrement. Tl s!agit de l!tape sui(ante.
4. BRUTE-FORCING AMELIORE
On reprend notre code assem*leur et en faisant dfiler, on remar$ue tr#s (ite $uel$ue chose
de fort intressant. &en(iron 26-36 lignes apr#s le badboy'.
=ne @essageBo/, encore, mais cette fois $ui dit FJhan- 3ou for purchasingG. +t au-dessus,
un E+. 9e saut est pris si le srial est fau/. 7onc nous a(ons 2 possi*ilits pour le neutraliserB
d!une part, on in(erse le saut &E+ LM +' soit on le noppe &E+ LM EO<', c!est-)-dire $u!on indi$ue
de ne faire aucune opration. Rsultat, le programme arri(e ) l!instruction et il continuera gentiment
son chemin (ers le goodboy. On modifie l!instruction comme indi$u au chapitre prcdent. On
lance le programmeK on entre un nom, un fau/ srial.
+n (oil) une *onne nou(elle1 @ais &tou%ours important', on $uitte le programme et on le
relance pour tester la (alidit du crac-. Drgh1 Eou(elle *o0te de dialogue. "!enregistrement n!a pas
t enregistr &sic'. +n fait, le programme (rifie ) cha$ue lancement le nom et le srial. Tl (a donc
falloir lui faire croire $u!on a le *on srial.
Regardons de nou(eau l!image correspondant au message goodboy. uste apr#s l!affichage de
la @essageBo/, on (oitB @O5 BXJ+ <JR 7SBQ49++78R,1
"e programme -une fois l!utilisateur enregistr &message goodboy'- met une *oolenne &une
(aria*le $ui n!a $ue 2 (aleurs possi*les B 1 ou 6' ) 1.
7ans le panneau en dessous des instructions, (ous (o3e4B 7SBQ6649++78RL66. On fait
cli$ue droit LM Hollo; address in 7ump. +t dans le panneau tout en *as, (ous arri(e4 ) l!adresse oP
est stoc-e la (aleur de la (aria*le. Si cette (aria*le est mise ) 1 apr#s l!enregistrement, on peut
supposer $ue le programme la (rifie ) cha$ue lancement. Si elle est ) 1, on sera enregistr, si elle
est 6, la *o0te d!enregistrement appara0tra. On (a *oser un +reakpoint sur l!acc#s ) cette (aria*le et
se d*rouiller pour $u!elle soit constamment ) 1.
Dppu3e4 sur 9JR">H2 &ou cli$ue4 sur la dou*le fl#che en haut ) gauche dans Oll3' pour
redmarrer le programme. Tl *lo$ue alors sur une instruction.
FfeG et FfeG correspondent au nom et au srial $ue %!a(ais utilis pour le test &7sol, %!aurais
dY choisir deu/ strings plus parlantesZZ' Or, on (oit $ue la (aria*le dsire est mise ) 6.
9onclusionB au lancement du programme, ce dernier reprend le nom et srial prcdemment entrs
&ils sont en fait stoc-s dans un fichier C.ini' et refait le test d!authenticit. @ais (u $ue le nom et le
srial ne (ont pas ensem*le, il met la (aria*le ) 6. Hor2ons le destin &sic'. On dite en appu3ant sur
+space et on change la ligne en @O5 BXJ+ <JR 7SBQ49++78R, 1.
On enregistre les modifications &confer supra di,it'. &On suppose $ue l!utilisateur n!a pas
encore essa3 d!entrer un couple nom[srial' On lance le programme, on tape son nom et un srial.
OO. 8oodBo3. On $uitte le soft. On relance. <lus aucune *o0te de dialogue d!enregistrement et
notre nom est tou%ours dans le titre du programme. @ission accomplie a(ec succ#s1
5. SERIAL FISHING
On est heureu/, on peut dsormais utiliser notre programme autant $u!on (eut.
@ais...imaginons $ue nous a3ons *esoin de mise ) %our. +t $ue pour ce faire, l!diteur demande de
se connecter sur le site et de donner son srial. On serait alors ennu3 B-p. \u!) cela ne tienne, on (a
faire de la p.che au srial1 Sorte4 la canne et l!hame2on1
On reprend le fichier +W+ original &non modifi'. On retourne ) notre message badboy.
+t on on fait dfiler en arri#re. Si le programme nous dit $ue notre clef est fausse, il a du la
comparer a(ec la (raie et, dans un premier temps, la stoc-er dans une (aria*le.
"es 3 traits rouges hori4ontau/ correspondent au/ fonctions rcuprant le contenu d!une case
d!dition &l) oP on crit son nom[srial'. On pose un *p sur chacune des lignes &mettre en
sur*rillance et appu3er sur H2'. On lance le programme et on essa3e de s!enregistrer. "e programme
*rea-. Rien d!intressant. On appu3e sur HI pour continuer. On (oit alors appara0tre un chiffre
F*i4arreG dans la fen.tre des registres en +DW &%e sais, au d*ut, tous les chiffres sem*lent *i4arres,
mais il faut 3 aller un peu ) l!a(euglette'.
+DW L 3AA35H41 L I12482113 &decimal'
9e $ui est intressant c!est $ue ce chiffre (a .tre utilis plusieurs fois dans des tests de
comparaison &traits (erticau/' %uste a(ant le message badboy . On s!essa3e de s!enregistrer a(ec le
nom prcdent et ce srial. 9a ne marche pas. 9on(ertisse4 ce chiffre en dcimal. &a(ec la
calculatrice ;indo;s par e/emple, mais (ous pou(e4 aussi (oir la (aleur dcimal directement dans
Oll3'. On ressa3e et paf1 &le chien' l!enregistrement fonctionne1
9ette partie est tr#s certainement une des plus difficiles pour un no(ice. 5ous de(re4, selon
le programme, fouiller et refouiller, tenter et retenter. 8arde4 ces r#gles en t.te pour trou(er le (rai
srial B &r#gles de *aseK si c!tait cha$ue fois aussi simple, il n!3 aurait aucun intr.t BR'
-Jou%ours apr#s la rcupration du nom &8et:indo;Je/tD ou 8et7lgTtemJe/tD, par e/'
-Sou(ent ) recon(ertir dcimal &puis$ue dans Oll3, les (aleurs sont donnes en he/a'
-Si (ous a(e4 peu de chance, cr3pt puis compar...*onne chance1 B'
Eote4 $ue parfois &sou(ent, dsl', le srial $ue (ous entre4 est compar par morceau, ou de fa2on
asse4 comple/e. @ais pour les softs *asi$ues[amateurs, l!auteur gn#re la (raie clef et ne fait $ue
comparer. &e rappelle $ue ce n!est $u!un tuto pour d*utantZZ'
" !essentiel c!est $ue maintenant, on a un couple nom[clef (alide. On (a galement pou(oir
orienter nos recherches pour trou(er la routine de gnration.
6. KEYGENNING
+tant donn $ue nous connaissons notre srial, nous pou(ons trou(er le call $ui le gn#re.
"a techni$ue est de tracer le <R+@T+R call $ui prc#de l!apparation de notre srial au/ alentours
des 8et:indo;Je/t et des tests de comparaions. Q...R
7. PROGRAMMATION DU KEYGEN EN C++
A. APPLICATION CONSOLE
B. APPLICATION GUI (Graphical User Interface)
. REMERCIEMENTS
e souhaiterais remercier B
7eamon, pour son super guideK la communaut forumcrac-,
9eu/ $ui ont rpondu ) mon premier message sur le forum et m!ont forc ) *osser B'
F!3 suis arri( tout seul 1G ZZ

You might also like