Bajtek 12/1986
Bajtek 12/1986 v0.3 (było 0.5)

Niektóre rzeczy zawsze mają pod górę - to najbardziej trywialne ze stwierdzeń najlepiej określa prędkość prac jakie towarzyszyły powstawaniu Bajtka 12/1986. Miało być w miarę prosto i przyjemnie, no może trochę bardziej ambitnie chciałem ...

Zobacz stronę związaną z tym artykułem w Reduksach Try2emu
Spis treści:
Listingi dołączone do numeru w ReadyRun

Klan Commodore

Klaudiusz Dybowsk|Michał Silski

Poradnik młodego pirata cz. V

Na zakończenie naszego "Poradnika" chcielibyśmy omówić pokrótce podstawowe sposoby zabezpieczania programów. Ze zrozumiałych względów nie będziemy sie wdawać w szczegóły techniczne - chodzi nam raczej o zasygnalizowanie pewnych metod używanych do zabezpieczania.

Nie wierz nigdy drogi Czytelniku, że potrafisz zabezpieczyć program w sposób doskonały. Dla eksperta nie ma programu, którego nie dałoby się odbezpieczyć - jest to tylko kwestia czasu. Nie wierz również w sposobiki typu POKE 808, 234 i podobne, gdyż są one wartościowe jedynie w czasie działania tak zabezpieczonego programu; przed jego uruchomieniem (a żaden doświadczony programista nie będzie próbował "łamać" programu uruchomionego) można z nim zrobić co się chce. Istnieją sposoby na podglądanie zawartości pamięci, taśmy czy dyskietki; oprócz tego jest cała gama programów przeznaczonych przede wszystkim do „łamania" i (Jeszcze większa) do kopiowania programów zabezpieczonych.

Najlepszymi znanymi nam sposobami zabezpieczania programów są:

  1. Napisanie go w języku maszynowym. Konieczna jest do tego spora wiedza, ale jest też gwarancja, że byle programista nie wykreśli z Twojego programu imienia i nazwiska jego twórcy; będzie się musiał solidnie nabiedzić, zanim uda mu się cokolwiek zrobić. Widzieliśmy już „piratów", którzy rezygnowali na sam widok instrukcji SYS.
  2. Napisanie programu w BASIC i jego skompilowanie. Dzięki temu masz dwie widoczne korzyści: przyspieszenie jego wykonywania oraz zabezpieczenie przed włamywaczami. Takich kompilacji możesz dokonać w naszym klubie — zapraszamy! (adres klubu podany był w „Bajtku" nr 5-6 w kolumnie „SAMI O SOBIE"). Wystarczy nam do tego kaseta z nagranym programem, który chcesz skompilować. Przy okazji: dobrym zwyczajem jest przechowywanie gdzieś oryginalnej (nieskompilowanej) wersji programu.
  3. Zaopatrzenie Twojego programu w procedurę samo uruchamiającą. Bardziej oblatanym Czytelnikom podpowiadamy, że należy w tym celu zmienić wektor w komórkach 771 i 772 tak, aby wskazywał na początek Twojego programu. Innymi słowy, jeżeli napisałeś program (niestety dotyczy to prawie wyłącznie programów w kodzie maszynowym) zaczynający się dajmy na to od adresu 685 to wektor w adresach 771 i 772 musi „wskazywać" komórkę 685.
  4. Zmiana wektorów systemu operacyjnego lub inne tego rodzaju pułapki. Bez odpowiednich zmian wektorów czy nawet procedur systemu program nie da się uruchomić. Powyższe sposoby są bardzo szeroko stosowane, nie będą jednak one stanowiły większego problemu (no, może z wyjątkiem czwartego) dla speców od Commodore 64. Dla zupełnie „zielonych" i świeżo upieczonych programistów polecamy sposób drugi; jest to dla Was jedyna droga do zmiany BASIC na język maszynowy.

Poniżej chcielibyśmy przedstawić Czytelnikom kilka innych używanych sposobów zabezpieczania:

DYNAMICZNA KLAWIATURA

Powoduje wydruk na ekranie słowa RUN lub SYS + adres i niejako samoistne wciśnięcie sobie przez komputer klawisza RETURN; sposób ten używany jest jednak coraz rzadziej. Jeżeli gdzieś w loaderze trafisz na instrukcję POKE wpisującą jakieś wartości do komórek o adresach 631-640 to możesz być pewny, że jest to właśnie uruchamianie (właściwie — samouruchamianie) na zasadzie dynamicznej klawiatury. Istnieją dwie metody dezaktywacji - pierwsza z nich wprowadzenie do słowa RUN czy SYS błędu co spowoduje przerwanie wykonywania programu i sygnalizację błędu. Drugą metodą jest odszukanie instrukcji POKE 198, ... i wpisanie w zamian wartości 0. Bardzo często zmieniane są przy tym kolory tła i tekstu (na jednakowy, tak aby nie było widać,co się dzieje na ekranie). Ponieważ metoda ta jest coraz rzadziej używana, zdecydowaliśmy się opisać do niej sposób dezaktywacji; jako ciekawostkę chcielibyśmy podać, że w ten sposób była zabezpieczona jedna z wersji gry „BRUCE LEE".

ZBIORY

Zadaniem programu głównego jest wczytanie kilku lub kilkunastu zbiorów sekwencyjnych lub relatywnych z których składa się program główny; jest to jeden z wielu sposobów zabezpieczania na dyskach. W grupie tej warto wymienić procedury kontrolujące BAM czy określone sektory, zapis półsektorowy, wprowadzanie błędów na dysk, zapis niektórych procedur na ścieżkach o wyższym numerze niż 35, zmiany systemu operacyjnego stacji dysków i wiele innych. W niektórych programach (SKY-FOX) w razie złej kopii wywoływana jest automatycznie procedura formatująca dysk; w innych operator jest proszony o włożenie oryginalnej dyskietki (PRINT SHOP, KENNEDY APPROACH).

„SUWAK"

Zabezpieczenie to polega na przesunięciu początku pamięci w adresach 43 i 44. Najczęściej po takim przesunięciu okazuje się, że program jest napisany w BASIC; zwykle w tak zabezpieczonym programie znajdują się jeszcze inne sposoby zabezpieczające.

NAKŁADKA

Generalnie rzecz biorąc jest to jak gdyby nałożenie na siebie dwóch czy trzech części programu w ten sam obszar pamięci. W pierwszej z nich znajduje się specjalna procedura maszynowa umożliwiająca takie nakładanie; gdzieniegdzie można spotkać jeszcze programy, w których program jest „rozstrzelony" np. co trzecią komórkę. Dwie pozostałe części wgrywane są w taki sposób, że po wgraniu trzeciej program jest gotowy do użytku.

STEROWANIE CZASOWE

Jest to jeden z lepszych systemów zabezpieczających - polega on na wczytywaniu programu w nieregularnych odstępach czasowych. W ściśle określonej chwili komputer oczekuje wczytania ściśle określonej ilości bajtów w ściśle określone miejsce pamięci. Odstępy czasowe są oczywiście dla utrudnienia bardzo nieregularne. Przykładem może tu być program BEACH HEAD w wersji kasetowej.

Oczywiście wspomniane wyżej systemy i procedury nie są jedynymi. Są one często zmieszane, dodatkowo wczytują się np. w obszar pamięci przeznaczonej dla stosu mikroprocesora, zmieniają wektory czy też nawet system operacyjny komputera. Czasami też są zabezpieczone za pomocą ... tytułu programu. Tak, tak to nie miraż - przecież po wczytaniu programu czy nawet tylko jego nagłówka wyświetlane jest tylko 16 pierwszych komórek (po komórkach zawierających rodzaj nagłówka, adresy wczytywania itp.), a ponadto gdy program się uruchamia dane te zostają w buforze. Wystarczy więc tylko umieścić w programie króciutką procedurę sprawdzającą zawartość bufora - i po sprawie ... Czasami zaraz za tytułem wczytywany jest krótki loader w języku maszynowym, który pozostaje w buforze; dla tych którzy opanowali dobrze zasady programowania w asemblerze 1 znają system operacyjny nie ma rzeczy nie do zrobienia.

Jeden z ciekawszych systemów opracowała firma ISEPIC; programy zabezpieczone przez tę firmę wczytywane są do RAM leżącej... pod systemem operacyjnym. Jak wiadomo nic się długo w tej dziedzinie nie utrzyma - pojawił się w niedługi czas potem program ANTI ISEPIC umożliwiający szybkie odbezpieczenie programów tak zabezpieczonych.

Na zakończenie warto wspomnieć, że nauka programowania polega także na analizie programów napisanych przez innych. Celem jaki nam przyświecał podczas pisania takiego „pirackiego" poradnika była ochrona ludzi przed ich własną naiwnością - niejednokrotnie bowiem obserwowaliśmy jak są wykorzystywani świeżo upieczeni posiadacze komputerów przez np. niektóre wypożyczalnie czy handlarzy oprogramowaniem. Po co więc płacić, gdy część programów można przegrać samemu?

I jeszcze jedna uwaga. Nawet mały pirat nigdy nie podszywa się pod nazwisko twórcy programu. Jeżeli umie to się dopisze gdzieś w programie pozostawiając zawsze oryginalne nazwiska niezmienione; w tym cała jego „piracka" satysfakcja.

Klaudiusz Dybowsk, Michał Silski

Czytaj także w dziale Klan Commodore
„SAM”
(M.S.) - Bajtek 11/1986

Od dłuższego czasu wśród użytkowników C-64 krąży program syntezy mowy „SAM”. Program ten dodaje do zbioru komend BASIC-a kilka własnych rozkazów, pozwalających na uzyskanie całkiem poprawnie brzmiącej mowy. Niestety, bardzo niewielu osobom udało się zdobyć informacje o działaniu tego programu, który przez to bardzo rzadko jest wykorzystywany. Poniżej podaje spis komend oraz sposób ich użycia.

„Poradnik młodego pirata cz. 4”
(Ted) - Bajtek 11/1986

Uff! Po tak solidnej dawce teorii warto by było trochę odpocząć i przejść do nieco innej tematyki — jakie programy nadają sie do przepisania na taśmę.    

Poradnik młodego pirata cz. 4
„Przenieść Obraz”
Klaudiusz Dybowski - Bajtek 1/1988

Choć poszczególne modele Commodore różnią sie od siebie, to maja one także jedna cechę wspólna — jest nią grafika o rozdzielczości 320x200 punktów. Dla entuzjastów grafiki mam wiec coś ekstra — sposób przenoszenia obrazów graficznych pomiędzy modelami C-64, C-16 /116/PLUS4 i C-128.

Przenieść Obraz
„C-64 budowa i działanie”
Klaudiusz Dybowski, Michał Silski - Bajtek 3-4/1986

Dobry mikrokomputer to taki, który jest tani, ma bogate oprogramowanie dostępne w kraju, przystępny język programowania i duże możliwości rozbudowy w kierunku małego systemu. Przedstawiamy Commodore 64, mikrokomputer spełniający wszystkie powyższe wymogi, cieszący się w Polsce dużą (i zasłużoną) popularnością. Oczywiście, że określenie „tani", odnosi się do porównania z cenami innych, podobnych urządzeń, a nie do niskiej ceny w ogóle.  

C-64 budowa i działanie
„Poradnik młodego pirata cz. I”
Klaudiusz Dybowski, Michał Silski - Bajtek 8/1986

Poniższy artykuł (a właściwie pierwszą jego część) przeznaczamy dla tych wszystkich, którzy myślą o ekonomicznym wykorzystaniu swoich dyskietek zaśmieconych programami działającymi równie dobrze z taśmy. Ponadto autorzy opisują jak uczynić „nieprzegrywałne” przegrywalnym — czyli po prostu jak kopiować programy dyskowe o długości do 207 bloków. Wielokrotnie mieliśmy już okazję spotkać świeżo upieczonych posiadaczy Commodore 64 łamiących sobie głowę nad opracowaniem złotego sposobu umożliwiającego przegrywanie programów dyskowych na taśmę. Najczęściej oczywiście chodziło o tak renomowane gry jak „Kennedy Approach”, „Summer Games” czy też „Silent Service”, rzadziej zaś o jednoczęściowe programy mające po 200 i więcej bloków (1 blok — 256 bajtów). Znajdowali się również chętni do przegrywania programów kilku-częściowych, wgrywanych kolejno do pamięci za pomocą krótkiego programu wczytującego, tzw. loadera.

„C-128”
Przemysław Koziarski - Bajtek 9/1986

Zaczęło sie w styczniu 1985 w Las Vegas (USA). Wtedy to firma Commodore zaprezentowała 3 nowe mikrokomputery: Commodore PC-128. Commodore PC-128D i Commodore LCO. Commodore LCO jak dotąd nie pokazał się w sklepach, natomiast podróż PC-128 z USA do Europy trwała przeszło pół roku. Na początku lipca 1985 trafił na półki sklepowe i do katalogów domów wysyłkowych, ściślej biorąc miał trafić, bo w sklepach pojawiły się tylko pojedyńcze egzemplarze. Firma milczała, handlowcy i domy wysyłkowe też, a chętni na PC-128 ostrzyli sobie zęby i ... czekali. Krążyły różne plotki: Commodore zbankrutował, cała partia komputerów jest uszkodzona itd. Milczenie i niepewność trwały do początku października 1985. Firma wyjaśniła, że przyczyną opóźnienia w dostawie był bład w pamięci ROM.      

„Poradnik młodego pirata cz. II”
Klaudiusz Dybowski - Bajtek 9/1986

Czy wiesz drogi Czytelniku w jaki sposób Twój Commodore rozpoznaje daną konfiguracje pamieci?    

„Polski alfabet cz.l ”
(ms) - Bajtek 10/1986

Dla przekonania tych, którzy twierdza, że bez polskiej pisowni można sie obejść, zamieszczam przykład zaproponowany przez prof. W. M. Turskiego: „ZADANIE KATA NA LACE”. Sposobów interpretacji tego zdania jest na tyle dużo, aby straciło ono sens w ogóle.    

„Poradnik młodego pirata cz. V”
Klaudiusz Dybowsk, Michał Silski - Bajtek 12/1986

Na zakończenie naszego "Poradnika" chcielibyśmy omówić pokrótce podstawowe sposoby zabezpieczania programów. Ze zrozumiałych względów nie będziemy sie wdawać w szczegóły techniczne - chodzi nam raczej o zasygnalizowanie pewnych metod używanych do zabezpieczania.

„Monitory Ml — Część II”
Klaudiusz Dybowski - Bajtek 1/1989

W poprzedniej części mówiliśmy o monitorach generalnie. Dziś pora na listę instrukcji i pierwsze przykłady.

„Modem I Sprawa Polska”
Artur Bychowski - Bajtek 1/1989

Prywatni użytkownicy, właściciele oraz ci, którzy zamierzają nabyć modem do swego mikrokomputera mają zwykle kilka podstawowych wątpliwości związanych z legalizacją działalności na łączach telefonicznych. Czy dany modem był już w kraju homologowany? Jakie są przepisy dotyczące korzystania z modemów? Gdzie takie urządzenia zarejestrować? — to tylko kilka pytań, na które postaram się w tym artykule odpowiedzieć.

„Zasilacz Do Commodore C64”
Zbigniew Kaszycki - Bajtek 1/1989

Jedną z dość częstych przyczyn unieruchomienia komputera jest uszkodzenie zasilacza. Sprzyjają temu przede wszystkim jego zwarta budowa i związane z nią niekorzystne warunki chłodzenia prowadzące w rezultacie do przegrzewania się stabilizatora i transformatora a ich uszkodzeń.

„Łańcuchowanie Programów”
Krzysztof Gajewski, Bogusław Radziszewski - Bajtek 1/1989

Zmorą małych komputerów jest mała pamięć. W mikrokomputerze Commodore 64 pracującym pod kontrolą firmowego interpretera prowadzi to do pojawienia się błędu OUT OF MEMORY, który bardziej irytuje niż inne, bowiem tylko częściowo winowajcą, w przypadku gdy wystąpi, jest programista.

„EMULATOR C-64 DLA AMIGI”
Jan Jasiński - Bajtek 2/1989

Amiga i jej oprogramowanie jest przedstawiane dość skromnie i sporadycznie w prasie krajowej, czas więc na pierwszy solidny test tego komputera w naszych polskich warunkach. Test ten będzie dotyczył programu emulującego C-64 na Amidze.

„Język maszynowy”
Dominik Falkowski - Bajtek 2/1989

Opisy monitorów, które już się pojawiły w klanie COMMODORE, zasygnalizowały zamiar rozpoczęcia cyklu nauki programowania w języku maszynowym. Zanim kolejne wykłady zyskają w miarę jednostajny rytm, potrzebne będzie wprowadzenie kilku pojęć i terminów, które będą nam potrzebne w następnych wykładach. Umożliwią one pełniejsze zrozumienie metod programowania w powiązaniu z architekturą komputera.

„Bhp Virus Killer”
Klaudiusz Dybowski - Bajtek 3/1989

Wydawać by się mogło, że wirusy komputerowe dotyczą tylko sprzętu "poważnego" — IBM, AMIGI czy Atari ST. Niestety również i poczciwe komputerki 8-bitowe są podatne na tę zarazę i choć działanie wirusów odnosi się do nich w znacznie mniejszym zakresie, to jednak ich uderzenie może być dla użytkownika dość bolesne.  

„Magnetofon Też Człowiek”
Zbigniew Kaszycki{SP8IC} - Bajtek 3/1989

Mimo iż stacje dysków są coraz bardziej popularne, magnetofon długo jeszcze będzie służył wielu użytkownikom jako tania pamięć masowa. Warto więc poświęcić mu nieco uwagi i troski aby jego eksploatacja była długa i bezawaryjna.    

„1750 RAM Expansion Module”
Klaudiusz Dybowski - Bajtek 4/1989

Dzięki uprzejmości jednego ze stałych Czytelników BAJTKA otrzymatem do testowania kartkę rozszerzającą pamięć o 512 KB o nazwie „1750 RAM EXPANSION MODULE“ przeznaczona dla Commodore 128.    

„Porady spod lady”
Klaudiusz Dybowski - Bajtek 4/1989

Po dwóch latach używania mojego C-64 komputer reaguje dość dziwnie na wciśnięcie klawisza RETURN. Czasami zdarza się, że nie reaguje wogóle, czasami natomiast jedno wciśnięcie powoduje przesunięcie kursora nawet o trzy, cztery linie w dól (...