Download Tutorial Phox CrackMe v5.1 crack by iCi

Added to site2002-12-31
Rating91/100
Votes7


tutorialphoxcrackmev5.1crackici.zip (4605 bytes)

namesizecompressed
tuto-PhoX-crkme5.1.txt 10140 3229
crackme5.1.EXE 4096 1130

tuto-PhoX-crkme5.1.txt

TUTORIAL => [PhoX's CrackMe_5.1]
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
Je pars sur le principe que vous avez qq bases en cracking


,,,,,,,,,,,,,,
:INTRODUCTION:
''''''''''''''
   Bon ce crackme n'est pas extrΩmement difficile mais il m'a quand mΩme
rΘsiser assez longtemps. Le plus dur est de capter ce qu'il fait subir
α notre serial avant de le comparer au bon et de trouver un moyen de
"reverser"(c'est peu Ωtre un grand mot) le tout. Enfin, passons α l'acte,
ce sera plus simple... ;)

On a besoin:
- du crackme (sans blague!)
- de W32Dasm (pas indispensable)
- de Softice
- de papier et d'un crayon
- d'Ωtre assez ΘveillΘ pour faire marcher sa tΩte



,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:YAHAAAYAYAA!(cri de guerre :):
'''''''''''''''''''''''''''''''
   Oki, alors on lance la bΩ-bΩte: oh la gentille ch'tite boεte α serial!
Allez, viens! viens! chope le serial! chope! Oups dΘsolΘ un moment de dΘlire ;)

Sous W32Dasm >>>

:00401191 6A28                    push 00000028
:00401193 68A6204000              push 004020A6                       ; buffer pour serial
:00401198 FF354C204000            push dword ptr [0040204C]

* Reference To: USER32.GetWindowTextA, Ord:0000h
                                  |
:0040119E E800010000              Call 004012A3                       ; chope le serial
:004011A3 FF3544204000            push dword ptr [00402044]
:004011A9 E85D000000              call 0040120B                       <<< α moins d'avoir commencΘ le
:004011AE 83F801                  cmp eax, 00000001                   <<< cracking hier, vous avez surement
:004011B1 751E                    jne 004011D1                        <<< remarquΘ cela.
:004011B3 6A30                    push 00000030

* Possible StringData Ref from Data Obj ->"Good For U!"
                                  |
:004011B5 6881204000              push 00402081

* Possible StringData Ref from Data Obj ->"U Did It!!"
                                  |
:004011BA 688D204000              push 0040208D
:004011BF FF3548204000            push dword ptr [00402048]

* Reference To: USER32.MessageBoxA, Ord:0000h
                                  |
:004011C5 E8EB000000              Call 004012B5




Donc pas compliquΘ, qu'on se dit, tout est dans le call 0040120B!




[Suite]

* Referenced by a CALL at Address:
|:004011A9   
|
:0040120B C8000000                enter 0000, 00
:0040120F 53                      push ebx
:00401210 52                      push edx
:00401211 33C0                    xor eax, eax
:00401213 B8A6204000              mov eax, 004020A6
:00401218 803800                  cmp byte ptr [eax], 00
:0040121B 7460                    je 0040127D
:0040121D 33DB                    xor ebx, ebx
:0040121F 33D2                    xor edx, edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040122C(C)
|
:00401221 8A18                    mov bl, byte ptr [eax]              ; le plus 
:00401223 C1C308                  rol ebx, 08                         ; compliquΘ
:00401226 03D3                    add edx, ebx                        ; du crackme
:00401228 40                      inc eax                             ; se case
:00401229 803800                  cmp byte ptr [eax], 00              ; dans ces
:0040122C 75F3                    jne 00401221                        ; quelques
:0040122E 52                      push edx                            ; lignes

* Possible StringData Ref from Data Obj ->"%lX"
                                  |
:0040122F 6854204000              push 00402054
:00401234 68BF204000              push 004020BF

* Reference To: USER32.wsprintfA, Ord:0000h
                                  |
:00401239 E88F000000              Call 004012CD
:0040123E BBBF204000              mov ebx, 004020BF                   ] il y a une chaεne en 004020BF
:00401243 803B38                  cmp byte ptr [ebx], 38              ] sa 1ere lettre doit Ωtre 38h = 8 \
:00401246 7535                    jne 0040127D                        ]                                  | Ce
:00401248 807B0144                cmp byte ptr [ebx+01], 44           ] sa 2e      "     "    "  44h = D | 
:0040124C 752F                    jne 0040127D                        ]                                  | qui
:0040124E 807B0243                cmp byte ptr [ebx+02], 43           ] sa 3e      "     "    "  43h = C | 
:00401252 7529                    jne 0040127D                        ]                                  | nous
:00401254 807B0341                cmp byte ptr [ebx+03], 41           ] sa 4e      "     "    "  41h = A |
:00401258 7523                    jne 0040127D                        ]                                  | donne
:0040125A 807B0446                cmp byte ptr [ebx+04], 46           ] sa 5e      "     "    "  46h = F |
:0040125E 751D                    jne 0040127D                        ]                                  | 8DCAF368
:00401260 807B0533                cmp byte ptr [ebx+05], 33           ] sa 6e      "     "    "  33h = 3 |
:00401264 751D                    jne 0040127D                        ]                                  | ...
:00401266 807B0636                cmp byte ptr [ebx+06], 36           ] sa 7e      "     "    "  36h = 6 |
:0040126A 751D                    jne 0040127D                        ]                                  |
:0040126C 807B0738                cmp byte ptr [ebx+07], 38           ] sa 8e      "     "    "  38h = 8 /
:00401270 750B                    jne 0040127D                        
:00401272 B801000000              mov eax, 00000001                   <<< si on arrive lα, on est ok
:00401277 5A                      pop edx
:00401278 5B                      pop ebx
:00401279 C9                      leave
:0040127A C20400                  ret 0004


