Powiększ

CRACK PL, czyli zostań crackerem! Cz. 1

Odcinek 1 – Trudne początki

Powiększ Spotykamy się już po raz drugi 🙂 Pora więc zakasać rękawy i przystąpić do pracy. Odpalcie więc emulator C64 np. VICE, podepnijcie Action Replay’a w wersji 7H oraz przygotujcie sobie papier & coś do pisania – może być i dłuto 🙂

Zanim przejdziemy do omawiania innych rzeczy niezbędnych każdemu crackerowi, proponuje abyście zaopatrywali się (powoli) w to wszystko o czym piszę – w tej chwili ten model Action’a. Gdyż nie ma przecież sensu wyważać otwartych drzwi, korzystajcie więc ze sprawdzonych narzędzi… Będąc jeszcze w tym temacie, pragnę Wam drodzy internauci przypomnieć, że kilka lat temu na ten temat (crack, crackowanie) ukazały się stosowne artykuły w popularnych wówczas magazynach papierowych jak Commodore & Amiga czy scenowy FUZZ. Nie były wprawdzie adresowane dla początkujących, ale czasami będę się tu posiłkował materiałami w nich zawartymi. Choć np. do FUZZ’a sam je pisałem 🙂 to trzeba uszanować! wysiłek intelektualny ich autorów i uczciwie zaznaczyć skąd pochodzą ciekawsze rozwiązania. Niestety C&A już nie istnieje – upadło prawie 6 lat temu, jednak magazyn FUZZ choć z pewnymi „oporami” ukazuje się nadal 🙂

ARCHIWALIA – temat crackowania z taśmy omówiłem szczegółowo w magazynie FUZZ. Tam też odsyłam wszystkich, którzy nie mają tzw. „zielonego” pojęcia o co w tym chodzi. Kontakt z redaktorem naczelnym to: pawel.bol@inetia.pl z dopiskiem FUZZ – Numery archiwalne. Polecam się w nie zaopatrzyć, gdyż często będę się do nich odwoływał. Koszt nie jest duży, bo te kilka zł, okaże się świetną inwestycją na przyszłość.

PowiększTak, więc już zapewne umiecie podłączyć wirtualny cartdridge do równie wirtualnego C64. Wrzućcie jeszcze do „opiekacza” (potoczne określenie floppa 1541) dysk z gierką Giana Sisters (pierwsza część tej sagi, z paka kolekcji GIANA SISTERS COLLECTION.ZIP) i załadujcie do pamięci, np. tak jak na picku obok. Po chwili, ach te kilka sekund cudownego oczekiwania… załaduje się do pamięci, wstukujemy RUN i wciskamy ENTER (lepiej jednak nie dajcie sobie wciskać tej gazetki i czytajcie NAS:)

Powinniście zobaczyć interko, więc ponownie zrobimy użytek z klawiatury – tym razem wciskając SPACE. Po dłuższej chwili, ujrzycie ekran tytułowy chyba z najbardziej kultowej gry na komódkę. Teraz obowiązkowo pograjcie sobie choć godzinkę. Wszak złamanie gry, zaczynamy od przyjrzenia się potencjalnej ofierze. Wzruszenie po prostu odbiera głos, w takie gry to się pogrywa godzinami. A tu praca nas czeka – więc może jeszcze z godzinkę…

Zastanówmy się, co najbardziej nam doskwiera ? Ja na pierwszym miejscu bym postawił ilość „żyć” – te początkowe 3, starczają zwykle do 8 levelu – choć jak dla mnie nawet do samego końca (I LOVE THIS GAME). Więc ułatwmy sobie zadanie i uczyńmy naszą dziewczynkę nieśmiertelną 🙂 Jak się do tego zabrać pokaże na mocno skróconym przykładzie, po szczegóły zaś odsyłam do następnego odcinka, gdzie powiem co i dla czego tak trzeba było robić/szukać.

Problem 1 – życia gdzie je szukać.

PowiększMamy na początku gry 3 życia, aby to zapisać w pamięci zwykle posłużymy się „nieśmiertelną” parą LDA/STA. Zobaczmy więc czy autor rozumował podobnie do nas. Wciśnij teraz FREEZER’a w module, w zależności od wersji emulatora będzie to odpowiednio ALT + Z lub ALT + F (o ile pamięć mnie nie myli:). Na ekranie powinieneś zobaczyć mniej więcej coś takiego jak obok. Teraz wduś klawisz ‚M’, znajdziemy się w trybie monitora języka maszynowego naszej frezerki. W tej chwili mam dla Was kolejną propozycję, musicie się zaopatrzyć w listę wszystkich rozkazów procesora 6502 (w tym i niepublikowanych) który jest sercem naszej maszynki. Stosowne rzeczy „wygrzebiecie” na naszej witrynie w dziale o programowaniu w asemblerze, lub przygotowywanym przeze mnie zbiorczym zestawieniu wszystkich komend procka 6502 (ukaże się zapewne w sierpniu).Wracając do tematu, jesteśmy już w monitorze, teraz poszukajmy owych „żyć” w następujący sposób:

  • wpisujemy H 0000 FFFF A9 03

  • po chwili otrzymujemy na ekranie listę adresów gdzie występuje LDA #$03

