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

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

   Tut name   : Crackme v1.0 by Pokropek
   Date       : 05 Jun 2000
   Writed by  : Jube
   What       : How to find code

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

Bedzie nam potrzebne kilka rzeczy:
1. Crackme v1.0 by Pokropek
   http://www.crackmes.prv.pl/ (nr 56)
2. SoftIce - ja mam wersje 4.00 ale moze byc inna
   http://www.crackpltools.prv.pl/
3. Mozg :) i ochota do czytania

Zaczynamy!
Uruchamiamy nasze crackme i widzimy, ze trzeba tylko znalezc kod. Najpierw
naciskamy About i dowiadujemy sie paru rzeczy o autorze :), nastepnie
klikamy na ten najdluzszy przycisk i wyskakuje nam MessageBox ze trzeba
znalezc code i to wcale nie jest takie trudne ... zobaczymy :)
No to wpisujemy "fuck you" i naciskamy OK. Dostajemy komunikat ze to zly kod.
Teraz standardowo zakladamy pulapki na pobranie tekstu:
:bpx GetDlgItemTextA
:bpx GetWindowTextA
Wychodzimy z SI i teraz naciskamy OK i ku naszemu zdziwieniu debugger nie
przejmuje kontroli i znowu ten sam komunikat. Ciekawe dlaczego ...myslimy...
moze przed pobraniem tekstu najpierw sprawdza jego dlugosc ? ...
No to zakladamy sobie pulapke na:
:bpx GetWindowTextLengthA
I teraz probujemy nacisnac OK. No, nareszcie SI przejal kontrole. Naciskamy
F11 aby wyjsc z funkcji i widzimy :
 
017F:00405E4B  E888E1FFFF          CALL      USER32!GetWindowTextLengthA
017F:00405E50  8BD8                MOV       EBX,EAX		- tu jestesmy
017F:00405E52  83FB0C              CMP       EBX,0C
017F:00405E55  0F85DD030000        JNZ       00406238		- bad boy

Wynik funkcji czyli dlugosc naszego haselka jest w eax. Widzimy ze wartosc ta
zostaje przypisana rejestrowi ebx po czym ebx jest porownywane z 0C i jezeli
nie jest rowne to zly kod. A co to wlasciwie jest 0C ? wpisujemy w SI :
: ? 0C
i widzimy ze w systemie dziesietnym jest to 12 czyli tyle znakow musi miec
nasz kod. Zmieniamy wpisany przez naz zwrot na "1234567890AB". Teraz omijamy
pare zbednych linijek kodu i dochodzimy do :

017F:00405E6F  E85CE1FFFF          CALL      USER32!GetWindowTextA
017F:00405E74  8D459C              LEA       EAX,[EBP-64]
017F:00405E77  8A5604              MOV       DL,[ESI+04]	(1)
017F:00405E7A  E83DD1FFFF          CALL      00402FBC
017F:00405E7F  8B559C              MOV       EDX,[EBP-64]
017F:00405E82  8D45FC              LEA       EAX,[EBP-04]
017F:00405E85  E84AD1FFFF          CALL      00402FD4
017F:00405E8A  8D45CC              LEA       EAX,[EBP-34]
017F:00405E8D  BA80624000          MOV       EDX,00406280
017F:00405E92  E8A9D0FFFF          CALL      00402F40
017F:00405E97  8B45FC              MOV       EAX,[EBP-04]	(2)
017F:00405E9A  8B55CC              MOV       EDX,[EBP-34]	(3)
017F:00405E9D  E8C6D1FFFF          CALL      00403068		(4)
017F:00405EA2  0F8577030000        JNZ       0040621F		(5)

Tutaj nalezy zwrocic uwage na to co sie dzieje w trzech oznaczonych przeze
mnie linijkach:
(1) :	Do DL jest ladowany jakis znak (w naszym przypadku "5"). Chcemy
	sprawdzic skad jest ten znak wiec wykonujemy komende:
	d esi
	Teraz widzimy ze jest to nasz serial a w DL lezy jego piaty znak
