____________________________________________________________________________________
                    _________\          |            __________
                   /          \      __-+-  __      |         /\
                  /___________/     /'( |_  )`\     |________/  \
                 |   \       /     / . \/^\/ . \            /   /
                  \   \           /  _)_`-'_(_  \          /   /
                   \   \         /.-~   ).(   ~-.\        /   /
                    \   \       /'     /\_/\     `\      /   /
                     \  /     __  ___  " __"  __  _ _  \/   /
                      \/     / _)(  ,)  (  ) / _)( ) )  \__/_
                            ( (_  )  \  /()\( (_  )  \
                             \__)(_)\_)(_)(_)\__)(_)\_)
                                ___             __
                               (  ,\o l a n d  (  )
                                ) _/ cRACKING   )(__
                               (_)      gROUP  (____)
                                    ____     /\
                                   /  \     /  \
                                  /\   \   /   /
                                    \   \ /   /
                                     \___\___/
_______________________________________________________________________________________

                                CrackPl prezentuje:
				Tutorial #1 by Mr.T
                       na jezyk polski przetlumaczyl Janio
_______________________________________________________________________________________

 Witam w moim pierwszym crackerskim tutorialu, mam nadzieje, 
 ze pomoge wam wszystko zrozumiec :)

 Wybaczcie prosze, moj czysty angielski...


 --  TEN TUTORIAL ZOSTAL NAPISANY TYLKO DLA CELOW EDUKACYJNYCH.  !!! -----


 POTPRZEBNE NARZEDZIA:

 W32DASM 8.9  - ja uzywam tej wersji
 HEX WORKSHOP - ja uzywam wersji 2.50
 DUZY MOZG :D
___________________________________________________________________________________________


 __MALA POMOC__

 DLA W32DASM :
 ____________________
 GOTO CODE LOCATION : Gdy zechcesz sie dostac do pewnego fragmentu kodu, mozesz uzyc
 ~~~~~~~~~~~~~~~~~~~~ tego przycisku, to jest 8 przycisk od lewej strony.
                      Jest na nim napis: Goto CD loc
 _________
 JUMP TO : Kiedy zobaczysz: jump / je / jne / jle etc... uzyj tego przycisku do skoku
 ~~~~~~~~~ pod ten adres. Przycisk znajduje sie na prawo od Goto CD loc.
           Jest na nim napis: Jump To.
 __________
 RET JUMP : Uzyj tego przycisku, zeby powrocic z poprzedniego skoku.
 ~~~~~~~~~~
 ______________
 EXECUTE CALL : Po zobaczeniu: call *** uzyj tego przycisku, do przeniesienia sie pod
 ~~~~~~~~~~~~~~ ten adres. Przycisk znajduje sie po prawo od Jump To. Jest na nim napis: Call.
 _____
 RET : Uzyj tego przycisku do powrotu z ostatniego wywolania call.
 ~~~~~
 ____________________________
 IMPORTED MODULES/FUNCTIONS : Kiedy chcesz zobaczyc jakie funkcje program importuje
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ z Kernela lub innego miejsca Windowsa kliknij na tym przycisku,
                              jest on 8-my od prawej strony. Jest na nim napis: Imp Fn.

 _______________________
 STRING DATA REFERENCE : Gdy chcesz poszukac komunikatu o bledzie lub innych komunikatow, 
 ~~~~~~~~~~~~~~~~~~~~~~~ mozesz uzyc tego przycisku. Znajduje sie na drugiej pozycji, 
			 liczac od prawej strony. Jest na nim napis: Strn REF.

 Errrrr.... Mysle, ze to wszystko o W32DASM.


 DLA HEX-WORKSHOP :
 ____
 F5 : Sluzy do przejscia pod podany offset, jezeli jestes pewien ze offset jest podany 
 ~~~~ w notacji hexadecymalnej, to kliknij Hex i wpisz go bez "h" na koncu.

 Errrrr.... Mysle, ze to wszystko o HEX-WORKSHOP, ja go uzywam.


___LAST WORDS:___

Ta czesc jest wzieta z TKCT's TUTORIAL #1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oto niektore glowne funkcje pomocne w crackingu:

Hex:          Asm:      Means
75 or 0F85    jne       skok jesli nie rowny
74 or 0F84    je        skok jesli rowny
EB            jmp       skok bezposrednio do
90            nop       nie pracuje
77 or 0F87    ja        skok jesli wyzszy
0F86          jna       skok jesli nie wyzszy
0F83          jae       skok jesli wyzszy lub rowny
0F82          jnae      skok jesli nie wyzszy lub rowny
0F82          jb        skok jesli nizszy
0F83          jnb       skok jesli nie nizszy
0F86          jbe       skok jesli nizszy lub rowny
0F87          jnbe      skok jesli nie nizszy lub rowny
0F8F          jg        skok jesli wiekszy
0F8E          jng       skok jesli nie wiekszy
0F8D          jge       skok jesli wiekszy lub rowny
0F8C          jnge      skok jesli nie wiekszy lub rowny
0F8C          jl        skok jesli mniejszy
0F8D          jnl       skok jesli nie mniejszy
0F8E          jle       sko jesli mniejszy lub rowny
0F8F          jnle      skok jesli nie mniejszy lub rowny

                                                                     [ Mr.T ]
__________________________________________________________________________________________


   2  / HOW TO CRACK UNREAL 2.02 ?
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 UNREAL jest swietna Quakeowata gra (ale potrzebuje bardzo szybkiego PC :-( )
 i my zcrackujemy CD-check by grac bez CD ;)

 Coz... Uruchom UNREAL bez CD i co sie dzieje? HARGH !!! :
 "Please insert the Unreal CD-ROM into your drive and press...", to w komunikacie!

 Pojawia sie niewielka trudnosc w zcrackowaniu Unreal, poniewaz komunikat bledu nie znajduje
 sie w pliku UNREAL.EXE ( nononono !!! ), nie szukaj go tam, on jest w WINDOW.DLL. (huhu)
 Wiec zrob kopie WINDOW.DLL jako COPY.DLL, otworz COPY.DLL z W32DASM i otworz
 WINDOW.DLL z Hex-Workshop, Wszystko w porzadku? Lecimy...

 Teraz jestes w COPY.DLL z W32DASM, powinienes poszukac komunikatu bledu, gdy nie ma
 plyty w czytniku. Kliknij na przycisku String Data Reference i poszukaj komunikatu.
 Po podwojnym kliknieciu na nim powinienes ujrzec:

* Reference To: Core.?appFSize@@YAHPBD@Z, Ord:0311h
                                  |
:10B1C4AA FF15E4B6B310            Call dword ptr [10B3B6E4]
:10B1C4B0 83C404                  add esp, 00000004
:10B1C4B3 85C0                    test eax, eax
:10B1C4B5 7F31                    jg 10B1C4E8    <-- Hmmmm.... INTERESUJACE !
:10B1C4B7 6801200000              push 00002001

* Possible StringData Ref from Data Obj ->"Cd Required At Startup"
                                  |
:10B1C4BC 68089DB310              push 10B39D08

* Possible StringData Ref from Data Obj ->"Please insert the Unreal CD-Rom "
                                        ->"into your drive and press OK to "
                                        ->"continue, or Cancel to exit."
                                  |
:10B1C4C1 68989CB310              push 10B39C98 <-- JESTESMY TUTAJ !!!
:10B1C4C6 6A00                    push 00000000

* Reference To: USER32.MessageBoxA, Ord:0195h   <-- POKAZYWANIE KOMUNIKATU O BLEDZIE
                                  |
:10B1C4C8 FF1568B9B310            Call dword ptr [10B3B968]
:10B1C4CE 83F802                  cmp eax, 00000002
:10B1C4D1 75BB                    jne 10B1C48E  <-- OK. SKOK DO POCZATKU
:10B1C4D3 A170B7B310              mov eax, dword ptr [10B3B770]
:10B1C4D8 6A00                    push 00000000
:10B1C4DA C70001000000            mov dword ptr [eax], 00000001

* Reference To: KERNEL32.ExitProcess, Ord:006Bh <-- ANULOWANIE. TUTAJ JEST WYJSCIE.
                                  |
:10B1C4E0 FF1590B8B310            Call dword ptr [10B3B890]
:10B1C4E6 EBA6                    jmp 10B1C48E


 Nie ma zadnego problemu, jestesmy pod adresem 10B1C4C1, idzmy w gore az napotkamy jakis
 call lub jump. I co my widzimy pod 10B1C4B5?

:10B1C4B5 7F31                    jg 10B1C4E8

 Huhuhu... kliknij na przycisku "Jump To", yeah ! Jestesmy w miejscu gdzie rozpoczyna
 sie dzialanie programu po wlozeniu plyty CD, nalezy tak zrobic azeby zawsze tutaj trafiac.
 Zanotuj sobie Offset tego skoku. Wynosi 1B8B5.

 Jedyna rzecza jaka musisz zrobic, to zmienic skok. Zmieniasz "jg 10B1C4E8" na "jump 10B1C4E8".

 Przejdz do Hex-Workshop z WINDOW.DLL, wcisnij F5, wpisz 1B8B5.
 Zmien "7F 31" na "EB 31"

 jg oznacza w assemblerze skok warunkowy.
 EB w notacji hexadecymalnej to jump w assemblerze.

 Zapisz WINDOW.DLL, uruchom UNREAL, WOW !!! Chodzi bez CD !!!  KEWL  !!!
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Mozesz zcrackowac w ten sposob wszystkie wersje UNREAL, jedynie moga pozmieniac sie adresy.

						That's all folks
___________________________________________________________________________________________


   3  / HOW TO CRACK AGE OF EMPIRES 1.0 ?
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 AGE OF EMPIRES to calkiem dobra gra z Microsoftu, bardzo prosto mozna z niej usunac CD-check.

 Uruchom AOE bez CD, huh?? Coz to? Komunikat mowi, ze zapomniales wlozyc CD.
 Zanotuj go, tak wyglada: " You must insert a game CD.. "

 Ok, zrob kopie empires.exe jako copy.exe (zawsze rob kopie swojej ofiary!!!)
 zaladuj empires.exe do W32DASM i zaladuj copy.exe z HEX-WORKSHOP, wszystko OK?
 Coz... przechodzimy do W32DASM.

 Gdy uruchomimy AOE bez CD, komunikat mowi nam: " You must insert ... ", kliknij na
 String Data Reference i poszukaj tego ciagu, co jest? Nie ma! Nie ma problemu,
 kliknij na Imported Modules, to jeszcze jedna sztuczka przy crackowaniu Cd-check.
 Poszukaj KERNEL32.GETDRIVETYPEA <- to jest szukanie CD, podwojnie kliknij na nim,
 teraz W32DSM wysadzil cie w GETDRIVETYPEA w AOE. Co my tutaj mamy:


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D65EF(C) <-- STAMTAD JEST WYWOLYWANY PONIZSZY KOD
|
:004D65F5 57                      push edi

* Reference To: KERNEL32.GetDriveTypeA, Ord:00DEh
                                  |
:004D65F6 FF1554267000            Call dword ptr [00702654] <-- JESTESMY TUTAJ
:004D65FC 83F805                  cmp eax, 00000005
:004D65FF 7404                    je 004D6605
:004D6601 33C0                    xor eax, eax
:004D6603 EB53                    jmp 004D6658


 Coz... Musimy sie dowiedziec skad ta funkcja jest wywolywana, kliknij na Goto
 Code Location i wpisz 4D65EF, co my tutaj mamy:


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D65D0(C) <-- STAMTAD JEST WYWOLYWANY PONIZSZY KOD
|

* Possible StringData Ref from Data Obj ->"CDPath" <-- Szukanie CD
                                  |