podpowiedź:
(H) rozkaz HUNT, czyli szukaj
(0000/FFFF) adresy początku i końca pamięci do przeszukania
(A9 03) mnemonik LDA #$03

Ja otrzymałem na ekranie nieco ponad 10 podejrzanych o ukrywanie „żyć” lokacji. Najszybszy sposób to disasemblacja każdej i wpisywanie zamiast ’03’ np. ’05’ jako argumentu dla LDA. Teraz radzę spisać sobie na kartkę te wszystkie podejrzane adresy i testować na wszystkich nowe wartości w LDA. Po zmianie każdego wracamy do gry, wychodząc do menu frezerki „X” i naciskając enter. Samą frezerkę opuścimy wciskając klawisz F7 (restart) i jeżeli po ponownym uruchomieniu gry, nic się nie zawiesi i liczba żyć się zwiększy, to prawdopodobnie jesteśmy w domu. Gdy coś pójdzie nie tak, wciskamy ponownie frezerke i przywracamy poprzednią wartość dla LDA. W najgorszym przypadku załadujemy grę ponownie…

U mnie sukces nastąpił już po trzeciej próbie, podejrzany adres to $098E. Przyjrzyjmy się więc co on skrywa:

. 098E A9 03 LDA # $03
. 0990 8D 73 15 STA $1573
. 0993 8D 74 15 STA $1574
. 0996 8D 3C 04 STA $043C

Widzimy więc, że podejrzane są trzy lokacje. Teraz pokaże jak małym kosztem sprawdzić gdzie te „lives” się podziewa. Wejdźcie do gry i straćcie jedno życie, teraz powrót do frezerki i za pomocą instrukcji ‚M’ podejrzyjcie zawartośc tych adresów. Ponownie za 3 razem pełen sukces:) Komórka pamięci o adresie $043C przechowuje ilość żyć. Podpowiedź dla mniej rasowych wyjadaczy asemblera:

 

  • piszemy M 043C i wciskamy enter

  • na ekranie otrzymujemy 8 wartości, z czego interesuje nas tylko ta pierwsza

Problem 2 – blokada licznika.

Połowa roboty za nami, teraz czeka nas mordercze wyszukanie DEC-a. Piszę o zbrodniczych skłonnościach, gdyż wiele razy z przyjemnością będziecie chcieli utopić autora danego programu, w łyżce wody – za jego maskowanie kodu gry. Zaletą programowania w asemblerze jest jego mnogość trybów adresowania, co tym bardziej nie ułatwia nam pracy. Zwykle szukajmy jednak pewnych rzeczy wprost, bowiem ludzie są z natury leniwi 🙂 Do dzieła panowie i panie (o ile i płeć piękna nas czyta:)

Rozkaz DEC w trybie bezpośrednim jest reprezentowany kodem $CE. Szukajmy więc CE 3C 04. Wykrzykniecie teraz zapewne, co za ‚buga’ tu wam wciskam – przecież adres to $043C a nie 3C04. Otóż moi drodzy kursanci, w pamięci najpierw się zapisuje starszy bajt adresu, potem młodszy – choć na ekranie otrzymujemy odwrotnie… Do poszukiwań skorzystamy ponownie z usług HUNT, pisząc H 0000 FFFF CE 3C 04 i naciskając enter. Jako wynik otrzymamy tylko jeden adres $2041. Wylistujmy więc ten kawałek pamięci:

. 2041 CE 3C 04 DEC $043C

Najprostszy sposób zablokowania polega na podmianie DEC na LDA, uczyńmy więc to bez wahania. Obecna postać tej komendy (lokalizacji pamięci) to:

. 2041 AD 3C 04 LDA $043C

Odpalamy grę i cieszymy się bezproblemowym przejściem gry (polecam to samo bez cheat’owania:) czego i sobie teraz życzę, gdyż bez granatu nic mnie teraz od Gianny Sisters nie oderwie… o wyłączyli skubańce prąd, kij im w oko – zagram se przy świeczkach :)))

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *