APPLICATIONSDEPLOMBAGE ★ Weg mit dem Listschutz auf dem CPC ★

Unprotect (Schneider Aktiv)Applications Deplombage
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Wer hat sich nicht schon einmal darüber geärgert, daß er von gekauften Programmcassetten für den Schneider CPC 464 keine Sicherheitskopien machen konnte oder es unmöglich ist, sich das Welcome-Programm anzuschauen? Lesen Sie sich den folgenden Artikel durch und Sie können Ihren Programmen sämtliche Geheimnisse entlocken.

Im Bedienungshandbuch zum Computer wird genau beschrieben, wie Programme mit Listschutz abgespeichert werden können. Hängen Sie beim SAVE-Befehl einfach ein ",P" für PROTECTED an, dann kann das Programm nur noch mit RUN "Name" geladen und gestartet werden. Alle Versuche mit LOAD, MERGE, CHAIN oder CHAIN MERGE sind zum Scheitern verurteilt, das Basic-Programm wird sofort gelöscht. Dies passiert auch, wenn das Programm durch zweimaliges Drücken der ESCAPE-Taste abgebrochen wird. Da ist es natürlich mehr als ärgerlich, wenn kommerzielle Programme ohne jede Sicherheitskopie geliefert werden. Nach "Murphy*s Gesetz" geht alles schief, was schiefgehen kann: Das Cassettenband reibt sich ab, die Cassette reißt oder verursacht zusammen mit dem Tonkopf Bandsalat. Wer möchte sich dann schon das gleiche Programm noch einmal kaufen, nur weil der Hersteller den Benutzer erfolgreich daran gehindert hat, eine - legale - Sicherheitskopie anzufertigen.

Im folgenden wird eine sehr elegante Software-Lösung beschrieben, mit der Sie den Listschutz aufheben können. Durchsucht man mit einem Disassembler oder einem kommentierten ROM-Listing den Basic-Interpreter, so begegnet man immer wieder der Speicherstelle &AE45 (dez. 44613). An dieser Stelle zeigt der Cassetten-Manager mit einem Flag an, daß ein Programm geschützt ist.

Nun unterschätzt man die Programmierer bei Amstrad, wenn man glaubt, durch einfaches POKEn eines bestimmten Werts das Programm listen zu können. Also muß man sich überlegen, wohin der Interpreter nach dem Laden eines Programms springt. Lädt man ein Programm mit RUN "Name", so wird es sofort gestartet. Die Befehle LOAD und MERGE fedoch lassen den Interpreter in den Editier-modus zurückkehren. Und hier findet sich auch tatsächlich der Maschinencode, der geschützte Programme samt Variablen löscht! In Z80-Assembler sieht das so aus:

&C079 LD A,(&AE45)
= Akku mit dem Protect-Flag laden

&C07C OR A
= Carry-Flag im Flag-Register löschen

&C07D CALL NZ,&C13E
= Wenn PROTECTED, dann Programme löschen

Es nützt allerdings recht wenig zu wissen, wie der Computer das Programm vernichtet, wenn es keine Möglichkeit gibt, dies zu verhindern. Diesen Programmteil mit NOP-Befehlen überschreiben zu wollen, ist natürlich blanker Unsinn, denn es handelt sich um einen ROM-Bereich und das heißt "Read Only".

Sucht man hier weiter, so stößt man auf. eine der Besonderheiten des CPC-Betriebssystems, die von Amstrad für Programmierer gedacht sind, die das Betriebssystem oder den Basic-Interpreter erweitern wollen. An mehreren zentralen Stellen im Interpreter werden Unterprogramme aufgerufen, die im RAM stehen. Normalerweise steht dort nur ein Rücksprung-Befehl (RET). Setzt man hier jedoch einen Sprung auf ein eigenes Maschinenprogramm ein, so wird dieses ausgeführt, bevor das ROM-Basic an der Reihe ist. Glücklicherweise gibt es einen solchen "Patch" auch für den Editiermodus. Bevor der Computer Ready ausgibt und gleichzeitig das Programm löscht,t springt er in Adresse &C064 noch mit CALL &AC01 in den RAM. Das abgedruckte Programm setzt hier ein und zwingt den Interpreter, mit JP NOTNEW auf ein Maschinenprogramm ab Adresse &A000 zu springen. Die dortige Routine ist im wesentlichen eine Kopie des ROM-Bereichs, allerdings wird erst hinter der Prüfung des Protected-Flags in den Basic-Interpreter zurückgesprungen. Somit kann wirksam verhindert werden, daß der Computer den Programmspeicher leert.

Wollen Sie das Maschinenprogramm benutzen, so können Sie entweder den Quellcode issemblieren, z.B. mit dem Assembler aus dem Maschinensprachebuch von Data Becker, oder auch den Basic-Loader eintippen. Achtung: Das Basic-Programm löscht sich selbst, wenn der Maschinencode im Speicher steht. Das Maschinenprogramm braucht auf keinerlei Art initialisiert zu werden, da es sich selbsttätig im Speicher plaziert.

Nehmen Sie nun am besten die "Welcome"-Cassette, die Schneider mit jedem Computer ausliefert, spulen Sie diese zum Anfang zurück und geben Sie LOAD" mit anschließendem Enter ein. Daraufhin werden die 11 Blocks des Programms geladen. Spulen Sie die Cassette aber noch nicht zurück. Sobald wieder READY erscheint, können Sie das Programm listen und auch absaven. Starten Sie es aber noch nicht, da HIMEM auf &9FFF gesetzt wurde und deshalb das Programm noch
nicht läuft: Jeder SYMBOL AFTER-Befehl verursacht eine Fehlermeldung. Speichern Sie das Welcome-Programm also auf einer anderen Cassette ab - natürlich ohfte Listschutz und lösen Sie einen Reset aus. Nun können Sie das "Welcome"-Programm wieder laden. Legen Sie nun wieder die Demo-Cassette ein, denn diese enthält noch einige Maschinenprogramme. Starten Sie das Demo-Programm ganz normal mit RUN und Sie können sehen, daß es völlig einwandfrei läuft. Genauso funktioniert es mit anderen Programmen, die diesen Listschutz verwenden.

(Kl), SA

★ PUBLISHER: Schneider Aktiv
★ YEAR: 1985
★ CONFIG: AMSDOS + 64K
★ LiCENCE: LISTING
★ COLLECTION: SCHNEIDER AKTIV 1985
★ LANGUAGE:
★ AUTHOR: Martin Kotulla
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Unprotect    (Schneider  Aktiv)    GERMANDATE: 2021-06-08
DL: 158
TYPE: ZIP
SiZE: 3Ko
NOTE: Dumped by Johnny Farragut ; 40 Cyls
.HFE: Χ

» Unprotect    (Schneider  Aktiv)    LISTING    GERMANDATE: 2021-06-08
DL: 155
TYPE: PDF
SiZE: 113Ko
NOTE: 1 page/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » ,,Unprotect'' für den Schneider CPC 464
» Applications » Disc Unprotector (Pixel)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 390 millisecondes et consultée 737 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.