----------------------------------------------------------------------






:00401221 8A18                    mov bl, byte ptr [eax]
:00401223 C1C308                  rol ebx, 08
:00401226 03D3                    add edx, ebx
:00401228 40                      inc eax
:00401229 803800                  cmp byte ptr [eax], 00
:0040122C 75F3                    jne 00401221

En fait, dans cette partie de code le premier caractΦre de notre faux serial,
est mit dans bl puis on effectue une rotation de 8bits vers la gauche.
On ajoute le rΘsultat α edx et on recommence jusqu'α avoir fait passer tout le
monde dans la moulinette.
Comme je ne sais pas exactement α quoi correspond le rol, je matte sous softice.
Je vais prendre 12345 comme exemple de serial:

_________________________________________________________________________

BYTE PTR [EAX]=31h
mov bl, byte ptr [eax] >>>   EBX=00000031   EDX=00000000
rol ebx, 08            >>>   EBX=00003100   EDX=00000000
add edx, ebx           >>>   EBX=00003100   EDX=00003100

...boucle...

BYTE PTR [EAX]=32h
mov bl, byte ptr [eax] >>>   EBX=00003132   EDX=00003100
rol ebx, 08            >>>   EBX=00313200   EDX=00003100
add edx, ebx           >>>   EBX=00313200   EDX=00316300

...boucle...

BYTE PTR [EAX]=33h
mov bl, byte ptr [eax] >>>   EBX=00313233   EDX=00316300
rol ebx, 08            >>>   EBX=31323300   EDX=00316300
add edx, ebx           >>>   EBX=31323300   EDX=31639600

...boucle...

BYTE PTR [EAX]=34h
mov bl, byte ptr [eax] >>>   EBX=31323334   EDX=31639600
rol ebx, 08            >>>   EBX=32333431   EDX=31639600
add edx, ebx           >>>   EBX=32333431   EDX=6396CA31

...boucle...

BYTE PTR [EAX]=34h
mov bl, byte ptr [eax] >>>   EBX=32333435   EDX=6396CA31
rol ebx, 08            >>>   EBX=33343532   EDX=6396CA31
add edx, ebx           >>>   EBX=33343532   EDX=96CAFF63
_________________________________________________________________________

Ensuite le wsprintfA, va transformer la valeur de EDX en un vrai chiffre,
de faτon α pouvoir Ωtre comparΘ ensuite avec 8DCAF368.
Ici on a 96CAFF63 au lieu de 8DCAF368.



On va s'imaginer que le bon serial fait 8 caractΦres.
Soit X la valeur dΘcimale du 1er, Y celle du 2nd, Z celle du 3e,
A celle 4e, ..., et E celle du 8e.

On aura: (EBX)

          00  00   X  00   |
      +   00   X   Y  00   |   Petite parenthΦse pour la suite:
      +    X   Y   Z  00   |   8Dh = 141(d)
      +    Y   Z   A   X   |   CAh = 202(d)
      +    Z   A   B   Y   |   F3h = 243(d)
      +    A   B   C   Z   |   68h = 104(d)
      +    B   C   D   A   |
      +    C   D   E   B   |
                           |
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
      =  141 202 243 104            
     (=  8Dh CAh F3h 68h) 




DONC:     X + Y + Z + A + B             = 104
»»»»»     X + Y + Z + A + B + C         = 141  >>> C = 141 - 104 = 37
          X + Y + Z + A + B + C + D     = 202  >>> D = 202 - 141 = 61
          X + Y + Z + A + B + C + D + E = 243  >>> E = 243 - 202 = 41

Et        X ~ Y ~ Z ~ A ~ B ~ 104/5     = 20 + 20 + 20 + 20 + 24 = 104

D'o∙      X=20  B=24 \  Soit -->  X=14h  B=18h
          Y=20  C=37  \  en  -->  Y=14h  C=25h
          Z=20  D=61  / hexa -->  Z=14h  D=3Dh
          A=20  E=41 /       -->  A=14h  E=29h

          
          Vous tapez τa dans votre Θditeur hexa et ca vous donne:      %=)

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:CRAAAAAAAAAAAACCCCCCCCKKKKKEEEEEDDDD !!!!!!!!!!:
'''''''''''''''''''''''''''''''''''''''''''''''''

Le mot de la fin: j'ai fait compliquΘ parce qu'avec 5 caractΦres ca donne 44%=)
(104/2=52=34h plus les trois autres chars). sinon je suis vachement fier d'avoir
rΘsolu le truc.

voili @+ all

bon et puis les greetzs habituels bien sur...
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»

analyst, artif, Ash, +Christal, CrackerJo, cRaZy666, Detten, DOUG DC10,
Gbillou, iorior, JeK, JeN, K-509, Kahel, KuSh, LiseGrim, NuliX, Phlos,
Rebel, RocketSpawn, SILKSCALP, silvΦre, Skinny3D, slap, sNiPEr, SynApsus,
TiPiaX, TomRipley, tONiARd, ToToMaN, TuX69, TwingMustyz, wOODY^dRN




----









# 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z