Programmschutz auf dem QL

Das beim QL glücklicherweise sehr umfangreich ausgefallene SuperBasic erlaubt es, ohne große Probleme eigene Programme schnell zu schreiben und zu überarbeiten. Zu überlegen ist dann aber, wie man diese am besten schützt.

Der QL verfügt ja bekanntlich über den LRUN-Befehl, mit dem man ein Programm von Microdrive laden und gleichzeitig starten kann. Nun gefällt es aber nicht jedem Programmierer, daß es dem Benutzer überlassen bleibt, ob er sein Werk startet oder nicht. Auch das BOOT-File schafft hier keine Abhilfe. Was ist zu tun?

Zunächst sollte man sich den Aufbau eines Files ansehen. Beim QL besteht kein Unterschied zwischen DATAFiles, Programmen und M-Code. Daher ist es möglich, ein Programm auch mit OPEN abzuspeichern. Probieren Sie es einmal aus, indem Sie ein kurzes Listing und danach im Direktmodus folgende Zeilen eingeben:

OPEN_NEW#4, mdv1_test _bas
LIST#4 CLOSE#4
NEW

Laden Sie das Programm wie gewohnt mit LOAD. Der QL erkennt nun das File als Programm an. Der praktische Nutzeffekt der Sache ist, daß man normale Befehle (ohne Zeilennummern) abspeichern kann. Der Trick des Autostarts besteht darin, einfach einen RUN-Befehl mit abzulegen. Das sieht folgendermaßen aus:

OPEN_NEW#4, mdv1_test2 _bas
PRINT#4; "RUN" 
LIST#4
CLOSE#4 
NEW

Laden Sie nun das Programm wieder (mit LOAD); es startet automatisch. Sie können natürlich statt des RUNBefehls jedes andere Kommando senden. Als lästig empfunden wird auch oft, daß der OL beim Laden eines Basic-Programms nochmals alle geöffneten Windows nachzeichnet. Aus diesem Grund läßt sich kein Ladebild einbauen. Mit der beschriebenen SAVEMethode ist nun auch dies möglich. Nehmen wir an, Sie haben ein Motiv namens mdv1_ warten_pic auf der Cartridge und wollen dies als Titelbild für Ihr neues Spiel verwenden. Was ist zu tun? Laden Sie zuerst Ihr Programm und eröffnen mit OPEN_NEW#4, mdv1_meinspiel das File für das Spiel. Jetzt lassen Sie das Bild mit PRINT#4; "BLYTHES mdv1_warten_pic, 131072" laden. Wird ein Autostart gewünscht, kommt noch PRINT #4; "RUN" dazu. Nunc ist nur noch Kanal 4 mit CLOSE#4 zu schießen. Das war alles.

Wohl jeder weiß, daß der OL auch über Befehle zur Fehlerbehandlung verfügt. Aber das reicht oft nicht aus, um ein Programm vor fremdem Zugriff zu schützen. Es gibt jedoch auch beim OL Pokes, die das verhindern. Mit POKE_L 163900,0 macht man ein weiteres Arbeiten mit dem Rechner unmöglich; der einzige Ausweg ist ein Reset. Hier ist Vorsicht geboten: Auch bei korrekter Ausführung des Programms kann es zum Absturz kommen. Deshalb muß der letzte Befehl im Listing ein Sprung zum Anfang sein. (oder man poked die Speicherstelle 163900 wieder in ihren ursprünglichen Zustand 11512 zurück).

Die Kombination des Pokes mit der neuen SAVE-Methode macht Ihr Programm fast unerreichbar. Noch ein Hinweis: Beim OL läßt sich ein Programm so abspeichern, daß der DIR-Befehl es nicht erfassen kann. Man gibt einfach keinen File-Namen an!

SAVE mdv1_

O. Fink
Aus: Computer Kontakt 08 / 1987, Seite

Links

Copyright-Bestimmungen: siehe Über diese Seite