★ APPLICATIONS ★ DEPLOMBAGE ★ "Alkatrax"-Codierprogramm ★ |
Alkatraz Protection System (CPC Amstrad International) | Applications Deplombage |
Binärdateien leicht verschlüsselt Das Thema Datenschutz ist schon seit den Kindertagen der Computer in aller Munde. Eine wichtige Maßnahme ist das Unlesbarmachen von Daten Bisher konnte man nur auf dem CPC Datenfiles oder BASIC-Programme verschlüsseln. Wir stellen eine Möglichkeit vor, nun auch Maschinenprogramme vor fremdem Zugriff zu schützen. Bisher gab es schon eine ganze Menge Codierprogramme, die jedoch alle bestimmte Nachteile hatten. Entweder das Programm codiert mit einem Codewort, welches man leicht vergessen kann (außerdem muß man jedesmal wieder mit diesem Wort de-codieren lassen), oder in einem Basic-Programm werden Zeilen durch Überlänge, falsche Zeilennummern und so weiter geschützt.
Eine weitere Möglichkeit eines Kopier-schutzes ist, daß das Directory unsichtbar gemacht wird. Einfache Abhilfe: Diskmonitor, Directory Editor ... reinladen, Directory ändern, fertig. Alles wieder da. Aber warum eigene, wirkungslose und unbrauchbare Schutzarten ausdenken, wenn man nur bei den Profis schauen muß. Und genau das ist der mit Sicherheit wirkungsvollste Schutz, wie Sie gleich nach einer Erklärung erkennen können. Vorab noch eine kurze Information: Selbst der Entwickler dieses Schutzes brauchte für ein normal geschütztes Programm vier bis zwölf Stunden (je nach Länge des Schutzes)!!! Nun folgen einige Informationen über diesen Kopierschutz und seine Arbeitsweise: Jedem Computerbesitzer ist das Won Kopierschutz ein bekannter Begriff (sofern er Originalsottware benutzt und versucht hat, sie zu kopieren). Aber wie funktioniert ein Kopierschutz? Die Grundlage ist eine mit einem Spe-zialformat formatierte Diskelte. Dieses Format ist meist nur schwer zu kopieren. Das gesamte Programm ist dabei nicht als File abgespeichert, sondern direkt auf Diskette geschrieben. Um es cinzulesen, wird eine Trackladeroutine aufgerufen, die das Programm von den Tracks in den Speicher liest. Wenn man diese Laderoutine, die oft sehr kompliziert ist, ungeschützt vorliegen hat, ist es meistens ein Lcichtes (für Assembler-Kundige!), das Programm einlesen zu lassen und als File normal abzuspeichern. Auf diesem Prinzip beruht übrigens das Cracken von Originalsoftware: Codierschleifen Ein Register, meist HL, zeigt auf das erste Byte hinter dieser gerade "aktiven" Schleife. In BC oder DE steht die Anzahl der Bytes, die decodiert oder codiert werden sollen. Dann wird das Byte in HL eingelesen, verknüpft und wieder zurückgeschrieben. HL wird erhöht, DE beziehungsweise BC erniedrigt. Diese Prozedur wird so lange wiederholt, bis der Zähler (DE oder BC) gleich 0 ist. Dann ist die nächste Schleife dccodiert, und die darauffolgenden sind "etwas" decodiert. Bei dieser und den nächsten Schleifen geht's genauso weiter, wie eben gezeigt. Als Beispiel dient hier die Beispielroutine. Nachdem die erste Schleife n mal (n = laenge) durchlaufen ist, steht die darauffolgende decodiert, also im Format wie die erste im Speicher und wird automatisch ausgeführt, weil ja nach dem letzten Befehl der ersten Schleife die zweite gleich beginnt. Und so geht das dann immer weiter, bis alle Schleifen beendet sind und das Programm richtig im Speicher steht. Damit aber Programmcode decodiert werden kann, muß er vorher codiert werden. Man läßt den Vorgang also rückwärts ablaufen:
Diese Programme benutzen zum Beispiel den vorgestellten Kopierschutz. Zuerst beginnt man mit der letzten Schleife bei der Codierung, dann bei der vorletzten und so weiter bis hin zur ersten. Nun steh! alles geXORt im Speicher. Das Schwierige am Cracken, dem Hacken der Schleifen, ist aber, daß es so unwahrscheinlich viele Sorten davon gibt. Es werden insgesamt zirka fünfzig Typen verwendet. Aber wir wollen ja nicht cracken, weil wir keine Raubkopierer sind. Wozu aber dann die ganzen Erklärungen ?
Funktionsweise des Programmes: Nach dem Start werden Sic nach dem Namen des zu codierenden Programmes (nur Binärprogramme) und dessen Startadresse gefragt. Die Originalstartadresse muß hierbei unbedingt beibehalten werden! Dann kommt eine Abfrage nach der Anzahl der Schleifen. Geben Sie hier einen Wert zwischen I und X ein. X sollte nicht zu groß sein, da sonst der Speicherplatz nicht reichen würde. Aber vierzig Schleifen wären sicher schon genug. Und dann geht's auch schon los! Das Programm wird codiert. Je nach Länge und Anzahl der Schleifen dauert dies einige Zeil; bei einer Länge von 4096 Bytes und einer Schleifenanzahl von vierzig zum Beispiel 45 Sekunden. Danach werden Sie aufgefordert, eine Taste zu drücken. Das fertige Produkt wird als CODE. BIN abgespeichert. Falls keine Abspeicherung gewünscht ist, drücken Sic einfach zweimal die Escape-Taste. Das folgende kurze Programm veranschaulicht eine Codierung: FOR X=&4000 TO &5000:POKE X,&C9:NEXTDanach das Codierprogramm starten , bei NAME bitte RETURN drücken, damit kein Programm geladen wird. Als Startadresse &4000. als Endadresse &5000. Danach merken Sic sich bitte die neue, vom Programm angegebene Startadresse. Danach sehen Sie sich den Speicher von &4000 bis &5000 wie folgt an: FOR X=&4000 TO &5000:? HEX$(PEEK(X))";: NEXTJetzt müßten lauter verschiedene Werte ausgegeben werden. Das sind die codierten Bytes. Dann rufen Sie die neue Startadresse auf, die Sie sich gemerkt haben, mit: CALL neue Startadresse . Jetzt schauen wir nochmal den Speicher an: FOR X=&4000 TO &5000:? HEX$(PEEK(X))" ";:NEXTDer alte Wert &C9 steht jetzt wieder da. Wenn Sie ein Programm schützen, dann bitte nur ein Programm, welches selbständig lauffähig ist. also mit CALL adresse aufgerufen werden kann, und keine Grafik oder etwas in dieser Richtung. Viel Spaß beim Verschlüsseln.
Anmerkung: Die Erklärungen verlangen eine gewisse Vorkenntnis in der Programmiersprache Assembler. Aber auch Assembler-Unkundige können das Prinzip verstehen, nicht aber die Erklärung der Codierschleifen, was für die Benutzung des Programmen nicht erforderlich ist!
|