Entwicklungsfortschritt: 100%
Fortschritt der Betatests: 100%
Die Entwicklung von Copy-Discovery 2000 2.50 ist abgeschlossen.
686 Softwareeinträge
884 Softwareeditionen
874 Discs
320 Dateien
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.
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.
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.
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 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 |