:004D65D9 6884C65500              push 0055C684
:004D65DE 8B8EAC010000            mov ecx, dword ptr [esi+000001AC]
:004D65E4 6A00                    push 00000000
:004D65E6 E8D570FEFF              call 004BD6C0
:004D65EB 8BF8                    mov edi, eax
:004D65ED 85FF                    test edi, edi
:004D65EF 7504                    jne 004D65F5 <-- TERAZ JESTESMY TUTAJ
:004D65F1 33C0                    xor eax, eax
:004D65F3 EB63                    jmp 004D6658


 Hmmm, czy widzisz to co ja widze? "CDPath", zeby zobaczyc skad jest wywolywany
 powyzszy kod szukamy adresu 4D65D0, wymazemy czesc odpowiedzialna za CD-check.
 Teraz jestesmy pod adresem 4D65D0 :


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D657E(C)
|
:004D65C9 A114455600              mov eax, dword ptr [00564514]
:004D65CE 85C0                    test eax, eax
:004D65D0 7407                    je 004D65D9 <-- JEST TUTAJ!!!
:004D65D2 B801000000              mov eax, 00000001
:004D65D7 EB7F                    jmp 004D6658


 Czy widzisz "je 004D65D9"? To skok warunkowy w asemblerze, chcemy grac w AOE bez CD he?
 Nie ma problemu, wymazemy procedure CD-check, teraz musimy zanotowac gdzie znajduje sie
 interesujacy nas kawalek kodu, w heksa. Zanim odpalimy Hex-Workshop,
 upewnij sie ze zielona linia {w W32Dsm} znajduje sie na ":004D65D0" i spojrzyj na Offset,
 podany na pasku stanu W32Dsm. To: D59EFh, przechodzimy do Hex-Workshop.

 Teraz jestesmy w Hex-Workshop z zaladowanym Copy.exe, wcisnij F5 i wpisz D59EF
 bez "h" na koncu, upewnij sie, ze jest zaznaczona opcja: Hex. Wszystko gra?

 Jest zapisane "74 07", zmien to na "90 90".
 74 w hexadecymalnym, to skok warunkowy: je.
 90 w hexadecymalnym, to w asmie brak operacji: nop.

 Skonczylismy? To proste, mamy wymazny skok warunkowy do czesci kodu odpowiedzialnego za CD-Check.

 Zapisz COPY.EXE

 Uruchom COPY.EXE. WOW!!! Mozesz grac w Age Of Empires bez CD!!!
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Mozesz w ten sposob crackowac wszystkie wersje AOE, jedynie moga zmienic to adresy.

						That's all folks
___________________________________________________________________________________________


   4  / JAK USUNAC OGRANICZENIE W TOTAL SOCCER DEMO 0.98 ?
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 TOTAL SOCCER DEMO 0.98 jest calkiem dobra gra, ale po posiada ograniczenie czasowe.
 My mamy sie pozbyc tego zabezpieczenia.

 Uruchom Total Soccer, HARGH !!! komunikat o bledzie mowi, ze nasza gierka demo eeerrrrr...
 Zanotuj komunikat na kartce. To takie cos:
        "Total Soccer version SHAREWARE 0.98 has expired."

 Sukinsynstwo.

 Coz... Skopiuj SOCCER.EXE jako COPY.EXE, otworz SOCCER.EXE w W32dASM i otworz
 COPY.EXE z HEX-WORKSHOP.

 Poszukaj tego ciagu w oknie String Data Reference. Musi byc tutaj:


* Referenced by a CALL at Addresses:
|:0043A314   , :00448227
|
:0044773C 83C4F8                  add esp, FFFFFFF8
:0044773F 66B90100                mov cx, 0001
:00447743 66BA0200                mov dx, 0002
:00447747 66B8CE07                mov ax, 07CE
:0044774B E830ECFBFF              call 00406380
:00447750 DD1C24                  fstp qword ptr [esp]
:00447753 9B                      wait
:00447754 E8F7EDFBFF              call 00406550
:00447759 DC1C24                  fcomp qword ptr [esp]
:0044775C DFE0                    fstsw ax
:0044775E 9E                      sahf
:0044775F 7225                    jb 00447786      <-- HUMMM... INTERESUJACE

* Possible StringData Ref from Code Obj ->"soccer.lic"
                                  |
:00447761 688C774400              push 0044778C

* Reference To: kernel32.DeleteFileA, Ord:0000h
                                  |
