Copy-Discovery 2000 Homepage

Anmelden:Zur Registrierung

Erste Schritte in ProtectionScript

weiterführende Verweise: ProtectionScript Referenz, ProtectionScript Syntax, Schleifen in ProtectionScript

ProtectionScript ist eine proprietäre Scriptsprache, in der die Kopierschutzerkennungsroutinen von Copy-Discovery 2000 programmiert werden.
Jeder kann mittels ProtectionScript eigene Erkennungen schreiben und entweder zur privaten Nutzung von Copy-Discovery 2000 zu verwenden oder die eigenen Scripts der Benutzerschaft des Kopierschutzscanners zur Verfügung zu stellen.

Voraussetzungen

Die Scriptsprache kann prinzipiell jeder erlernen. Vorkenntnisse in anderen Programmiersprachen werden nicht vorausgesetzt. Wichtig ist jedoch, dass man sich mit Erkennungsmerkmalen von Kopierschutzmechanimsen auskennt. Ansonsten wird man ProtectionScript nicht sinnvoll einsetzen können.
Grundkenntnisse in Assembler sind von Vorteil.

Entwicklungsumgebung

ProtectionScript Codeboard Screenshot
Die Optik der Entwicklungsumgebung ProtectionScript Codeboard - mit Code

Die passende Entwicklungsumgebung hört auf den Namen ProtectionScript Codeboard und ist als Plugin für Copy-Discovery 2000 verfügbar.
Sie bietet viele hilfreiche Funktionen, wie Breakpoints, Registerinhalte anzeigen und bearbeiten, Zeile für Zeile ausführen, Syntaxhervorhebung, ect.

Register

ProtectionScript Codeboard Registeranzeige
Der Registerbereich im ProtectionScript Codeboard

ProtectionScript kommt ohne typische Variablen aus. Die Variablendeklaration und Typzuweisung entfällt. Die Funktion der Variablen übernehmen die Register. Register müssen nicht deklariert werden. Name und Datentyp sind statisch. Es können weder neue Register erstellt werden, noch alte gelöscht. In ProtectionScript gibt es insgesamt 25 solcher Register, die zwei verschiedenen Registergruppen angehören.
Die Benutzerregister werden verwendet, um Werte zu speichern. Es gibt 5 identische Benutzerregister. Sie hören auf die Namen #R1, #R2, #R3, #R4 und #R5. Benutzerregister können universell verwendet werden, sprich können Daten jeden Typs speichern, egal ob String-, Byte-, Number- oder Boolean-Werte. #R5 wird bevorzugt als Schleifenvariable verwendet, dies hat jedoch keinen technischen Hintergrund, sondern dient der besseren Lesbarkeit des Codes.
Die Funktionsregister stehen den Funktionen als Parametervariablen zur Verfügung. Im Gegensatz zu den Benutzerregistern, die vom Typ Object sind und folglich jede Form von Daten speichern, gibt es Funktionsregister unterschiedlichen Typs. Es gibt String-Register, Byte-Register, Number-Register und Boolean-Register. String-Register werden zum Speichern von Zeichenketten verwendet. In Byte-Register können Ganzzahlen von 0-FF (8-Bit-Ganzzahl) gespeichert werden. In Number-Register können Ganzzahlen von 0-FFFFFFFF abgelegt werden (64-Bit-Ganzzahl).
Wichtig: Alle Zahlenwerte müssen in hexadezimaler Schreibweise angegeben werden. Funktionen, die Zahlenwerte zurückgeben, verwenden auch ausschließlich die hexadezimale Schreibweise.
Boolean-Register können die Werte True oder False annehmen.
Von jedem Datentyp gibt es 5 Funktionsregister.

Allgemeine Methoden

Allgemeine Methoden haben nur eine Aufgabe, Funktionsregister zu füllen. Und weil es 20 Funktionsregister gibt, gibt es auch 20 allgemeine Methoden. Jedes Funktionsregister hat ihre eigene allgemeine Methode, mit dessen Hilfe man ihr einen Wert zuweist. In folgender Tabelle ist aufgelistet, welche allgemeine Methode zu welchem Funktionsregister gehört:

Allgemeine Methode Funktionsregister Beispiel
PUSH 1. String-Register PUSH Hello World
PUSH2 2. String-Register PUSH2 Ich bin ein C
PUSH3 3. String-Register PUSH3 ABCDEFGHIJKLM
PUSH4 4. String-Register PUSH4 Blabla blabla
PUSH5 5. String-Register PUSH5 Shanghai
PUSHBYTE 1. Byte-Register PUSHBYTE 4A
PUSHBYTE2 2. Byte-Register PUSHBYTE2 FF
PUSHBYTE3 3. Byte-Register PUSHBYTE3 AD
PUSHBYTE4 4. Byte-Register PUSHBYTE4 10
PUSHBYTE5 5. Byte-Register PUSHBYTE5 E3
PUSHNUMBER 1. Number-Register PUSHNUMBER 570A6E
PUSHNUMBER2 2. Number-Register PUSHNUMBER2 0
PUSHNUMBER3 3. Number-Register PUSHNUMBER3 674367
PUSHNUMBER4 4. Number-Register PUSHNUMBER4 53AE
PUSHNUMBER5 5. Number-Register PUSHNUMBER5 23
PUSHBOOL 1. Bool-Register PUSHBOOL True
PUSHBOOL2 2. Bool-Register PUSHBOOL2 False
PUSHBOOL3 3. Bool-Register PUSHBOOL3 False
PUSHBOOL4 4. Bool-Register PUSHBOOL4 True
PUSHBOOL5 5. Bool-Register PUSHBOOL5 True

Tutorial bewerten: