Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


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

CrackPl prezentuje
McKiler's Beginners Tut #2 (BrainWave)
_______________________________________________________________________________________

Cel: BrainWave Generator v.2.0.4
Skad: CyberCD 2/99, http://www.bwgen.com
Rozmiar: 1.6MB
Czym: SoftIce, HexWorkshop
--------------------------------------------------------------------------------------
Wstep:
"Program o do¶ć ciekawym przeznaczeniu, poprzez generowane dĽwięki o zmiennych
częstotliwo¶ciach i czasach trwania to niesamowite narzędzie stara się wpływać
na nasz± psychikę. Czyżby to komputer miał nam w XXI wieku pomagać wychodzić z
dołków psychicznych przy pomocy generowanych dĽwięków? Autorzy już wypu¶cili w
w±skim gronie kolejn± wersję beta programu o jeszcze silniejszym oddziaływaniu.
Proponuję więc sprawdzić czy nasza blaszana maszynka może sterować Waszymi
odczuciami..."
(opis z Cybera 2/99)
--------------------------------------------------------------------------------------

UWAGA!
Tutorial przeznaczony jest tylko dla poczatkujacych, gdyz zlamanie tego programu
osobom siedzacym w temacie nie sprawi zadnego problemu.
Jesli jednak dopiero zaczynasz sie tym bawic to zapraszam do lektury :))))

Opis:
W tym tutorialu chcialbym wprowadzic Was co nieco w tajniki patchowania programu.
Po uruchomieniu wprawdzie widzimy standardowe okienko w ktorym mozemy wpisac swoj
username oraz serial, jak jednak wykaze dalsza analiza kodu nie jest to takie latwe
jak moglismy to zrobic przy okazji np. WinZip-a 7.0, ktorego rozgryzlismy w poprzednim
tutorialu. O ile analiza kodu jaka bedziemy musieli wykonac w BrainWave ogranicza sie
do absolutnego minimum, jednak nigdzie podczas analizy nie znajdziemy w pamieci
dokladnych danych jakie musimy wpisac (takie dane znajdziemy w wiekszosci popularnych
programow). Po prostu ten programik przeprowadza pewne operacje zarowno na nazwie
jak i na wpisanym serialu i dopiero wynik tych operacji pozwala na stwierdzenie czy
podane dane sa prawidlowe czy nie. Nie bede tu tez analizowac calego kodu w celu
dobrania sie do calej procedury dajacej serial, wygenerujemy sobie patcha.

Okej, uruchamiamy programik, pojawia sie nag-screen. Klikamy na przycisk: 'I have
registered' (raczej watpie aby kogos zainteresowala opcja Register on-line, chociaz
jesli programik podoba ci sie to kup go). Widzimy nasza "ulubiona" tabelke z dwoma
polami: Name oraz Key. W pole Name wpisujemy McKiler/CrackPL'99 w pole Key cokolwiek,
chociaz z pewnych wzgledow radze wpisac kod 9-cyfrowy (powyzej mamy tak napisane ze
program czeka wlasnie na kod 9-cyfrowy), uchroni nas to od dziwnych odwolan powodujacych
wyswietlenie informacji o nieprawidlowej rejestracji. Akurat tutaj nie bedzie to nam
potrzebne, ale w innych programach mozemy spotkac sie z instrukcja sprawdzajaca
dlugosc kodu juz na samym poczatku - dlatego tez dowiedz sie jak najwiecej o programie
jeszcze zanim zaczniesz go crackowac. A wiec w pole Key wpisujemy 123456789.
Naciskamy OK, i jak moglismy sie spodziewac kod jest nieprawidlowy.

---------------------------
Newbies Note!
Zanim cokolwiek zaczniesz robic w SoftIce upewnij sie ze w pliku winice.dat dokonales
niezbedne poprawki, mianowicie sprawdz czy nie masz srednikow przed liniami
EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
Jesli ich nie usuniesz SoftIce nie zalozy pulapek na funkcje z ktorych za chwile
skorzystamy!
Linijke INIT=costam zamien na ponizsza, ulatwi to analize kodu:
INIT="lines 60; wd 22; wc 25; wr; code on; X;"
---------------------------

Naciskamy CTRL+D aby wejsc do SI i zakladamy standardowa pulapke wpisujac:
bpx getdlgitemtexta
Wychodzimy z SI (F5 lub CTRL+D), i ponownie nacikamy OK w polu rejestracji.
Bum, jestesmy znowu w SI, naciskamy jeszcze raz F5 i pozwalamy programowi
dalej sie wykonywac. Dlugo to nie potrwa (kilka milisekund :) i znowu jestesmy
w SoftIce.

---------------------------
Newbies Note!
Dlaczego program zatrzymuje sie dwa razy na naszej pulapce?
Proste - odczytuje dane pierwszy raz z pola Name, drugi raz z pola Key
---------------------------

Naciskamy F11 aby wrocic do miejsca w ktorym funkcja zostala wykonana.
Na ekranie widzimy:

015F:0040D77D 8D44242C LEA EAX,[ESP+2C] <- pobranie name
015F:0040D781 8D4C240C LEA ECX,[ESP+0C] <- pobranie seriala
015F:0040D785 50 PUSH EAX
015F:0040D786 51 PUSH ECX
015F:0040D787 E8A4EAFFFF CALL 0040C230
015F:0040D78C 83C408 ADD ESP,08
015F:0040D78F 85C0 TEST EAX,EAX
015F:0040D791 7510 JNZ 0040D7A3 (NO JUMP)

Naciskamy F10, przechodzimy do linii drugiej, wpisujemy
d EAX - i co widzimy? wpisany username!
Naciskamy F10, przechodzimy do linii trzeciej, wpisujemy
d ECX - i widzimy nasz (wpisany) serial
PUSH EAX i PUSH ECX wkladaja je na stos, nastepnie wywolywana jest CALL-em
procedura dokonujaca odpowiednich obliczen na kodzie i serialu. Chwilowo nas
to nie interesuje. Naciskamy F10 az dojdziemy do linii TEST EAX,EAX.
Po co porownywac dwie te same rzeczy?
Ano, dlatego ze funckja TEST sprawdza rowniez czy dane sa rowne czy rozne od
zera i ustawia odpowiednie flagi.
Jesli dane sa rowne zero flaga zerowa zostaje ustawiona na 1, w SoftIce widzimy
to jako literke Z. Tak bedzie teraz w naszym przypadku (kod jest nieprawidlowy).

---------------------------
Newbies Note!
Flaga moze przyjmowac wartosc 0 albo 1.
Flagi widzimy jako male lub duze literki w prawym gornym rogu w SoftIce.
Mala literka oznacza flage ustawiona na 0, duza na 1.

JZ - skok jesli flaga zerowa = 1
JNZ - skok jesli flaga zerowa = 0
---------------------------

Dochodzimy teraz do linii JNZ 0040D7A3. Skok zostanie wywolany tylko wtedy kiedy
flaga zerowa zostanie ustawiona na 0 (z).
Jesli pozwolimy programowi wywolywac sie dalej to szybko zobaczymy komunikat o
nieprawidlowej rejestracji. Wniosek stad ze ten wlasnie skok odpowiada za to,
czy nasza rejestracja zostanie uznana za prawidlowa.
Wchodzimy jeszcze raz do SI, zatrzymujemy sie na linii JNZ 0040D7A3 i wpisujemy
magiczne polecenie:
r fl z
Powoduje ono zmiane wartosci flagi zerowej! Widzimy tez ze SI pisze nam ze zaraz
zostanie wykonany skok (F10). Wyjdzmy z SI (F5) i oto widzimy podziekowania za
pomyslna rejestracje! Tada! Wyjdzmy teraz z BrainWave'a i odpalmy go ponownie....
Buuuu, znowu pisze ze nie jest zarejestrowany! Po prostu zmiany jakie dokonalismy
nie zostaly zapisane nigdzie w pliku programu tylko zostaly dokonane podczas
wykonywania programu. Kod rejestracyjny jest natomiast sprawdzany przy kazdym
uruchomieniu programu. Jak to obejsc?
Mozemy zamiast JNZ 0040D7A3 (kiedy nie zero) zapisac JZ 0040D7A3 (kiedy zero).
Jak tego dokonac?
Wpisujemy:
a
i przechodzimy do okna edycji danych, wpisujemy
JZ 0040D7A3
Widzimy zmiane wartosci 7510 na 7410. Te wartosci to po prostu zapis
heksadecymalny tej instrukcji w kodzie programu. Wiec mozemy go wyedytowac
dowolnym edytorem hex. Jednak to nam nic nie da, gdyz kod w programie porownywany
jest w wielu miejscach i wszystkie je nalezaloby zabezpieczyc, a jest to qpe
roboty. Wobec tego mozemy zadbac o to zeby funkcja TEST EAX,EAX zawsze dawala
wyniki wieksze od zera. W tym celu musimy wejsc w funkcje wywolywana CALL-em
kilka linijek wyzej - jest ona wywolywana za kazdym razem w celu sprawdzenia
kodu. Znajdziemy w niej linijke ktora robi cos w rejestrze EAX.
Lapiemy program w pulapke od nowa, dochodzimy do ww. CALL-a, naciskamy F8
aby wejsc w funkcje i widzimy rozne smieci. Przechodzimy F10 az dojdziemy
do ponizszego fragmentu kodu

.......blablabla.......
015F:0040C2DD 8A4605 MOV AL,[ESI+05]
015F:0040C2E0 3C2D CMP AL,2D
015F:0040C2E2 740A JZ 0040C2EE (NO JUMP)
015F:0040C2E4 33C0 XOR EAX,EAX <----- WAZNE !!!!!!!!!
015F:0040C2E6 5D POP EBP
015F:0040C2E7 5F POP EDI
015F:0040C2E8 5E POP ESI
015F:0040C2E9 5B POP EBX
015F:0040C2EA 83C458 ADD ESP,58
015F:0040C2ED C3 RET <----- POWROT DO FUNKCJI

Funckja XOR jest tzw. wykluczajaca sie alternatywa. Po zXORowaniu jednego z tym
samym zawsze daje zero. A jest to ostatnia funkcja robiaca cos z EAX przed
wywolaniem TEST EAX,EAX. Przed XORowaniem w EAX sa jakies wartosci, wazne ze wieksze
od zera. Wiec wystarczy zadbac o to zeby to XORowanie nie nastapilo :))))
Instrukcja XOR EAX,EAX zajmuje dwa bajty (widzimy to jako 33C0 w hex). Zamiast niej
mozna zastosowac funkcje NOP, ktora dokladnie nic nie robi. Naciskamy a i jestesmy
w oknie edycji kodu. Wpisujemy NOP i naciskamy ENTER.
UWAGA! Instrukcja NOP zajmuje 1 bajt, dlatego musimy ja wpisac dwukrotnie !!!
Teraz musimy zebrac dane niezbedne do edycji pliku. Spisujemy dane znajdujace sie
w okolicach opisywanej komendy, a wiec ciag hex: 740A33C05D5F. Odpalamy dowolny
hexeditor - jest ich wiele ja jednak polecam Hex Workshop - jest to profesjonalny
32-bitowy edytor hex z mnostwem bardzo przydatnych opcji (np. porownanie pliku),
najnowsza wersja to 2.54.
Opcja Find znajdujemy ten ciag i dokonujemy podmiany 33C0 na 9090, czyli na
podwojny NOP. Dajemy na SAVE, odpalamy program, wpisujemy dowolne dane i teraz
mozemy wybrac sie na pivo (bezalkoholove ofkoz :) aby oblac zcrackowany program.
UWAGA! Wpisany kod musi byc 9-cyfrowy !!!!
Jako BONUS mozna jeszcze napisac programik ktory zrobi podmianke automatycznie.

Pisalem to strasznie lopatologicznie, wiec mysle ze dla beginnerow bedzie to zrozumiale,
jesli nie to ask me.

--------------------------------------------------------------------------------------
Jezeli szukasz tu jedynie seriali, to zle trafiles.
Dzialania opisane powyzej maja na celu analize kodu programu i poznanie schematu jego
zabezpieczenia. Jezeli masz zamiar uzywac tego programu dluzej, kup go (nie dotyczy M$).
Pozwoli to producentom udoskonalac oferowane programy, jak rowniez ich zabezpieczenia.
--------------------------------------------------------------------------------------
1999.03.31 by McKiler (mck@zg.home.pl)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •