                           _______                   ______
                          |   _   |-----.--.--.-----.   _  \
                          |   1___|  -__|  |  |  -__|.  |   |
                          |____   |_____|\___/|_____|.  |   |
                          |:  1   |                 |:  |   |
                          |::.. . | POLISH CRACKERS |::.|   |
                          `---===='__             __`-==_---'
                             |       |-----.---.-.   Y   |
                             |.|   | |  -__|  _  |.      |
                             `-|.  |-'_____|___._|. \_/  |
                               |:  |             |:  |   |
                               |::.|             |::.|:. |
                               `---'             `--- ---'


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-i n f o r m a t i o n s-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  prog Name  : tEtRYk 1.3 by kelog.^7TeaM
  Date       : 26.01.2001 
  Cracked by : Kali 
  What       : tut;)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-t u t o r i a l-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  
CzesC!


Dzis zajmiemy sie malutkim crackme napisanym przez keloga. Ma ono dosc ciekawe
zabezpieczenie. Warto bylo sie nim zajac...

Do pracy potrzeba:

W32Dasm 8.93
Hiev 6.30
ProcDump 1.60

Uruchamiamy crackme i wysuwa nam sie CD ROM! Chyba crackme odwoluje sie do jakiegos dll-a 
z systemu, konkretnie winmm.dll. 

Klikamy na about i widzimy, ze musimy spatchowac tylko *JEDEN* bajt aby crackme wyswietlilo na statusie napis, ze je zlamalismy.

Oki, let's crack it!
Uruchamiamy Dissasembler, po obejrzeniu kodu stwierdzilem, ze jest on spakowany, ale czym? Sprawdzmy to ProcDumpem...
Jak myslisz czym jest spakowany? No jasne, ze UPX-em. Przed rozpakowaniem bylem 
pewny na 99,9% ze to wlasnie on, heh. mialem takie przeczucie...

Oki, ponownie wlazimy do dissasma i ogladamy stringi. Jest tutaj kilka interesujacych:


* Possible StringData Ref from Data Obj ->"BRAWO !!! Zlamales mnie !!!"

:0040121B      68FD334000       push 004033FD   <---- yes, that's it!
:00401220      6A67             push 00000067
:00401222      FF7508           push [ebp+08]    

* Reference To: USER.SetDlgItemTextA, Ord:0000h

:00401225      E8FA000000       call 00401324
:0040122A      EB11             jmp 0040123D 

* Possible StringData Ref from Data Obj ->"Jeszcze mnie nie zlamales :*)"

:0040122C     68DF334000        push 004033DF   <---- oh no,i hate it!
:00401231     6A67              push 00000067
:00401233     FF7508            push [ebp+08]


* Reference To: USER.SetDlgItemTextA, Ord:0000h

:00401225     E8FA000000       call 00401324
:0040122A     EB11             jmp 0040123D    




Kilka linijek wyzej mamy:

..........................................................................    


* Reference To: USER32. FindWindowExA, Ord:0000h

:004011B8     E843010000       call 00401300
:004011BD     85C0             test eax,eax
:004011BF     756B             jne 0040122C    <--------- (1)

..........................................................................    


* Reference To: KERNEL32.GetProcAddress, Ord:0000h

:004011D1     E878010000       call 0040134E
:004011D6     8038CC           cmp byte ptr [eax], CC
:004011D9     7502             jne 004011DD
:004011DB     EB4F             jmp 0040122C    <--------- (2)


..........................................................................    


* Reference To: KERNEL32.GetDriveTypeA, Ord:0000h

:004011EB     E852010000       call 00401342        
:004011F0     83F805           cmp eax, 00000005   
:004011F3     7402             je 004011F7
:004011F5     EB35             jmp 0040122C    <--------- (3)


..........................................................................    


:004011F7     813D193440000A3B8301   cmp dword ptr [00403419], 01833B0A
:004011F7     7529                   jne 0040122C   <------------------------(4)
:004011F7     813D1D34400017B10000   cmp dword ptr [0040341D], 0000B117
:004011F7     741D                   je 0040122C    <----------------------- (5)
:004011F7     813D30344000EA020000   cmp dword ptr [00403430], 000002EA 
:004011F7     7411                   je 0040122C    <------------------------(6)


..........................................................................    


Skoki od (1) do (6) prowadza nas do tego kawalku kodu:

* Possible StringData Ref from Data Obj ->"Jeszcze mnie nie zlamales :*)"

:0040122C     68DF334000        push 004033DF   <---- nie tylko nie to...
:00401231     6A67              push 00000067
:00401233     FF7508            push [ebp+08]


Jeszcze wyzej mamy wywolanie MessageBoxA, sprawdzmy co idzie na stos i co nastepuje po wywolaniu...

:00401193     68DC314000       push 004031DC   <---- about tetryk
:00401198     6A00             push 00000000

* Reference To: USER32. MessageBoxA, Ord:0000h

:0040119A     E873010000       call 00401312
:0040119F     E9B4000000       jmp 00401258 (7) <---- interesujace....

* Reference by a (U)nconditional or (C)onditional Jump at Address:
 :0040118A(C)
 
:004011A4     6683F866         cmp ax, 0066  
:004011A8     0F8592000000     jne 00401240 
:004011AE     33C0             xor eax,eax
* Possible StringData Ref from Data Obj ->"The Customiser"

:004011B0     6821344000       push 00403421
:004011B5     50               push eax
:004011B6     50               push eax
:004011B7     50               push eax  

Po wywolaniu MessageBoxA skok pod adresem 0040119F wykonuje sie i skacze do:

:004012E4    B801000000        mov eax,00000001
:004012E9    C9                leave
:004012EA    C21000            ret 0010

pomijajac wszystko co wyzej! Poprostu skok ten "przelatuje" nad wszystkimi instrukcjami.
Wiec w takim wypadku na statusie nie zobaczymy nic! Naszczescie mamy pozwolenie na patch.  

Sprobujmy "zaprowadzic" ten skok pod adres:
    

* Possible StringData Ref from Data Obj ->"BRAWO !!! Zlamales mnie !!!"

:0040121B      68FD334000       push 004033FD     <--- o tutaj!
:00401220      6A67             push 00000067
:00401222      FF7508           push [ebp+08]    

Zobaczymy co sie stanie gdy zmienimy:

   E9|B4|000000       jmp 00401258
      ^
      to chyba ten *JEDEN* bajt

na:

   E9|77|000000       jmp 0040121B


Teraz czas aby uruchomic crackme. Z pozoru nic sie nie dzieje, klikamy na about i widzimy
na statusie napis: "BRAWO !!! Zlamales mnie !!!" 


Pozdrawiam wszystkich!

Kali^7t    


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=members of SeveN TeaM-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  Prezident:      Mr. Ketchup..................founder/coder/cracker/writer
  VizePrezident:  Jube.........................founder/coder/cracker/writer
  Seniors:
                  pawlos.....................................cracker/writer
  Division:
                  {ATOM}....................................decoder/cracker
                  Jelit Wypatrosz...................................cracker
                  zoomek.....................................writer/cracker
  Trial:
                  kelog.............................................cracker
                  Kali..............................................cracker
                  klemik............................................cracker
  WebPage:
                  Civ.pl.......................................server_admin
                  LIAR..............................webmaster/graphic/coder

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-o t h e r s-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  Greets to : Maxibogas, kelog, Jube, Mr.Ketchup, NoiR^, ner, oles`, Liquid, Ma-rYu-sH,
              GREK, eax, Chendler, Creeper^,cinus
 
     groups : CrackPL, AAOCG, CookieCrk, CHInc, Gang, Sigm@PL


  My e-mail: kalicrk@poczta.onet.pl
             ~~~~~~~~~~~~~~~~~~~~~~
  SeveN TeaM - Official WebPage:  http://www.7team.z.pl
                                  ~~~~~~~~~~~~~~~~~~~~~

=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=E-O-T=-=-=-=-
  