(2 i 3):tutaj sa wprowadzane parametry do funkcji (4)
(4) :	funkcja porownujaca dwa znaki
(5) :	skok jezeli nie rowne

Po przejsciu przez (3) linijke sprawdzamy co kryje sie pod adresami spod
rejestrow eax i edx :
:d eax
widzimy "5" czyli piaty znak naszego seriala
:d edx
widzimy "f" czyli tak powinien wygladac piaty znak naszego seriala

Kiedy kursor jest na skoku (5) to piszemy:
:r fl z
Teraz crackme nas nie wyrzuci bo mysli ze litery sa takie same :)
Dalej mamy takie cos:

017F:00405EA8  8D459C              LEA       EAX,[EBP-64]
017F:00405EAB  8A5601              MOV       DL,[ESI+01]
017F:00405EAE  E809D1FFFF          CALL      00402FBC
017F:00405EB3  8B559C              MOV       EDX,[EBP-64]
017F:00405EB6  8D45F8              LEA       EAX,[EBP-08]
017F:00405EB9  E816D1FFFF          CALL      00402FD4
017F:00405EBE  8D45C8              LEA       EAX,[EBP-38]
017F:00405EC1  BA8C624000          MOV       EDX,0040628C
017F:00405EC6  E875D0FFFF          CALL      00402F40
017F:00405ECB  8B45F8              MOV       EAX,[EBP-08]
017F:00405ECE  8B55C8              MOV       EDX,[EBP-38]
017F:00405ED1  E892D1FFFF          CALL      00403068
017F:00405ED6  0F852A030000        JNZ       00406206

Cos ci to mowi ? Nic ? No to popatrz pare linijek wyrzej :) Troche podobne...
Dochodzimy do 00405ECB i znowu patrzymy co kryje sie pod adresami ...
Tym razem dowiadujemy sie ze zamiast "2" ma byc "a".
Teraz spisujemy sobie na kartce nasz wpisany kod czyli:
1234567890AB
Podpisujemy pod blednymi znakami prawidlowe czyli:
1234567890AB
 a  f
Teraz analogicznie sprawdzamy reszte kodu (za kazdym razem robimy r fl z).
No i mamy caly Code, tzn:
	4a72f930bc52
Wpisujemy to do naszego krakmika, wylaczamy wszystkie pulapki (bd*)
i naciskamy ok. Tym razem mamy komunikat : Ahh udalo ci si! :)
Czyli chyba wszystko jest ok :)

To juz koniec :) Mam nadzieje ze jeszcze sie spotkamy :)
Wszystkie uwagi ------> jube2@poczta.onet.pl

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

  Prezident:      MaxiBogas...........................founder/coder/cracker
  VizePrezident:  Plastek.............................founder/coder/cracker
  Seniors:
                  pawlos............................................cracker
                  Mr. Ketchup.......................................cracker 
                  Rusty.............................................cracker
  Division:
                  Jube........................................cracker/coder
                  {ATOM}....................................decoder/cracker
                  jamman............................................cracker
  Trial:
                  Pokropek..........................................cracker
                  lukasw............................................cracker
                  Dumboo............................................cracker
                  zoomek.....................................writer/cracker
  WebPage:
                  LIAR..............................webmaster/graphic/coder
                  _2000_.......................................server_admin

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

  Greets to : mNICH, Plastek, Maxibogas, massh
     groups : CrackPL, AAOCG, CookieCrk

  My e-mail: jube2@poczta.onet.pl
             ~~~~~~~~~~~~~~~~~~~~
  SeveN TeaM - Official WebPage:  http://www.7team.z.pl
                                  ~~~~~~~~~~~~~~~~~~~~~
-=-=-=E-O-F=-=-=-=E-O-F=-=-=-=E-O-F=-=-=-=E-O-F=-=-=-=E-O-F=-=-=-=E-O-F=-=-=-