:00447766 E8E5CFFBFF              Call 00404750
:0044776B 6A00                    push 00000000

* Possible StringData Ref from Code Obj ->"Total Soccer"
                                  |
:0044776D B998774400              mov ecx, 00447798

* Possible StringData Ref from Code Obj ->"Total Soccer version SHAREWARE "
                                        ->"0.98 has expired."
                                  |
:00447772 BAA8774400              mov edx, 004477A8    <-- JESTESMY TUTAJ
:00447777 A120A64400              mov eax, dword ptr [0044A620]
:0044777C E87FB5FDFF              call 00422D00
:00447781 B001                    mov al, 01
:00447783 59                      pop ecx
:00447784 5A                      pop edx
:00447785 C3                      ret


 Jestes teraz pod adresem 447772, przewijaj tekst w gore dotad, az zobaczysz adres 44775F.
 A przy nim:

 :0044775F 7225                    jb 00447786      <-- TO JEST TO !!!!!


 Uzyj przycisku "Jump to" zeby skoczyc, teraz widzisz:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044775F(C)
|
:00447786 33C0                    xor eax, eax
:00447788 59                      pop ecx
:00447789 5A                      pop edx
:0044778A C3                      ret

 To wszystko, program dalej jest wykonywany. To latwy sposob crackowania
 takich zabezpieczen. Zmusimy go do skou. Jedyna rzecz jaka musimy zrobic to zamienic
 "jb 00447786" na "jump 00447786" przy offsecie "46B5F".

 jb w asemblerze to skok warunkowy. Jezeli wyplywajacy z ograniczenia czas 
 sie nie skonczyl, to nastepuje skok. W przeciwny przypadku ujrzysz "...soccer demo expiration..."

 Latwe nie?

 Przejdz do Hex-Workshop, wcisnij F5 i wpisz 46B5F, teraz musisz zamienic:
 "72 25" na "EB 25"

 EB w hexadecymalnym to jump w assemblerze.

        Teraz uruchom Total Soccer, WOW!!! Nie ma ograniczenia!!! KEWL !!!
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

						That's all folks
