֯
s    SSSSSSSSSS  iiii  GGGGGGG    MMM            MMM   @@@@@@@@@@            s
s   SSSSSSSSSS  iiii  GGGGGGGGG   MMMM          MMMM  @@@@@@@@@@@@@          s
s   SSSS             GGG          MMMMM       MMMMM  @@          @@  	     s
s   SSS        iiiii GGG          MMM MM    MMM MMM @@   @@@@@   @@          s
s   SSSS      iiiii  GGG          MMM  MM  MM   MMM @@  @@   @@  @@          s
s    SSSSS    iiii   GGG  GGG     MMM  MM  MM  MMM  @@  @@   @@  @@  	     s
s      SSS    iiii   GGG  GGGG     MMM  MMMM  MMMM  @@  @@   @@  @@          s
s       SSS   iiii   GGG    GGG    MMM   MM   MMMM  @@  @@@@@@@  @@          s
s      SSSSS  iiii   GGG     GG   MMM          MMM  @@   @@@@@@@@@           s
s       SSS   iiii   GGG     GG   MMM (c) by    MMM @@               	     s
s SSSSSSSSS  iiiii   GGGGGGGGGG  MMM  bORNbURNT MMM  @@@@@@@@@@@@@ Founder   s
sSSSSSSSSS  iiiii     GGGGGGGG   MMM             MMM  @@@@@@@@@@@  LukasW    s
CL
                                                                              
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
                           A b o u t   t h i s   f i l e                       
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
                                                                               
  [ ] crack                      Writer: Creeper^
                                                                               
  [x] tutorial                   Writers homepage: http://strony.poland.com/creeper
                                                                               
  [ ] full program               Writers E-Mail: creepy@poland.com
                                                                               
  [ ] serial number              Date: 25/10/2000
                                                                               
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
	S i G M @  -  P L     -     http://sigmapl.webprovider.com                
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

Cze all,dzisiaj opisze moj pierwszy zcrackowany Crackme ze skill`em MEDIUM!
A jest to CrackMe 5.0 by Kaliber777 (Skill : Medium)

Narzedzia : 
Soft Ice 4.00 (nizsze tez moga byc)
CrackMe 5.0 by Kaliber (patrz strona : www.crackmes.prv.pl)
Umiejetnosc czytania ;)
Zdrowe komorki mozgowe!
Cos czymm mozna oblac zwyciestwo nad crackmekiem (np piwo bezalkoholowe ;))

Na poczatek zakladam ze masz pewien know how z SoftIce`m wiec nie bede opisywal
jak zaklada sie pulapki i jak sie do SI wchodzi.

Jedziemy!

Puszczamy CrackMe i widzimy ze wykonal go Kaliber777 i widzimy ze musimy sobie
wpisac Name i Serial. Ja w name wpisalem "Creeper^" a w Serial "987654321".
Wchodzimy do S-Ice`a i zastawiamy pulapke na getdlgitemtexta.Zakladamy na nia
dlatego , ze crackmek na getwindowtexta sie nie lapie. Teraz wciskamy
F11 i jestesmy z tad,skad wywolana zostala funkcja getdlgitemtexta.
Teraz wciskasz F5 bo przy pierwszym zlapaniu sie program pobral text z Name,wiec
teraz pobierze z Serila.wiec jeszcze F11 i wszystko OK.
Teraz na ekranie w SI widzisz nastepujacy kawalek kodu :

:0040104E BF00334000              mov edi, 00403300  <<<< Tutaj wpychany jest Serial
:00401053 893D04374000            mov dword ptr [00403704], edi <<< Nic ciekawego
:00401059 8AF8                    mov bh, al <<< do BH wciskane jest AL (al=dlugosc naszego seriala czyli w moim przypadku 9)
:0040105B D0E8                    shr al, 1 <<< SHRowana jest dlugosc seriala z 1 i wychodzi 4.
:0040105D 38D8                    cmp al, bl <<< Porownanie 4 z bl a w bl=8.
:0040105F 0F8532010000            jne 00401197 <<< Skok jesli nie 0 do : Fuck you!
Tutaj poprostu jest sprawdzanie naszej dlugosci Serial. Jak to odwrocic?

Mamy nastepujace rownanie (al niewiadoma) :
al SHR 1 = 8 <-- Odwracamy na : 8 SHL 1 = 16 (wpisz w SI : ?8 << 1 i wyjdzie 16 DEC)

Wiec teraz jak wpiszemy w Serial 16 znakow to 10>>1=8 (>> to shr) 10 dlatego ze to system
szesnastkowy a 10H=16D.Dobra,wychodzimy z crackmika i wpisujemy 16 znakow w Serial.
Ja wpisalem : 9876543210abcdef
Jedziemy dalej.

:00401065 0FB6CB                  movzx ecx, bl
:00401068 807C31FF20              cmp byte ptr [ecx+esi-01], 20
:0040106D 7429                    je 00401098
:0040106F 807C31FF30              cmp byte ptr [ecx+esi-01], 30
:00401074 0F821D010000            jb 00401197
:0040107A 807C31FF39              cmp byte ptr [ecx+esi-01], 39
:0040107F 7617                    jbe 00401098
:00401081 807C31FF61              cmp byte ptr [ecx+esi-01], 61
:00401086 0F820B010000            jb 00401197
:0040108C 807C31FF7A              cmp byte ptr [ecx+esi-01], 7A
:00401091 7605                    jbe 00401098
:00401093 E9FF000000              jmp 00401197
:00401098 E2CE                    loop 00401068

To wszystko mozna krotko omowic tzn jesli to co wpiszemy w NAME bedzie spelnialo
powyzsze warunki to skok do 00401098 a jesli nie to FUCK SIE! Powiem od razu,ze
jestli skoczymy di 00401098 to wciskamy F8 zeby wejsc znowu w takie samo cos
tylko ze sa inne literki porownywane. Zeby sie duzo nie bawic to od razu powiem
ze NAME : arffpera SPELNIA powyzsze warunki.


Jesli juz to wszystko przejdziesz to dojdz do tego miejsca : 

:004010C8 0FB6CB                  movzx ecx, bl <<<Tutaj sie zatrzymaj.
:004010CB 33D2                    xor edx, edx  <<< Zerowanie EDX
:004010CD 8BC1                    mov eax, ecx  <<< Do EAX idzie wartosc ECX.
:004010CF D1E0                    shl eax, 1   <<< SHLowanie eax o 1.
:004010D1 48                      dec eax  <<< EAX=EAX-1 czyli zmniejszanie EAX o j.
:004010D2 8BD9                    mov ebx, ecx  <<< Do EBX idzie wartosc z ECX
:004010D4 D1E3                    shl ebx, 1   <<< SHLowane jest EBX o 1
:004010D6 8A93FF324000            mov dl, byte ptr [ebx+004032FF]  <<< Tutaj nic wlasciwie sie nie dzieje
:004010DC 88150A374000            mov byte ptr [0040370A], dl   <<< Tu tesh
:004010E2 8AB3FE324000            mov dh, byte ptr [ebx+004032FE]  <<< To samo
:004010E8 88350B374000            mov byte ptr [0040370B], dh   <<< znowu tu tesh nic
:004010EE A00A374000              mov al, byte ptr [0040370A]   <<< Az do tego momentu,tutaj jest wpychany do AL znak z 0040370A
:004010F3 50                      push eax  <<< Kladz EAX to na STOS
:004010F4 E852020000              call 0040134B   <<<<< Tutaj zaraz wejdziemy (ale nie teraz!)
:004010F9 0FB698E3304000          movzx ebx, byte ptr [eax+004030E3]
:00401100 881D0C374000            mov byte ptr [0040370C], bl
:00401106 A00B374000              mov al, byte ptr [0040370B] <<<< Tutaj nastepny znak idzie do al
:0040110B 50                      push eax   <<< To samo co przed chwilka
:0040110C E83A020000              call 0040134B  <<< Tesh zaraz tu wejdziemy (ale jeszcze nie teraz ;))
:00401111 0FB698E3304000          movzx ebx, byte ptr [eax+004030E3]  <<< do EBX,a o tym pozniej.
:00401118 881D0D374000            mov byte ptr [0040370D], bl   <<< o tym tez.
:0040111E 0FB6050C374000          movzx eax, byte ptr [0040370C]   <<< terz nie trzeba o tym mowic
:00401125 F7E3                    mul ebx  <<< Tutaj jest mnozenie
:00401127 D1E8                    shr eax, 1  <<< SHR EAX o 1
:00401129 BB25000000              mov ebx, 00000025  do EBX idzie 25H
:0040112E F7F3                    div ebx  <<< Dziel EBX
:00401130 83FA09                  cmp edx, 00000009  <<< Porownaj EDX z 9
:00401133 720A                    jb 0040113F  <<< Skok jesli mniejsze d 0040113F

U dolu to samo tyle tylko ze porownanie z innymi wartosciami.
:00401135 83FA0A                  cmp edx, 0000000A
:00401138 740A                    je 00401144
:0040113A 83FA25                  cmp edx, 00000025
:0040113D 720C                    jb 0040114B
:0040113F 83C230                  add edx, 00000030
:00401142 EB0A                    jmp 0040114E

Dobra,teraz przeanalizujmy sobie te 2 CALLE ktore oposcilem.

Pierwszy : 
:004010F4 E852020000              call 0040134B
Drugi :
:0040110C E83A020000              call 0040134B

Zauwaz jeszcze ze te CALLe odwoluja sie do tego samego 0040134B czyli mam
do omowienia jedna procke. Wejdzmy do niej (F8),widzisz teraz:

:0040134B 55                      push ebp   <<< Ma stos z EBP
:0040134C 8BEC                    mov ebp, esp  <<< tutaj jakies smiecie.
:0040134E 33C0                    xor eax, eax   <<< Zeruj EAX
:00401350 8A4508                  mov al, byte ptr [ebp+08] <<< do AL wl;adama kest wartpsc z ebp+08
:00401353 3C39                    cmp al, 39   <<< Sprawdzenie al z 39H
:00401355 7604                    jbe 0040135B   Jesli al<=39 to skok do okreslonego miejsca
:00401357 3C66                    cmp al, 66  <<< jesli powuzsza procka nie da skoku to al porownaj z 66.
:00401359 7604                    jbe 0040135F  <<< ten sam skox
:0040135B 2C30                    sub al, 30  <<< w przecywnych wpyadkach al-30
:0040135D EB04                    jmp 00401363 <<< skok do 401363
:0040135F 2C61                    sub al, 61  <<< al-61
:00401361 040A                    add al, 0A  <<< al+0AH
:00401363 C9                      leave    <<< nic
:00401364 C20400                  ret 0004  <<< wychodzimy z procki!

Tutaj poprostu rozchodzi sie o takie cos ze przy okreslonych znakach
wystapi okreslona operacja. Przenosimy sie jednak do
procki przed wejsciem do tego CALLa.
Wiec tak,jesli te dluuuga gorna procke (te jeszcze przed tym callem ktory teraz opisalem)
przejdziemy to w pewnym momencie ukaze ci sie takie cos :

:0040114E B800354000              mov eax, 00403500
:00401153 885401FF                mov byte ptr [ecx+eax-01], dl
:00401157 49                      dec ecx
:00401158 83F900                  cmp ecx, 00000000  <<<< ECX licznikiem znakow
:0040115B 0F856AFFFFFF            jne 004010CB    <<<< Tutaj jesli ECX<>0 to skok do goory procki

Czyli tak,to jest poprostu zwykla petla robiaca koszmar z twoim umyslem ;)

Zdradze tutaj,ze w tej procce licza sie 2 ostatnie znaki.

W ponizszym kawalku kodu wodac ze jestli JNE nie nastapi to wykonczyly sie juz znaki z
naszego SERIAL`a i idziemy tutaj.

:00401161 6800354000              push 00403500   <<< Nic
:00401166 6800314000              push 00403100   <<< Nic
:0040116B E86A020000              Call 004013DA   <<< Nic
:00401170 0FB61D0D374000          movzx ebx, byte ptr [0040370D] <<< wciskana jest okreslona wartosc
:00401177 F7E3                    mul ebx    <<< Mnozenie EBX
:00401179 83F800                  cmp eax, 00000000  <<<< Tutaj EAX ma byc rowne 0
:0040117C 7519                    jne 00401197  <<< Jesli tutaj nie wyjdzie zero to skok do FUCK YOU!

Teraz zlamiemy Crackmeka! Musimy jednak wspomniec jeden fragment :

:004010EE A00A374000              mov al, byte ptr [0040370A]   
:004010F3 50                      push eax  
:004010F4 E852020000              call 0040134B   
:004010F9 0FB698E3304000          movzx ebx, byte ptr [eax+004030E3] <<< To bylo wczesniej w tej dluuugiej petli!

Dowiedzmy sie co jest w 004030E3. W SI wpisujemy : D 004030E3 Wyskoczyly nam jakies
dupki i srubki tzn 03 05 itd itd 1D itd az do 00.Poprostu w CALLu zostaje przemieniony
znak z AL i teraz po tych operacjach wynik jest zapisywany w EAX.Po CALLu
d EBX wciskane jest eax+004030e3 czyli w 004030e3 sa okreslone wartosci i jesli dodamy
do niej jakies okreslone wartosci ktore CALL zamieni tak jak chcemy otrzymamy jakis
tam wynik.

Pierwszy znak Seriala teraz najbardziej sie liczy,bo pod koniec (po obiegu petli) ma wyjsc
w eax 0 a EBX jest wczesniej mnozone.Tzn po mnozeniu EBX , EAX=0.

Jak to zrobic? Jesli dobrze przyjrzysz sie procce to skapniesz sie ze
po CALLu ktory mieli pierwszy znak naszego SERIAL wyjdzie jakis wynik np 1F z dodania
eax+004030e3.
EBX =1F a EAX = 1.

MUL EBX = EAX*EBX czyli 1*1F i wynik w EAX czyli  1F , Teraz porownanie w 0.

Jasne,teraz juz chyba wiesz co zrobic. Nie? Poprostu zrob tak :

Wpisz 1 literke seriala tak,zeby spelniala poczatkowe warunki,potem po CALLu
dala 0 i po wymnozeniu z 1 dala 0.

Ta magiczna liczba jest f poniewaz Crackmek w CALLu 0040134B sprawdza :


:00401350 8A4508                  mov al, byte ptr [ebp+08] <<< do AL wkladana jest wartosc z ebp+08
:00401353 3C39                    cmp al, 39   <<< Sprawdzenie al z 39H
:00401355 7604                    jbe 0040135B   Jesli al<=39 to skok do okreslonego miejsca
:00401357 3C66                    cmp al, 66  <<< jesli powuzsza procka nie da skoku to al porownaj z 66.
:00401359 7604                    jbe 0040135F  <<< ten sam skox
:0040135B 2C30                    sub al, 30  <<< w przecywnych wpyadkach al-30
:0040135D EB04                    jmp 00401363 <<< skok do 401363
:0040135F 2C61                    sub al, 61  <<< al-61
:00401361 040A                    add al, 0A  <<< al+0AH
:00401363 C9                      leave    <<< nic
:00401364 C20400                  ret 0004  <<< wychodzimy z procki!

Zamiast AL masz f
czyli : CMP f,39

f=66H CMP z 39 i skok JBE czyli skok ponizej lub rozwne nie wykonuje sie.

CMP 66,66 czyli JBE sie teraz wykonuje i skaczemy do 0040135f a tam al-61+0a.
i w wyniku tego wychodzi EAX=15. Teraz EAX czyli 15 + 004030E3=00
i na koniec mul EBX czyli EBX = EAX*EBX a w EBX mamy 0 a w EAX mamy 1.
0*1=0 i CMP eax,0 JNZ nie nastepuje i mamy Crackmeka zcrackowanego!

				Koncowe dane :
				*************************
				Name:  arffpera
				Serial : f076543210abcdef
				*************************

Zakonczenie.
Musze sie pochwalic bo to pierwsze moje Crackme zcrackowane pod skillem Medium!
Podoba mi sie ta procka kodujaca,bo jest ona bardzo prosta,tylko ze kod jest
zawily i trzeba sie dokladnie mu przyjrzec.

!!! Jesli czegos nie rozumiesz (a powinienes ;)) wal na E-mail`a! !!!
Wierzcie mi,ze wytlumaczenie dokladne tej procki nie jest proste i wytlumaczylem
ja jak najlepiej umialem bo dla mnie bylo bardzo trudno to wszystko Ci przedstawic,
wiec nie zrazaj sie jak czegos nie rozumiesz tylko przeczytaj interesujacy Cie kawalek
pare razy az zaczniesz czaic i wtedy zkapujesz ze to wcale takie trudne nie jest!

_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
                                                                               
                          M e M b E r S   of   S i G M @ - P L                 
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
                                                                               
    President:       bORNbURNT...............webadmin/graphics/coder/cracker   
                                                                               
    VicePresident:   Creeper^....................VicePresident/coder/cracker   


                                                                               
    The Bas3:        Slonik....................................coder/cracker   
                     Virking...................................coder/cracker   
                     Hacek.....................................coder/cracker   
                     LukasW.............................Founder/code/cracker
                                                                               
                                                                               
    Trial:            _1138.............................Trial Member/cracker
	               Andy....................Webadmin/Trial Member/cracker
                     BBerry.............................Trial Member/cracker   

_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
                                    I N F O                                    
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Jak chcesz wejsc do naszej grupy to napisz E-Mail do bORNbURNT`a, albo do Creeper^`a
Bedziesz musial zlamac Ich CrackMe`sa ktorego ci podesla...                      
E-mail`e znajdziesz na naszej oficialnej stronie www : http://sigmapl.webprovider.com
Oprocz tego mozesz sie z nimi zkontaktowac w IRC-u na channel-u #sigmapl.            
