       _       _          _          _             _           _         _
      / \_____/ \______  / \____    / \___________/ \         / \_______/ \____
      \       \        \ \      \_  \       \        \        \         \      \
 _____/   .    \   .    \/   /\   \ /   .    \   .    \________\   .     \     /_ _____
 |   /    /_   /   /_   /_  /  \   \    /_   /   \_   /_       /  /       \   _/ \_   |
 |  /    /  \_/ \    \_/  \ \__/    \  /  \_/ \    \_/  \     /  /        /        \  |
 |__\    \      /          \ /      /  \      /  .       \___/   \_      /         /__|
     \         /     /     / \     /         /    \      /   \     \____/         /
      \____   /\____/     /___\__  \\____   /\____/\    /     \______/  \_____   /
           \_/      \____/       \_/     \_/        \__/                      \_/

              - t h e   h o m e   o f   p o l i s h   c r a c k e r s -

                                  proudly presents:

 `~*[ a tutorial:  Ciekawa rozprawka o WinAce 1.0 Final Version		]*~`
 `~*[ written by:  <<EMO>>							]*~`
 `~*[ date:	     5 listopad 1999						]*~`

 `~*[ english readers note:                                                   ]*~`
      [
      [ the following tutorial has been written in polish language... if you're ]
      [ interested in english version please place your request for translation ]
      [ at http://crackpl.cjb.net...                                            ]


W tym tutorialu postaram si zwrci uwag czytelnika na niekonwencjonalne podejcia do
crackowania. Moja dewiza to - <<W crackowaniu najwaniejsze jest m y  l e n i e>>.
Wiadomo, e nie zawsze bdziesz mg w stanie sobie poradzi, ale nie poddawaj si zbyt szybko.

Cel : WinAce 1.0 Final Version (Szeroko uywana bya jego dosowa wersja do pakowania
      zamanych gier na tzw. pytach - skadankach, obecnie wysza wersja pod W95/98/NT)

Gdzie znale : Prawdopodobnie bdzie na jakim Cover-CD - ostatnio nie nadam za tym,
      ostatni numer kupiem ok. p roku wstecz... - za to jest zawsze dostpny na
      www.winace.com - wersja instalacyjna 2 020 777 bajtw, plik 'winace1x.exe'

Narzdzia : Softice 3.xx - wane, e dobrze skonfigurowany :), moim poprzednim v1.9 BETA
      te bym sobie poradzi...

Inne : Jeli nie wiesz co to SoftIce, czytanie reszty moesz sobie odpuci... Chocia...
      Ja w kocu te tak zaczynaem...

Musz si przyzna, e moja przygoda z crackowaniem zacza si, gdy nie miaem dostpu
do internetu raz na tydzie (jak obecnie) i zaczynaem od czytania... Wtedy nie miaem
adnych polskich tutoriali i przeczytaem ca seri +ORC, SoftIce'a miaem wersj BETA,
adnej wiedzy o assemblerze (no moe jakie podstawy z C64) i wszystkiego nauczyem si
SAM, praktykujc 'reverse engineering'. Dopiero gdy trafiem na jakie materiay, dotaro
do mnie jak niewiele umiem...

Nie bd dalej zrzdzi, wic -

Zaczynamy:

Nie s to raczej instrukcje, jak zama WinAce'a, ale opis moich zmaga z tym programem
(troch ponad 1h) i porada dla rednio zaawansowanych crackerw (ja nigdy nie uwaaem si
za kogo lepszego i nie jest mi to do szczcia potrzebne).


Przejd do konkretw - po zainstalowaniu widzimy:

	Your AV - String :
	 ___________________________
	[___________________________]

	Your registration key :
	
	 ___________________________
	[___________________________], gdzie 'key' ma posta xxx-xxxx-xxxx-xxxx-xxxx


W registration menu czytamy, e AV-String to nic innego, jak 'znak firmowy' - w archiwach
znajdzie si napis 'Spakowane by <<string>>' - Hmm, ciekawe. Po zaoeniu 'flagowych'
bpx Hmemcpy i bpx GetWindowTextA dostaem si do miejsca :

0137:0055F780  E8EB48EAFF          CALL    00404070
0137:0055F785  50                  PUSH    EAX
0137:0055F786  E84546F6FF          CALL    004C3DD0		<-- !! sprawdzanie kodu 
0137:0055F78B  8945F8              MOV     [EBP-08],EAX		<-- przechowaj eax
0137:0055F78E  33C0                XOR     EAX,EAX		<-- wyczy EAX
0137:0055F790  5A                  POP     EDX
0137:0055F791  59                  POP     ECX
0137:0055F792  59                  POP     ECX
0137:0055F793  648910              MOV     FS:[EAX],EDX
0137:0055F796  EB0A                JMP     0055F7A2
0137:0055F798  E9B73CEAFF          JMP     00403454
0137:0055F79D  E8563FEAFF          CALL    004036F8               
0137:0055F7A2  837DF800            CMP     DWORD PTR [EBP-08],00        <-- porwnanie...
0137:0055F7A6  7424                JZ      0055F7CC			<-- jeeli OK, skacz
0137:0055F7A8  C60524A4560000      MOV     BYTE PTR [0056A424],00
0137:0055F7AF  8D95F0FCFFFF        LEA     EDX,[EBP-0310]
0137:0055F7B5  A17C2C5700          MOV     EAX,[00572C7C]
0137:0055F7BA  E86159EAFF          CALL    00405120
0137:0055F7BF  8B85F0FCFFFF        MOV     EAX,[EBP-0310]
0137:0055F7C5  E87606FEFF          CALL    0053FE40        <-- w rodku MessageBoxA...
0137:0055F7CA  EB26                JMP     0055F7F2        <-- omi zarejestrowanie...          
0137:0055F7CC  6A00                PUSH    00             <-- dzikujemy za support...
0137:0055F7CE  8D95F0FCFFFF        LEA     EDX,[EBP-0310]
0137:0055F7D4  A104305700          MOV     EAX,[00573004]

Moja rada : zawsze sprawdzaj ostatni CALL przed wywoaniem MessageBoxA, a zajdziesz daleko.
Z atwoci mgbym zrobi patcha, ale nie o to przecie nam chodzi... Zreszt program
dzikuje za rejestracj, a nadal jest 'unregistered' <-- sprawd w menu 'About'.
BTW - program jest zabezpieczony przed W32Dasm, wic po co si mczy.

Autorzy podjli niezy wysiek - twj 'AV-string' (kada litera) jest XORowany tabel 
umieszczon w pamici, ostatni hex jest ROL-owany i dodawany do EAX i tak po kolei...
(przynajmniej ja tak to widz), natomiast jeszcze wiksze parodie s przy 'key'.
Okazuje si, e pierwsze trzy litery nie s na nic przydatne, a pozostaych szesnacie
moe tylko znajdowa si wrd:

		'34679ACDEFHKLMNPQRSTWXY' - chyba nie ufaj zbyt wielu samogoskom...
                 ^^^
koduje na       '0123456789abcdef0123456

!Uwaga - kluczowy punkt - program 'przekodowuje' twj key na inny cig znakw. Jako 3
traktuje 0, zamiast 4 jest 1, 6 jest 2 itd. Nastpnie wykonuje na nich rne operacje
matematyczne, a w kocu porwnuje. Tylko popatrz :

0137:00629971  EB05                JMP     00629978
0137:00629973  49                  DEC     ECX
0137:00629974  85C9                TEST    ECX,ECX
0137:00629976  7C37                JL      006299AF
0137:00629978  31D2                XOR     EDX,EDX
0137:0062997A  6B442AF017          IMUL    EAX,[EBP+EDX-10],17 !!!!!!
0137:0062997F  83C204              ADD     EDX,04
0137:00629982  89442AEC            MOV     [EBP+EDX-14],EAX
0137:00629986  83FA0C              CMP     EDX,0C
0137:00629989  75EF                JNZ     0062997A
0137:0062998B  0FB64429E0          MOVZX   EAX,BYTE PTR [EBP+ECX-20]
0137:00629990  0145F0              ADD     [EBP-10],EAX
0137:00629993  31C0                XOR     EAX,EAX
0137:00629995  8B5428F0            MOV     EDX,[EBP+EAX-10]
0137:00629999  83C004              ADD     EAX,04
0137:0062999C  C1EA18              SHR     EDX,18
0137:0062999F  C64428EF00          MOV     BYTE PTR [EBP+EAX-11],00

Ciekawostka! - Patrz na lini oznaczon wykrzyknikami - jest to operacja mnoenia...
To niesamowite na co mona wpa w kuchni jedzc jabko - a*b*0=0 ! - chyba kady to wie :)
Skoro 3 daje nam 0 - nie wpisuj nic w polu AV, a jako kod np. BAC-3333-3333-3333-3333
I... zarejestrowane. Postanowiem to sprawdzi, wychodz z programu i uruchamiam ponownie...
mina mi zrzeda - nic z tego... Program nie akceptuje pustego AV-String.
Trzeba poszuka innego sposobu - jak wspominaem mylenie ma przyszo. Po nieokrelonym
czasie znalazem takie co: (gboko schowane...)

0137:00629C0E  8902                MOV     [EDX],EAX
0137:00629C10  3B4260              CMP     EAX,[EDX+60]       (*) !wskazwka - bpx 629c10 nie
0137:00629C13  7521                JNZ     00629C36		  zadziaa, dopki jako 'key'	
0137:00629C15  BB03000000          MOV     EBX,00000003		  nie wpiszesz dozwolonych
0137:00629C1A  B8FFFFFFFF          MOV     EAX,FFFFFFFF		  znakw, ktre s powyej
0137:00629C1F  83C24C              ADD     EDX,4C		  np. 'BAC-3434-4334-4433-3443'
0137:00629C22  E87B560000          CALL    0062F2A2
0137:00629C27  8B55BC              MOV     EDX,[EBP-44]
0137:00629C2A  3A4266              CMP     AL,[EDX+66]	     (**)
0137:00629C2D  7507                JNZ     00629C36
0137:00629C2F  BE01000000          MOV     ESI,00000001
0137:00629C34  EB02                JMP     00629C38
0137:00629C36  31F6                XOR     ESI,ESI
0137:00629C38  89F0                MOV     EAX,ESI
0137:00629C3A  E9AF330000          JMP     0062CFEE 
 
Gdy normalnie prbowaem zarejestrowa program przez zmian jnz w 557fa6 (patrz na pocztku),
program dzikowa za rejestracj i... nadal pozostawa niezarejestrowany. To co widzisz
w linii oznaczonej (*) jest porwnaniem EAX, w ktrym znajduje si przeksztacony
AV-String z twoim faszywym 'key' (te przeksztaconym). W moim wypadku EAX=6DB8CFB8,
wic wpisaem do edx+60 'na ywca' B8,CF,B8,6D (Dlaczego w odwrotnej kolejnoci chyba
nie musz tumaczy...). W linii (**) sprawa ma si podobnie, ale trzeba podmieni tylko
jeden bajt. Spokojnie wykonaem 'bd *', program podzikowa za rejestracj, po ponownym
uruchomieniu wszystko dziaa nadal!


Zgadnijcie, co jest tego przyczyn?? - Ot program generuje 256 bajtowy plik 'ace.key'
i przed uruchomieniem go sprawdza. Gdy wpisaem prawidowe wartoci, WinAce nagra to
na plik i problem z gowy. Wygenerowa prawdziwy keyfile!! Moesz teraz skopiowa w
bezpieczne miejsce plik 'ace.key' - tylko on wystarczy, aby pozby si kopotu :-)
- na twoim komputerze ;)))) Po przegraniu pliku 'ace.key' na inny komputer program
nadal pozostaje 'unregistered'. Nie podpowiem nic wicej jak 'Regmon & Filemon'.
A zreszt - skoro ju amiecie program na podstawie tutorialu, to nie po to, aby go
pniej rozpowszechnia... A moe si myl?

To ju koniec, teraz moesz: Wyj na spacer, do kina, pobawi si z psem, kotem, chomikiem,
			     nakarmi rybki i odpocz od siedzenia przed komputerem ;-)
 

Mam nadziej, e czego si nauczye, a jeeli nie, to nic nie szkodzi - teoria teori,
tylko praktyka czyni mistrza. 


							<<EMO>>

							emo@viper.pl


!UWAGA - Tekst powsta tylko w celach edukacyjnych i autor nie ponosi odpowiedzialnoci za szkody
         wynike z niewaciwego stosowania porad tu zamieszczonych. W przypadku uywania
	 programu przez duszy czas naley go zarejestrowa.


Greetings : Sir_THomasRE, Monter, MAX, CrackPL za inspiracj 






                                                    ______   ______   ______   ______
                                                   /      \ /      \ /      \ /      \
 _________________________________________________/   .   //   /   //   /   //   /   /
 |                                                \__/   /_\__    /_\__    /_\__    /|
 |[CP!]: http://crackpllist.cjb.net                /    //    /  //    /  //    /  / |
 |________________________________________________/    //    /  //    /  //    /  /__|
                                                  \___/ \_______\\_______\\_______\