___________________________________________________________________________________________


   5  / JAK ZCRACKOWAC INCOMING ?
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Jezeli masz 3dfx, INCOMING jest najlepszy do demonstracji mozliwosci 3dfx.
 Usuniecie CD-Check jest bardzo latwe w tej fantastycznej gierce.

 Uruchom INCOMING bez CD, HARGH !!!!! co to? Komunikat mowi, ze nie
 wlozyles CD do czytnika, sukinsynstwo :(

 Czas nauczyc sie reszty tipsow dotyczacych crackowania gier,
 zanotuj komunikat, to jest: "INCOMING ERROR REPORT".

 Coz, lecimy. Zrob kopie INCOMING.EXE jako COPY.EXE (zawsze rob kopie swojej ofiary),
 zaladuj INCOMING.EXE w W32DASM i COPY.EXE w HEX-WORKSHOP.
 Wszystko OK? Teraz przejdz do W32DASM.

 Kliknij na String Data Reference i poszukaj "Incoming error report".
 Teraz widzisz cos takiego:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040143D(U) <-- STAMTAD JEST TO WYWOLYWANE
|
:0043D340 8B4C2404                mov ecx, dword ptr [esp+04]
:0043D344 83EC20                  sub esp, 00000020
:0043D347 8D442428                lea eax, dword ptr [esp+28]
:0043D34B 56                      push esi
:0043D34C 57                      push edi
:0043D34D 50                      push eax
:0043D34E 51                      push ecx
:0043D34F 68805C5100              push 00515C80
:0043D354 E8B71D0600              call 0049F110
:0043D359 BFD4B54B00              mov edi, 004BB5D4
:0043D35E 83C9FF                  or ecx, FFFFFFFF
:0043D361 33C0                    xor eax, eax
:0043D363 83C40C                  add esp, 0000000C
:0043D366 F2                      repnz
:0043D367 AE                      scasb
:0043D368 F7D1                    not ecx
:0043D36A 2BF9                    sub edi, ecx
:0043D36C 68805C5100              push 00515C80
:0043D371 8BF7                    mov esi, edi
:0043D373 8BD1                    mov edx, ecx
:0043D375 BF805C5100              mov edi, 00515C80
:0043D37A 83C9FF                  or ecx, FFFFFFFF
:0043D37D F2                      repnz
:0043D37E AE                      scasb
:0043D37F 8BCA                    mov ecx, edx
:0043D381 4F                      dec edi
:0043D382 C1E902                  shr ecx, 02
:0043D385 F3                      repz
:0043D386 A5                      movsd
:0043D387 8BCA                    mov ecx, edx
:0043D389 83E103                  and ecx, 00000003
:0043D38C F3                      repz
:0043D38D A4                      movsb
:0043D38E E8CD0D0600              call 0049E160
:0043D393 83C404                  add esp, 00000004
:0043D396 8D442408                lea eax, dword ptr [esp+08]
:0043D39A 50                      push eax

* Reference To: KERNEL32.GlobalMemoryStatus, Ord:0161h
                                  |
:0043D39B FF15D896F500            Call dword ptr [00F596D8]
:0043D3A1 E85749FCFF              call 00401CFD

* Reference To: USER32.MessageBoxA, Ord:0195h
                                  |
:0043D3A6 8B350898F500            mov esi, dword ptr [00F59808]
:0043D3AC 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Incoming Error Report."
                                  |
:0043D3AE 68B8B54B00              push 004BB5B8 <-- JESTESMY TUTAJ.
:0043D3B3 68805C5100              push 00515C80
:0043D3B8 6A00                    push 00000000
:0043D3BA FFD6                    call esi
:0043D3BC 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"Incoming Error Report."
                                  |
:0043D3BE 68B8B54B00              push 004BB5B8
:0043D3C3 68805C5100              push 00515C80
:0043D3C8 6A00                    push 00000000
:0043D3CA FFD6                    call esi
:0043D3CC 817C242400004006        cmp dword ptr [esp+24], 06400000
:0043D3D4 720A                    jb 0043D3E0
:0043D3D6 817C241400000800        cmp dword ptr [esp+14], 00080000
:0043D3DE 7310                    jnb 0043D3F0


 Spojrzyj do gory za adresem spod ktorego ta funkcja jest wywolywana, 
 znajduje sie ono pod adresem: "40143D". Wpisz ten adres po kliknieciu: 
 Goto Code Location. Teraz widzisz:

....
|:00499AA4   , :00499B1A   , :00499B42   , :00499B7A   , :00499DF6
|:00499E84   , :0049A0AE   , :0049AC10   , :0049BE0E
|
:0040143D E9FEBE0300              jmp 0043D340


  Humm...  Rozumiesz?  Gdy CD nie jest wlozony, nastepuje przejscie do
  INCOMING ERROR REPORT, jak to usunac? To proste, nalezy wymazac
  INCOMING ERROR REPORT. Zanotuj Offset skoku, wynosi "83D" i przejdz do
  Hex-Workshop. Wcisnij F5 i wpisz 83D zeby przejsc do interesujacego nas kodu.

  E9 FE BE 03 00 -to jest skok, wiec go wymaz:
  90 90 90 90 90

  Zapisz COPY.EXE i uruchom COPY.EXE.

  Co teraz? WOW !!! Gra pracuje bez CD !!! KEWL !
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

						That's all folks
___________________________________________________________________________________________


   6  / JAK ZCRACKOWAC SEGA TOURING CAR CHAMPIONSHIP?
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Sega Touring Car Championship jest swietna gierka, wyscigi samochodowe.
 Jedna z lepszych dla 3dfx.

        ---YOU MUST DO A COMPLETE INSTALLATION OF THE GAME---

 Uruchom STCC.EXE bez CD i co sie dzieje? HARGH!!! Cholerny napis mowi:
 " Please insert The SEGA Touring Car Championship CD. "

 Coz... Zrob kopie STCC.EXE jako COPY.EXE i zaladuj STCC.EXE z W32DASM, oraz COPY.EXE
 z HEX-WORKSHOP. Przejdz do W32DASM i kliknij na przycisku String Data Reference.
 Poszukaj komunikatu o bledzie.

 Teraz widzisz:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00438675(C) <-- PONIZSZY KOD JEST WYWOLYWANY STAMTAD  <-------------------|
|                                                                           |
:0043864F 6A35                    push 00000035                             |
                                                                            |
* Possible StringData Ref from Data Obj ->"SEGA Touring Car Championship "  |
                                        ->"for PC"                          |
                                  |                                         |
:00438651 68947F4B00              push 004B7F94                             |
                                                                            |
* Possible StringData Ref from Data Obj ->"Please insert The SEGA Touring " |
                                        ->"Car Championship CD."            |
                                  |                                         |
:00438656 68607F4B00              push 004B7F60   <-- JESTESMY TUTAJ        |
:0043865B E880FDFFFF              call 004383E0                             |
:00438660 83C40C                  add esp, 0000000C                         |
:00438663 83F802                  cmp eax, 00000002                         |
:00438666 7415                    je 0043867D                               |
:00438668 E893FEFFFF              call 00438500                             |
:0043866D 83F8FF                  cmp eax, FFFFFFFF                         |
:00438670 A338735600              mov dword ptr [00567338], eax             |
:00438675 74D8                    je 0043864F <-- HO! CHOLERA  <------------|


 Hum.... kliknij na przycisku " Goto Code Location " i wpisz 438675, CHOLERA !

 Poszukamy procedury CD-Check, kliknij na przycisku: "Imported Modules and
 Funtions", poszukaj KERNEL32.GETDRIVE TYPEA, teraz widzisz:


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00438603(C)  <-- STAMTAD JEST WYWOLYWANY PONIZSZY KOD
|
:00438526 B801000000              mov eax, 00000001
:0043852B 8BCE                    mov ecx, esi

...BLABLABLA...

* Reference To: KERNEL32.GetDriveTypeA, Ord:00DFh
                                  |
:0043855D FF15B4981401            Call dword ptr [011498B4] <-- JESTESMY TUTAJ!
:00438563 83F805                  cmp eax, 00000005
:00438566 0F858F000000            jne 004385FB
:0043856C 8DBC2418010000          lea edi, dword ptr [esp+00000118]
:00438573 83C9FF                  or ecx, FFFFFFFF
:00438576 33C0                    xor eax, eax
:00438578 8D542418                lea edx, dword ptr [esp+18]
:0043857C F2                      repnz
:0043857D AE                      scasb
:0043857E F7D1                    not ecx
:00438580 2BF9                    sub edi, ecx

* Possible StringData Ref from Data Obj ->"stcc\stcc.exe"
                                  |
:00438582 68907E4B00              push 004B7E90
:00438587 8BC1                    mov eax, ecx
:00438589 8BF7                    mov esi, edi


 To jest procedura CD-check, poszukajmy skad jest wywolywana,
 Dlaczego? Poniewaz usuniemy czesc odpowiedzialna za CD-Check :D

 Kliknij na: "Goto Code Location" i wpisz 438603, teraz widzisz:


* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00438535(C), :00438566(C)
|
:004385FB 46                      inc esi
:004385FC 83FE20                  cmp esi, 00000020
:004385FF 89742410                mov dword ptr [esp+10], esi
:00438603 0F8C1DFFFFFF            jl 00438526 <-- JESTESMY TUTAJ!!!
:00438609 EB0B                    jmp 00438616

 Teraz to juz bardzo latwe ;). Spojrzyj na Offset i przejdz do Hex-Workshop.
 Wpisz odczytany wczesniej Offset, normalnie powinien wynosic 37A03, teraz zmien:

                         0F 8C 1D FF FF FF na
                         90 90 90 90 90 90

 Zapisz COPY.EXE, uruchom COPY.EXE, WOW !!! Chodzi bez CD !!! KEWL !!!
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Mozesz tak zcrackowac wszystkie wersje SEGA TOURING CAR CHAMPIONSHIP,
 moga jedynie zmieniac sie adresy.

						That's all folks
___________________________________________________________________________________________

		If it's a bad protection, it's a bad program...
				TUTORIAL #1 by Mr.T

