ProtectionScript Referenz
weiterführende Verweise: Erste Schritte in ProtectionScript, ProtectionScript Syntax, Schleifen in ProtectionScript
ProtectionScript ist eine proprietäre Scriptsprache, die zum Beschreiben von Kopierschutzsignaturen seit Copy-Discovery 2000 2.50
verwendet wird.
Die einzelnen Signaturen werden in der ProtectionScript Library genannten DLL verwaltet.
Das hat den Vorteil, dass die Erkennungen unabhängig vom Hauptprogramm aktualisiert werden können.
Früher gab
es mit der Userdatenbank eine Möglichkeit, eigene Kopierschutzerkennungen zur Kopierschutzroutine hinzuzufügen.
Um den CD2000-Benutzern weiterhin das Ausbauen der programmeigenen Kopierschutzroutine zu ermöglichen, wurde das
ProtectionScript Codeboard entwickelt. Das Codeboard stellt eine IDE für ProtectionScript dar,
die bequemes Programmieren von Kopierschutzsignaturen ermöglicht.
Beispielcode
ProtectionScript Code
000
001
002
003
004
005
006
007
008
PUSH VIDEO_TS\VIDEO_TS.BUP
FEXISTS #R1
PUSHBOOL #R1
PUSHNUMBER 6
PUSH Video-DVD
PUSH2 [Nothing]
Inhaltsverzeichnis
Außerordentliche Methoden
Allgemeine Methoden
- • PUSH, PUSH2, PUSH3, PUSH4, PUSH5
- • PUSHBYTE, PUSHBYTE2, PUSHBYTE3, PUSHBYTE4, PUSHBYTE5
- • PUSHNUMBER, PUSHNUMBER2, PUSHNUMBER3, PUSHNUMBER4, PUSHNUMBER5
- • PUSHBOOL, PUSHBOOL2, PUSHBOOL3, PUSHBOOL4, PUSHBOOL5
Allgemeine Funktionen
File-spezifische Funktionen
Drive-spezifische Funktionen
Außerordentliche Methoden schreiben im Gegensatz zu allgemeinen Methoden
und Funktionen weder Werte in die Register, noch geben sie Werte zurück.
Erforderliche Parameter:
- 1. String-Register: Kopierschutzname (PUSH)
- 2. String-Register: Kopierschutzversion (PUSH2)
Beschreibung:
Mit wird der Script erfolgreich beendet.
Der gefundene Kopierschutz muss im ersten String Register (
PUSH),
die Kopierschutzversion im zweiten String Register (
PUSH2) stehen.
Beispiel:
ProtectionScript Code
000
001
002
PUSH SecuROM
PUSH2 7.30.0015
Verweise:
Erforderliche Parameter:
Beschreibung:
Mit wird der Script beendet, wenn
kein Kopierschutz gefunden wurde. Im Gegensatz zum -Befehl
wird der Inhalt der ersten beiden String Register nicht beachtet.
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Zeilennummer (PUSHNUMBER)
Beschreibung:
veranlasst den ProtectionScript Interpreter
in eine beliebige Zeile zu springen. Die Zeilennummer, in die gesprungen werden soll, steht im ersten Number Register.
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Zeilennummer (PUSHNUMBER)
- 1. Bool-Register: Bedingung, wenn dieser Wert True ergibt, wird gesprungen (PUSHBOOL)
Beschreibung:
veranlasst den ProtectionScript Interpreter
in eine beliebige Zeile zu springen, wenn der Wert des ersten Bool Register
True ergibt. Die Zeilennummer, in die gesprungen werden soll, steht im ersten Number Register.
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Zeilennummer (PUSHNUMBER)
- 1. Bool-Register: Bedingung, wenn dieser Wert False ergibt, wird gesprungen (PUSHBOOL)
Beschreibung:
veranlasst den ProtectionScript Interpreter
in eine beliebige Zeile zu springen, wenn der Wert des ersten Bool Register
False ergibt. Die Zeilennummer, in die gesprungen werden soll, steht im ersten Number Register.
Verweise:
Erforderliche Parameter:
Beschreibung:
löscht die Werte aller Register.
(String-Register, Number-Register, Byte-Register, Bool-Register und Benutzerregister #R1-#R5)
Verweise:
- CLEAR (verwandter Befehl)
Allgemeine Methoden schreiben Werte in die 5 Ausführungen der String-, Number-, Byte-
und Bool-Register, die als Parameter für Funktionen dienen.
Erforderliche Parameter:
Beschreibung:
Mit
PUSH schreibt man einen Stringwert ins erste String-Register,
mit
PUSH2 ins zweite String-Register, ...
Der Stringwert wird nicht in Anführungszeichen geschrieben.
Beispiel:
ProtectionScript Code
000
PUSH Hello World
Erforderliche Parameter:
Beschreibung:
Mit
PUSHBYTE schreibt man eine Zahl von 0-255 (0-FF) ins erste Byte-Register.
Wichtig: Die Zahl wird in hexadezimaler Schreibweise angegeben, beispielsweise D5 statt 213.
Beispiel:
ProtectionScript Code
000
PUSHBYTE3 4F
Erforderliche Parameter:
Beschreibung:
Mit
PUSHNUMBER schreibt man eine Zahl ins erste Number-Register.
Wichtig: Die Zahl wird in hexadezimaler Schreibweise angegeben, beispielsweise 5D45C statt 382044.
Beispiel:
ProtectionScript Code
000
PUSHNUMBER2 F3E5
Erforderliche Parameter:
Beschreibung:
Mit
PUSHBOOL schreibt man einen boolschen Wert ins erste Bool-Register.
Mögliche Werte: True oder 1 für "Wahr" und False oder 0 für "Falsch"
Beispiel:
ProtectionScript Code
000
PUSHBOOL5 False
Allgemeine Funktionen sind sowohl in Drive- als auch in File-Scripts verfügbar.
Funktionen geben Werte zurück, deshalb müssen vor dem Aufruf einer Funktion nicht nur die verwendeten Register gefüllt werden,
sondern auch ein Benutzerregister angegeben werden, in welches der Rückgabewert der Funktion geschrieben wird.
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. String-Register: Wert, der mit dem Wert des 2. String-Registers verglichen werden soll (PUSH)
- 2. String-Register: Wert, der mit dem Wert des 1. String-Registers verglichen werden soll (PUSH2)
Beschreibung:
CMP vergleicht die Werte der beiden ersten String-Register miteinander.
Im ersten
Byte-Register steht der Vergleichsmodus.
Folgende Vergleichsmodi stehen zur Verfügung:
- Byte-Register-Wert 0: = (Gleich)
- Byte-Register-Wert 1: <> (Ungleich)
- Byte-Register-Wert 2: < (Kleiner als)
- Byte-Register-Wert 3: > (Größer als)
- Byte-Register-Wert 4: <= (Kleiner oder gleich)
- Byte-Register-Wert 5: >= (Größer oder gleich)
Im angegebenen Beispiel wird geprüft, ob
Apfel gleich
Birne ist.
Der Rückgabewert der
CMP-Funktion wird in das
angegebene Register - in dem Fall
#R1 - geschrieben.
Folglich steht im
#R1-Register
False.
Beispiel:
ProtectionScript Code
000
001
002
003
PUSHBYTE 0
PUSH Apfel
PUSH2 Birne
CMP #R1
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Wert, der mit dem Wert des 2. Number-Registers verglichen werden soll (PUSHNUMBER)
- 2. Number-Register: Wert, der mit dem Wert des 1. Number-Registers verglichen werden soll (PUSHNUMBER2)
Beschreibung:
CMPNUMBER vergleicht die Werte der beiden ersten Number-Register miteinander.
Im ersten
Byte-Register steht der Vergleichsmodus.
Folgende Vergleichsmodi stehen zur Verfügung:
- Byte-Register-Wert 0: = (Gleich)
- Byte-Register-Wert 1: <> (Ungleich)
- Byte-Register-Wert 2: < (Kleiner als)
- Byte-Register-Wert 3: > (Größer als)
- Byte-Register-Wert 4: <= (Kleiner oder gleich)
- Byte-Register-Wert 5: >= (Größer oder gleich)
Im angegebenen Beispiel wird geprüft, ob
F8 ungleich
5D4 ist.
Der Rückgabewert der
CMPNUMBER-Funktion wird in das
angegebene Register - in dem Fall
#R2 - geschrieben.
Folglich steht im
#R2-Register
True.
Wichtig:
CMPNUMBER kann nur Zahlenwerte vergleichen.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
003
PUSHBYTE 1
PUSHNUMBER F8
PUSHNUMBER2 5D4
CMPNUMBER #R2
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 2. Byte-Register: Wert, der mit dem Wert des 3. Byte-Registers verglichen werden soll (PUSHBYTE2)
- 3. Byte-Register: Wert, der mit dem Wert des 2. Byte-Registers verglichen werden soll (PUSHBYTE3)
Beschreibung:
CMPBYTE vergleicht die Werte der 2. und 3. Byte-Register miteinander.
Im ersten
Byte-Register steht der Vergleichsmodus.
Folgende Vergleichsmodi stehen zur Verfügung:
- Byte-Register-Wert 0: = (gleich)
- Byte-Register-Wert 1: <> (ungleich)
- Byte-Register-Wert 2: < (kleiner als)
- Byte-Register-Wert 3: > (größer als)
- Byte-Register-Wert 4: <= (kleiner oder gleich)
- Byte-Register-Wert 5: >= (größer oder gleich)
Im angegebenen Beispiel wird geprüft, ob
15 kleiner oder gleich
2F ist.
Der Rückgabewert der
CMPBYTE-Funktion wird in das
angegebene Register - in dem Fall
#R4 - geschrieben.
Folglich steht im
#R4-Register
True.
Wichtig:
CMPBYTE kann nur Zahlenwerte im Bereich von 0-FF vergleichen.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
003
PUSHBYTE 4
PUSHBYTE2 15
PUSHBYTE3 2F
CMPBYTE #R4
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Bool-Register: Wert, der mit dem Wert des 2. Bool-Registers verglichen werden soll (PUSHBOOL)
- 2. Bool-Register: Wert, der mit dem Wert des 1. Bool-Registers verglichen werden soll (PUSHBOOL2)
Beschreibung:
CMPBOOL vergleicht die Werte der beiden ersten Bool-Register miteinander.
Im ersten
Byte-Register steht der Vergleichsmodus.
Folgende Vergleichsmodi stehen zur Verfügung:
- Byte-Register-Wert 0: = (gleich)
- Byte-Register-Wert 1: <> (ungleich)
- Byte-Register-Wert 2: < (kleiner als)
- Byte-Register-Wert 3: > (größer als)
- Byte-Register-Wert 4: <= (kleiner oder gleich)
- Byte-Register-Wert 5: >= (größer oder gleich)
Im angegebenen Beispiel wird geprüft, ob
True ungleich
True ist.
Der Rückgabewert der
CMPBOOL-Funktion wird in das
angegebene Register - in dem Fall
#R3 - geschrieben.
Folglich steht im
#R3-Register
False.
Wichtig:
CMPBOOL kann nur boolsche Werte vergleichen.
Beispiel:
ProtectionScript Code
000
001
002
003
PUSHBYTE 1
PUSHBOOL True
PUSHBOOL2 True
CMPBOOL #R3
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Summand (PUSHNUMBER)
- 2. Number-Register: Summand (PUSHNUMBER2)
Beschreibung:
ADD addiert zwei Zahlen und speichert das Ergebnis ins angegebene Register.
Im Beispiel werden die beiden Zahlenwerte
5A41 und
1D31 addiert und
das Ergebnis ins
#R1-Register gespeichert.
Wichtig:
ADD kann nur Zahlenwerte addieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHNUMBER 5A41
PUSHNUMBER2 1D31
ADD #R1
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Summand (PUSHBYTE)
- 2. Byte-Register: Summand (PUSHBYTE2)
Beschreibung:
ADDBYTE addiert zwei Zahlen und speichert das Ergebnis ins angegebene Register.
Im Beispiel werden die beiden Zahlenwerte
1F und
24 addiert und
das Ergebnis ins
#R2-Register gespeichert.
Wichtig:
ADDBYTE kann nur Zahlenwerte im Bereich zwischen 0-FF addieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 1F
PUSHBYTE2 24
ADDBYTE #R2
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Minuend (PUSHNUMBER)
- 2. Number-Register: Subtrahend (PUSHNUMBER2)
Beschreibung:
SUB subtrahiert den Wert des zweiten
Number-Registers vom Wert des ersten und speichert das Ergebnis ins angegebene Register.
Im Beispiel wird von
20B33 F7F subtrahiert und
das Ergebnis ins
#R1-Register gespeichert.
Wichtig:
SUB kann nur Zahlenwerte subtrahieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHNUMBER 20B33
PUSHNUMBER2 F7F
SUB #R1
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Minuend (PUSHBYTE)
- 2. Byte-Register: Subtrahend (PUSHBYTE2)
Beschreibung:
SUBBYTE subtrahiert den Wert des zweiten
Byte-Registers vom Wert des ersten und speichert das Ergebnis ins angegebene Register.
Im Beispiel wird von
3F 11 subtrahiert und
das Ergebnis ins
#R1-Register gespeichert.
Wichtig:
SUBBYTE kann nur Zahlenwerte im Bereich von 0-FF subtrahieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 3F
PUSHBYTE2 11
SUBBYTE #R1
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Multiplikant (PUSHNUMBER)
- 2. Number-Register: Multiplikator (PUSHNUMBER2)
Beschreibung:
MUL multipliziert den Wert des ersten
Number-Registers mit dem Wert des zweiten und speichert das Ergebnis ins angegebene Register.
Im Beispiel wird
495F mit
4 multipliziert und
das Ergebnis ins
#R2-Register gespeichert.
Wichtig:
MUL kann nur Zahlenwerte multiplizieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHNUMBER 495F
PUSHNUMBER2 4
MUL #R2
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Multiplikant (PUSHBYTE)
- 2. Byte-Register: Multiplikator (PUSHBYTE2)
Beschreibung:
MULBYTE multipliziert den Wert des ersten
Byte-Registers mit dem Wert des zweiten und speichert das Ergebnis ins angegebene Register.
Im Beispiel wird
2F mit
2 multipliziert und
das Ergebnis ins
#R3-Register gespeichert.
Wichtig:
MULBYTE kann nur Zahlenwerte im Bereich von 0-FF multiplizieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 2F
PUSHBYTE2 2
MULBYTE #R3
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Dividend (PUSHNUMBER)
- 2. Number-Register: Divisor (PUSHNUMBER2)
Beschreibung:
DIV dividiert den Wert des ersten
Number-Registers durch den Wert des zweiten und speichert das Ergebnis ins angegebene Register.
Im Beispiel wird
56F durch
7 geteilt und
das Ergebnis ins
#R2-Register gespeichert.
Wichtig:
DIV kann nur Zahlenwerte dividieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHNUMBER 56F
PUSHNUMBER2 7
DIV #R2
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Dividend (PUSHBYTE)
- 2. Byte-Register: Divisor (PUSHBYTE2)
Beschreibung:
DIVBYTE dividiert den Wert des ersten
Byte-Registers durch den Wert des zweiten und speichert das Ergebnis ins angegebene Register.
Im Beispiel wird
5D durch
2 geteilt und
das Ergebnis ins
#R1-Register gespeichert.
Wichtig:
DIVBYTE kann nur Zahlenwerte im Bereich von 0-FF dividieren.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 5D
PUSHBYTE2 2
DIVBYTE #R1
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Dividend (PUSHNUMBER)
- 2. Number-Register: Divisor (PUSHNUMBER2)
Beschreibung:
MOD speichert den Rest einer
Division zweier Ganzzahlen ins angegebene Register.
Im Beispiel wird das Ergebnis von
6E3 modulo
43
ins
#R1-Register gespeichert.
6E3 modulo
43 ist gleich
15
Wichtig:
MOD kann nur mit Zahlenwerten arbeiten.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHNUMBER 6E3
PUSHNUMBER2 43
MOD #R1
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Dividend (PUSHBYTE)
- 2. Byte-Register: Divisor (PUSHBYTE2)
Beschreibung:
MODBYTE speichert den Rest einer
Division zweier Ganzzahlen ins angegebene Register.
Im Beispiel wird das Ergebnis von
32 modulo
3
ins
#R1-Register gespeichert.
32 modulo
3 ist gleich
2
Wichtig:
MODBYTE kann nur mit Zahlenwerten im Bereich von 0-FF arbeiten.
Zahlenwerte müssen wie immer in hexadezimaler Schreibweise angegeben werden.
Um zu prüfen, ob ein unbekannter Wert eine Zahl ist, verwenden Sie die Funktion
ISNUMERIC.
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 56F
PUSHBYTE2 7
MODBYTE #R1
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: 1 oder 0 (PUSHBYTE)
- 2. Byte-Register: 1 oder 0 (PUSHBYTE2)
Beschreibung:
Wertetabelle:
0 AND 0 -> 0
0 AND 1 -> 0
1 AND 0 -> 0
1 AND 1 -> 1
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 1
PUSHBYTE2 0
AND #R1
Verweise:
- OR (verwandter Befehl)
- XOR (verwandter Befehl)
Erforderliche Parameter:
- 1. Byte-Register: 1 oder 0 (PUSHBYTE)
- 2. Byte-Register: 1 oder 0 (PUSHBYTE2)
Beschreibung:
Wertetabelle:
0 OR 0 -> 0
0 OR 1 -> 1
1 OR 0 -> 1
1 OR 1 -> 1
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 1
PUSHBYTE2 1
OR #R3
Verweise:
- AND (verwandter Befehl)
- XOR (verwandter Befehl)
Erforderliche Parameter:
- 1. Byte-Register: 1 oder 0 (PUSHBYTE)
- 2. Byte-Register: 1 oder 0 (PUSHBYTE2)
Beschreibung:
Wertetabelle:
0 XOR 0 -> 0
0 XOR 1 -> 1
1 XOR 0 -> 1
1 XOR 1 -> 0
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 0
PUSHBYTE2 1
XOR #R2
Verweise:
- AND (verwandter Befehl)
- OR (verwandter Befehl)
Erforderliche Parameter:
- 1. Byte-Register: Byte-Wert (PUSHBYTE)
- 2. Byte-Register: Byte-Wert (PUSHBYTE2)
Beschreibung:
Keine Beschreibung vorhanden
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 0
PUSHBYTE2 1
SHL #R2
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Byte-Wert (PUSHBYTE)
- 2. Byte-Register: Byte-Wert (PUSHBYTE2)
Beschreibung:
Keine Beschreibung vorhanden
Beispiel:
ProtectionScript Code
000
001
002
PUSHBYTE 0
PUSHBYTE2 1
SHR #R2
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Byte-Wert (PUSHBYTE)
Beschreibung:
Keine Beschreibung vorhanden
Beispiel:
ProtectionScript Code
000
001
PUSHBYTE 3F
NOT #R2
Verweise:
Erforderliche Parameter:
- 1. Bool-Register: Boolescher Wert (PUSHBOOL)
Beschreibung:
Keine Beschreibung vorhanden
Beispiel:
ProtectionScript Code
000
001
PUSHBOOL True
NOTBOOL #R2
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Number-Wert (PUSHNUMBER)
Beschreibung:
Keine Beschreibung vorhanden
Beispiel:
ProtectionScript Code
000
001
PUSHNUMBER 2E52
NOTNUMBER #R2
Verweise:
- NOT (verwandter Befehl)
- NOTBOOL (verwandter Befehl)
Erforderliche Parameter:
- 1. String-Register: Zu speichernder String-Wert (PUSH)
Beschreibung:
Speichert den über
PUSH angegebenen Wert in das
angeführte Register (im Beispiel
#R4).
Beispiel:
ProtectionScript Code
000
001
PUSH Bitte speichere mich in #R4!
SAVE #R4
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Zu speichernder Byte-Wert (PUSHBYTE)
Beschreibung:
Speichert den über
PUSHBYTE angegebenen Wert in das
angeführte Register (im Beispiel
#R2).
Beispiel:
ProtectionScript Code
000
001
PUSHBYTE 43
SAVEBYTE #R2
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Zu speichernder Number-Wert (PUSHNUMBER)
Beschreibung:
Speichert den über
PUSHNUMBER angegebenen Wert in das
angeführte Register (im Beispiel
#R5).
Beispiel:
ProtectionScript Code
000
001
PUSHNUMBER 4AD53
SAVENUMBER #R5
Verweise:
Erforderliche Parameter:
- 1. Bool-Register: Zu speichernder boolesche Wert (PUSHBOOL)
Beschreibung:
Speichert den über
PUSHBOOL angegebenen Wert in das
angeführte Register (im Beispiel
#R1).
Beispiel:
ProtectionScript Code
000
001
PUSHBOOL True
SAVEBOOL #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Erster Teil des zu verbindenden Strings (PUSH)
- 2. String-Register: Zweiter Teil des zu verbindenden Strings (PUSH2)
Beschreibung:
Verbindet die beiden Werte in den ersten beiden String-Registern und
speichert den zusammengesetzten String in das angegebene Register (im Beispiel
#R1).
Beispiel:
ProtectionScript Code
000
001
002
PUSH Hello
PUSH2 World
JOINSTR #R1
Erforderliche Parameter:
- 1. Byte-Register: Zu konvertierender Byte-Wert (PUSHBYTE)
Beschreibung:
Konvertiert den Wert des 1. Byte-Registers in das entsprechende Unicode-Zeichen.
Beispielsweise wird aus 45 ein großes E, aus 46 ein großes F.
Wobei die angegeben Zahlenwerte wie immer der hexadezimalen Schreibweise entsprechen.
Diese Funktion stellt das Gegenstück zur
ASCII-Funktion dar.
Beispiel:
ProtectionScript Code
000
001
PUSHBYTE 45
CHAR #R2
Verweise:
- ASCII (verwandter Befehl)
Erforderliche Parameter:
- 1. String-Register: Zu konvertierender String-Wert (PUSH)
Beschreibung:
Konvertiert den Wert des 1. String-Registers in den entsprechenden ASCII-Wert.
Beispielsweise wird aus dem Zeichen E der Hex-Wert 45, aus F 46.
Wobei die angegeben Zahlenwerte wie immer der hexadezimalen Schreibweise entsprechen.
Diese Funktion stellt das Gegenstück zur
CHAR-Funktion dar.
Zu beachten ist, dass immer nur ein Unicode-Zeichen konvertiert werden kann. Befinden sich
im 1. String-Register mehrere Zeichen, wird nur der ASCII-Wert des ersten Zeichens ausgegeben.
Beispiel:
ProtectionScript Code
000
001
PUSH E
ASCII #R2
Verweise:
Erforderliche Parameter:
- 1. String-Register: Zu konvertierender dezimaler Zahlenwert (PUSH)
Beschreibung:
Konvertiert den dezimalen Zahlenwert des 1. String-Registers in den entsprechenden hexadezimalen Zahlenwert.
Beispielsweise wird aus der dezimalen Zahl
51 die Zahl
33 in hexadezimaler Darstellung, aus
9256366 wird
8D3DAE.
Diese Funktion stellt das Gegenstück zur
DECIMAL-Funktion dar,
die eine hexadezimale in eine dezimale Zahl umwandelt.
Im Beispiel gibt die
HEX-Funktion
11B7 zurück.
Beispiel:
ProtectionScript Code
000
001
PUSH 4535
HEX #R1
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Zu konvertierender hexadezimaler Zahlenwert (PUSHNUMBER)
Beschreibung:
Konvertiert den hexadezimalen Zahlenwert des 1. Number-Registers in den entsprechenden dezimalen Zahlenwert.
Beispielsweise wird aus der hexadezimalen Zahl
33 die Zahl
51 in dezimaler Darstellung, aus
8D3DAE wird
9256366.
Diese Funktion stellt das Gegenstück zur
HEX-Funktion dar,
die eine dezimale in eine hexadezimale Zahl umwandelt.
Im Beispiel gibt die
DECIMAL-Funktion
255 zurück.
Beispiel:
ProtectionScript Code
000
001
PUSHNUMBER FF
DECIMAL #R2
Verweise:
Erforderliche Parameter:
- 1. String-Register: Basisstring (PUSH)
- 1. Number-Register: Anfangsposition des Teilstrings (PUSHNUMBER)
- 2. Number-Register: Länge des Teilstrings (PUSHNUMBER2)
Beschreibung:
Die Funktion
SUBSTR liefert einen Teilstring des Strings im 1. String-Register.
An welcher Position im String der Teilstring beginnt, wird ins 1. Number-Register geschrieben.
Die Länge des Teilstrings steht im zweiten Number-Register.
Im Codebeispiel speichert die Funktion
SUBSTR "Wichtig" ins 2. Benutzerregister.
(Weil das Wort "Wichtig" im Basisstring an zehnter (A) Position anfängt und eine Länge von 7 Buchstaben hat.)
Beispiel:
ProtectionScript Code
000
001
002
003
PUSH Blablabla Wichtig blablabla
PUSHNUMBER A
PUSHNUMBER2 7
SUBSTR #R2
Erforderliche Parameter:
- 1. String-Register: String, dessen Länge gemessen werden soll (PUSH)
Beschreibung:
LENSTR liefert die Anzahl der Zeichen eines Strings, sprich seine Länge.
Im Beispiel speichert
LENSTR den hexadezimalen Zahlenwert 16 in das 4. Benutzerregister.
Beispiel:
ProtectionScript Code
000
001
PUSH Hello ProtectionScript
LENSTR #R4
Erforderliche Parameter:
- 1. String-Register: Vermuteter Zahlenwert (PUSH)
Beschreibung:
ISNUMERIC prüft, ob der Wert des 1. String-Registers ein Zahlenwert ist.
Das Ergebnis der Prüfung wird in Form eines booleschen Wertes in das angegebene Benutzerregister geschrieben.
Im Beispiel ergibt
ISNUMERIC True.
Beispiel:
ProtectionScript Code
000
001
PUSH 435F2
ISNUMERIC #R4
Erforderliche Parameter:
- 1. String-Register: Basisstring, in dem ein Teilstring ersetzt werden soll (PUSH)
- 2. String-Register: Teilstring des Basisstrings, der ersetzt werden soll (PUSH2)
- 3. String-Register: String, der den alten Teilstring ersetzt (PUSH3)
Beschreibung:
Mit
REPLACESTR wird ein Teil eines Strings ausgetauscht.
Im Beispiel wird der Teilstring "Mailand" des Basisstrings "Der Petersdom steht in Mailand" durch "Rom" ersetzt.
Im ersten Benutzerregister steht folglich "Der Petersdom steht in Rom".
Wichtig: Groß-/Kleinschreibung ist zu beachten. "mailand" wird nicht gefunden.
Beispiel:
ProtectionScript Code
000
001
002
003
PUSH Der Petersdom steht in Mailand
PUSH2 Mailand
PUSH3 Rom
REPLACESTR #R1
Erforderliche Parameter:
- 1. String-Register: String, der in Großbuchstaben konvertiert werden soll (PUSH)
Beschreibung:
Der Wert des ersten String-Registers wird in Großbuchstaben umgewandelt.
Im Beispiel wird aus "Schreib mich groß!" "SCHREIB MICH GROß!".
Beispiel:
ProtectionScript Code
000
001
PUSH Schreib mich groß!
UPPERSTR #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: String, der in Kleinbuchstaben konvertiert werden soll (PUSH)
Beschreibung:
Der Wert des ersten String-Registers wird in Kleinbuchstaben umgewandelt.
Im Beispiel wird aus "Schreib mich klein!" "schreib mich klein!".
Beispiel:
ProtectionScript Code
000
001
PUSH Schreib mich klein!
LOWERSTR #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: String, dessen beginnende und abschließende Leerzeichen entfernt werden sollen (PUSH)
Beschreibung:
Die Leerzeichen am Anfang und am Ende des ersten Stringregisters werden entfernt.
Im Beispiel wird aus " Ich habe überflüssige Leerzeichen " "Ich habe überflüssige Leerzeichen".
Beispiel:
ProtectionScript Code
000
001
PUSH Ich habe überflüssige Leerzeichen
TRIMSTR #R1
Erforderliche Parameter:
Beschreibung:
Löscht den Wert des angegebenen Benutzerregisters.
Beispiel:
ProtectionScript Code
000
CLEAR #R1
Verweise:
Von der Funktionsweise unterscheiden sich File-spezifische Funktionen nicht von allgemeinen Funktionen.
File-spezifische Funktionen stehen aber nur File-Scripts zur Verfügung.
Erforderliche Parameter:
- 1. String-Register: Bytefolge nach der gesucht werden soll (PUSH)
- 1. Number-Register: Start-Suchposition in der Datei (PUSHNUMBER)
- 2. Number-Register: Anzahl, der zu durchsuchenden Bytes in der Datei (PUSHNUMBER2)
Beschreibung:
Sucht eine bestimmte Bytefolge in der Datei und gibt die Position zurück, an der sie gefunden wurde.
Im Beispiel wird nach der Bytefolge
50 45 gesucht (entspricht den Buchstaben
PE).
Der Suchraum wurde auf die gesamte Dateigröße festgelegt, indem der Startwert auf
das erste Zeichen in der Datei gesetzt wurde (Position 0) und die Länge des Suchraums der Dateilänge entspricht.
Die Dateilänge steht in der File-spezifischen Konstante
[Size].
Ein möglicher Rückgabewert von
BYTESSEARCH wäre
100.
Wobei
100 der Position des ersten Funds von
50 45 entspricht.
Wird die angegebene Bytefolge nicht gefunden, schreibt die Funktion
FFFFFFFFFFFFFFFF ins Register.
Beispiel:
ProtectionScript Code
000
001
002
003
PUSH 5045
PUSHNUMBER 0
PUSHNUMBER2 [Size]
BYTESSEARCH #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Zeichenfolge nach dem gesucht werden soll (PUSH)
- 1. Number-Register: Start-Suchposition in der Datei (PUSHNUMBER)
- 2. Number-Register: Anzahl, der zu durchsuchenden Bytes in der Datei (PUSHNUMBER2)
Beschreibung:
Sucht eine bestimmte Zeichenfolge in der Datei und gibt die Position zurück, an der sie gefunden wurde.
Im Beispiel wird nach der Zeichenfolge
PE gesucht (entspricht der hexadezimalen Bytefolge
50 45).
Der Suchraum wurde auf die gesamte Dateigröße festgelegt, indem der Startwert auf
das erste Zeichen in der Datei gesetzt wurde (Position 0) und die Länge des Suchraums der Dateilänge entspricht.
Die Dateilänge steht in der File-spezifischen Konstante
[Size].
Ein möglicher Rückgabewert von
STRINGSEARCH wäre
100.
Wobei
100 der Position des ersten Funds von
PE entspricht.
Wird die angegebene Bytefolge nicht gefunden, schreibt die Funktion
FFFFFFFFFFFFFFFF ins Register.
Beispiel:
ProtectionScript Code
000
001
002
003
PUSH PE
PUSHNUMBER 0
PUSHNUMBER2 [Size]
STRINGSEARCH #R1
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Position des auszulesenden Bytes in der Datei (PUSHNUMBER)
Beschreibung:
READBYTE liest das Byte an der angegebenen Position aus.
Beispiel:
ProtectionScript Code
000
001
PUSHNUMBER 3A4F2
READBYTE #R1
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Position der auszulesenden Bytefolge in der Datei (PUSHNUMBER)
- 2. Number-Register: Länge der auszulesenden Bytefolge (PUSHNUMBER2)
Beschreibung:
READBYTES liest die Zeichen an der angegebenen Position aus.
Im Beispiel werden ab Position
3A4F2 sieben Zeichen ausgelesen.
Beispiel:
ProtectionScript Code
000
001
002
PUSHNUMBER 3A4F2
PUSHNUMBER2 7
READBYTES #R1
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Position des auszulesenden Strings in der Datei (PUSHNUMBER)
- 2. Number-Register: Länge des auszulesenden Strings (PUSHNUMBER2)
Beschreibung:
READSTRING liest die Zeichen an der angegebenen Position aus.
Im Beispiel werden ab Position
3A4F2 sieben Zeichen ausgelesen.
Beispiel:
ProtectionScript Code
000
001
002
PUSHNUMBER 3A4F2
PUSHNUMBER2 7
READSTRING #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
- 1. Byte-Register: Index der auszulesenden Dateiinformation (PUSHBYTE)
Beschreibung:
Mit
GETEXTERNALFILEINFO lassen sich Dateiinformationen von Dateien auslesen,
die sich im selben Ordner oder in einem Unterordner befinden.
Hinweis: Um auf Dateien zuzugreifen, die sich in Unterordner befinden,
müssen sie den relativen Pfad angeben, beispielsweise
Tools\DirectX\dsetup32.dll.
Mit dieser Funktion kann man verschiedenste Informationen auslesen.
Welche Information man auslesen möchte, wird über den Indexwert im ersten Byte-Register bestimmt.
Welcher Indexwert welche Information liefert, finden Sie in dieser Tabelle:
Index |
Information |
Beschreibung |
0 |
Comments |
Ruft die der Datei zugeordneten Kommentare ab. |
1 |
CompanyName |
Ruft den Namen des Unternehmens ab, das diese Datei erstellt hat. |
2 |
FileBuildPart |
Ruft die Buildnummer der Datei ab. |
3 |
FileDescription |
Ruft die Beschreibung der Datei ab. |
4 |
FileMajorPart |
Ruft den Hauptteil der Versionsnummer der Datei ab. |
5 |
FileMinorPart |
Ruft den zweiten Teil der Versionsnummer (Nebenversionsnummer) der Datei ab. |
6 |
FilePrivatePart |
Ruft die Einzelteilnummer der Datei ab. |
7 |
FileVersion |
Ruft die Versionsnummer der Datei ab. |
8 |
InternalName |
Ruft den internen Namen der Datei ab, sofern vorhanden. |
9 |
IsDebug |
Ruft einen Wert ab, der angibt, ob die Datei Debuginformationen enthält oder mit aktivierten Debugfeatures kompiliert wurde. |
A |
IsPatched |
Ruft einen Wert ab, der angibt, ob die Datei geändert wurde und von der Originaldatei mit derselben Versionsnummer abweicht. |
B |
IsPreRelease |
Ruft einen Wert ab, der angibt, ob die Datei eine Entwicklungsversion und kein kommerziell vertriebenes Produkt ist. |
C |
IsPrivateBuild |
Ruft einen Wert ab, der angibt, ob die Datei mithilfe von Standardverfahren zur Veröffentlichung erstellt wurde. |
D |
IsSpecialBuild |
Ruft einen Wert ab, der angibt, ob die Datei ein besonderes Build ist. |
E |
Language |
Ruft die Zeichenfolge der Standardsprache für den Versionsinformationsblock ab. |
F |
LegalCopyright |
Ruft alle Copyrighthinweise ab, die für die angegebene Datei gültig sind. |
10 |
LegalTrademarks |
Ruft die Marken und eingetragenen Marken ab, die die Datei betreffen. |
11 |
OriginalFilename |
Ruft den Namen ab, mit dem die Datei erstellt wurde. |
12 |
PrivateBuild |
Ruft Informationen über eine private Version der Datei ab. |
13 |
ProductBuildPart |
Ruft die Buildnummer des Produkts ab, dem diese Datei zugeordnet ist. |
14 |
ProductMajorPart |
Ruft den Hauptteil der Versionsnummer des Produkts ab, dem diese Datei zugeordnet ist. |
15 |
ProductMinorPart |
Ruft den zweiten Teil der Versionsnummer (Nebenversionsnummer) des Produkts ab, dem diese Datei zugeordnet ist. |
16 |
ProductName |
Ruft den Namen des Produkts ab, mit dem diese Datei geliefert wird. |
17 |
ProductPrivatePart |
Ruft die Einzelteilnummer des Produkts ab, dem diese Datei zugeordnet ist. |
18 |
ProductVersion |
Ruft die Version des Produkts ab, mit dem diese Datei geliefert wird. |
19 |
SpecialBuild |
Ruft die Informationen über das besondere Build dieser Datei ab. |
Beispiel:
ProtectionScript Code
000
001
002
PUSH protection.dll
PUSHBYTE 7
GETEXTERNALFILEINFO #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
Beschreibung:
Mit
GETEXTERNALFILEATTRIBUTES lassen sich die Attribute von Dateien auslesen,
die sich im selben Ordner oder in einem Unterordner befinden.
Hinweis: Um auf Dateien zuzugreifen, die sich in Unterordner befinden,
müssen sie den relativen Pfad angeben, beispielsweise
Tools\DirectX\dsetup32.dll.
Beispiel:
ProtectionScript Code
000
001
PUSH protection.dll
GETEXTERNALFILEATTRIBUTES #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
Beschreibung:
Mit
GETEXTERNALFILESIZE lässt sich die Größe (Länge) in Bytes von Dateien auslesen,
die sich im selben Ordner oder in einem Unterordner befinden.
Hinweis: Um auf Dateien zuzugreifen, die sich in Unterordner befinden,
müssen sie den relativen Pfad angeben, beispielsweise
Tools\DirectX\dsetup32.dll.
Wichtig: Der zurückgegebene Zahlenwert entspricht der Dateigröße in Bytes in hexadezimaler Darstellung.
Beispiel:
ProtectionScript Code
000
001
PUSH protection.dll
GETEXTERNALFILESIZE #R1
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. String-Register: Name des Imports (PUSH)
- 1. Number-Register: Anzahl der Imports (PUSHNUMBER)
Beschreibung:
PEIMPORTEXISTS gehört zu den überladenen Funktionen. Der Vergleichsmodus
im ersten Byte-Register gibt an, welche Überladung zum Einsatz kommt. Die kursiv geschriebenen
Parameter werden nicht von jeder Überladung verwendet.
Ist der Vergleichsmodus 0, wird kontrolliert, ob die Anzahl der Imports den Wert im 1. Number-Register übersteigt.
Wenn das zutrifft, gibt die Funktion
True zurück.
Bei Vergleichsmodus 1 wird überprüft, ob ein im 1. String-Register angegebener Import existiert.
Vergleichsmodus 2 prüft wie Vergleichsmodus 1, ob ein bestimmter
Import existiert, der im 1. String-Register angegeben wird.
Nur muss hier der Name des Imports in Bytewerten in hexadezimaler Schreibweise angegeben werden.
Um den Unterschied von Vergleichsmodus 1 und 2 zu erklären, sind hier zwei Codebeispiele aufgeführt,
die die Existenz des selben Imports prüfen, aber verschiedene Vergleichsmodi verwenden.
Beispiel 1: Vergleichsmodus 1
Hier wird geprüft, ob ein
KERNEL32.dll-Import vorhanden ist.
Dazu wird der Name des Imports - in dem Fall "KERNEL32.dll" - in Klartext ins 1. String-Register geschrieben.
Groß-/Kleinschreibung wird nicht beachtet.
ProtectionScript Code
000
001
002
PUSHBYTE 1
PUSH KERNEL32.dll
PEIMPORTEXISTS #R1
Beispiel 2: Vergleichsmodus 2
Bei diesem Beispiel wird ebenfalls geprüft, ob Funktionen der
KERNEL32.dll importiert werden.
Im Unterschied zum ersten Beispiel wird bei Vergleichsmodus 2 der Name in Bytes angegeben. (4B45524E454C33322E646C6C = KERNEL32.dll)
ProtectionScript Code
000
001
002
PUSHBYTE 2
PUSH 4B45524E454C33322E646C6C
PEIMPORTEXISTS #R1
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus für Import (PUSHBYTE)
- 2. Byte-Register: Vergleichsmodus für Thunk (PUSHBYTE2)
- 1. Number-Register: Anzahl der Imports (PUSHNUMBER)
- 2. Number-Register: Anzahl der Thunks (PUSHNUMBER2)
- 1. String-Register: Name des Imports (PUSH)
- 2. String-Register: Name des Thunks (PUSH2)
Beschreibung:
PEIMPORTTHUNKEXISTS gehört zu den doppelt überladenen Funktionen mit zwei Bytes,
um die gewünschte Überladung zu bestimmen. Die kursiv geschriebenen
Parameter werden nicht von jeder Überladung verwendet.
Diese Funktion kennt neun verschiedene Überladungen, die ich im Folgenden näher beschreiben werde.
1. Byte-Register: 0, 2. Byte-Register: 0:
Für diese Überladung werden folgende Parameter verwendet (abgesehen vom 1. und 2. Byte-Register,
die immer verwendet werden):
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 2. Number-Register: Anzahl der Thunks (PUSHNUMBER2)
Wenn die Anzahl der Thunks des angegebenen Imports (1. Number-Register) die Nummer
im 2. Number-Register übersteigt, wird
True zurückgegeben.
Wichtig: Ist kein Import mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_Imports_Count] geprüft werden, ob die angegebene Nummer die
Anzahl der Imports nicht übersteigt. Aus diesem Grund wird von der Verwendung dieser Überladung abgeraten.
1. Byte-Register: 0, 2. Byte-Register: 1:
Folgende Parameter müssen angegeben werden (plus 1. und 2. Byte-Register):
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 1. String-Register: Name des Thunks (PUSH)
Wenn der Import mit angegebener Nummer einen Thunk mit angegebenen Namen besitzt, wird
True
zurückgegeben. Dabei wird auf Groß-/Kleinschreibung nicht geachtet. Wenn Groß-/Kleinschreibung
eine Rolle spielt, muss eine andere Überladung angesprochen werden (1. Byte-Register: 0, 2. Byte-Register: 2).
Wichtig: Ist kein Import mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_Imports_Count] geprüft werden, ob die angegebene Nummer die
Anzahl der Imports nicht übersteigt. Aus diesem Grund wird von der Verwendung dieser Überladung abgeraten.
ProtectionScript Code
000
001
002
003
004
PUSHBYTE 0
PUSHBYTE2 1
PUSHNUMBER 2
PUSH MessageBoxA
PEIMPORTTHUNKEXISTS #R1
Im Beispiel wird geprüft, ob der 2. Import einen Thunk namens
MessageBoxA besitzt.
1. Byte-Register: 0, 2. Byte-Register: 2:
Erforderliche Paramenter:
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 1. String-Register: Name des Thunks in hexadezimaler Schreibweise (PUSH)
Diese Überladung unterscheidet sich nur in einem Punkt von der darüber: Der Name des Thunks wird nicht
in Buchstaben angegeben, sondern in den entsprechenden hexadezimalen Zahlencodes.
Wichtig: Ist kein Import mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_Imports_Count] geprüft werden, ob die angegebene Nummer die
Nummer der Imports nicht übersteigt. Aus diesem Grund wird von der Verwendung dieser Überladung abgeraten.
ProtectionScript Code
000
001
002
003
004
PUSHBYTE 0
PUSHBYTE2 2
PUSHNUMBER 2
PUSH 4D657373616765426F7841
PEIMPORTTHUNKEXISTS #R1
Im Beispiel wird geprüft, ob der 2. Import einen Thunk namens
MessageBoxA besitzt, nur wird jetzt der Thunkname in
hexadezimaler Schreibweise angegeben (
MessageBoxA =
4D657373616765426F7841). Dies hat den Vorteil,
dass Groß-/Kleinschreibung beachtet wird und sollte vor allem immer dann verwendet werden, wenn der Thunkname Sonderzeichen enthält.
1. Byte-Register: 1, 2. Byte-Register: 0:
Erforderliche Paramenter:
- 1. String-Register: Name des Imports (PUSH)
- 1. Number-Register: Anzahl der Thunks (PUSHNUMBER)
Wenn die Anzahl der Thunks des angegebenen Imports (1. String-Register) die Nummer
im 1. Number-Register übersteigt, wird
True zurückgegeben.
Der einzige Unterschied zur ersten Überladung ist, dass der Import nicht
über seine Nummer angegeben wird, sondern über seinen Namen.
Wenn kein Import mit angegebenen Namen vorhanden ist, wird
False zurückgegeben.
1. Byte-Register: 1, 2. Byte-Register: 1:
Erforderliche Paramenter:
- 1. String-Register: Name des Imports (PUSH)
- 2. String-Register: Name des Thunks (PUSH2)
Wenn der angegebene Import einen Thunk mit angegebenen Namen besitzt, wird
True zurückgegeben.
ProtectionScript Code
000
001
002
003
004
PUSHBYTE 1
PUSHBYTE2 1
PUSH user32.dll
PUSH2 MessageBoxA
PEIMPORTTHUNKEXISTS #R1
Wenn der Import der
user32.dll einen Thunk namens
MessageBoxA besitzt, wird
True zurückgegeben.
Existiert kein Import der
user32.dll oder hat dieser keinen
MessageBoxA-Thunk, wird
False zurückgegeben.
1. Byte-Register: 1, 2. Byte-Register: 2:
Erforderliche Paramenter:
- 1. String-Register: Name des Imports (PUSH)
- 2. String-Register: Name des Thunks in hexadezimaler Schreibweise (PUSH2)
Diese Überladung unterscheidet sich nur in der Schreibweise des Thunk-Namens. Hier wird er in hexadezimalen
Zahlencode angegeben, was Groß-/Kleinschreibung berücksichtigt.
ProtectionScript Code
000
001
002
003
004
PUSHBYTE 1
PUSHBYTE2 2
PUSH user32.dll
PUSH2 4D657373616765426F7841
PEIMPORTTHUNKEXISTS #R1
1. Byte-Register: 2, 2. Byte-Register: 0:
Erforderliche Paramenter:
- 1. String-Register: Name des Imports in hexadezimaler Schreibweise (PUSH)
- 1. Number-Register: Anzahl der Thunks (PUSHNUMBER)
Wenn die Anzahl der Thunks des angegebenen Imports (1. String-Register) die Nummer
im 2. Number-Register übersteigt, wird
True zurückgegeben.
Der Name des Imports wird in hexadezimalen Zahlencode angegeben. Groß-/Kleinschreibung wird in diesem Fall berücksichtigt.
Existiert der angegebene Import nicht oder enthält er weniger oder gleich viele Thunks als im 1. Number-Register
angegeben, wird
False zurückgegeben.
ProtectionScript Code
000
001
002
003
004
PUSHBYTE 2
PUSHBYTE2 0
PUSH 7573657233322E646C6C
PUSH2 2
PEIMPORTTHUNKEXISTS #R1
Im Beispiel wird geprüft, ob der Import
user32.dll (gleichbedeutend mit
7573657233322E646C6C) mehr als zwei Thunks besitzt.
1. Byte-Register: 2, 2. Byte-Register: 1:
Erforderliche Paramenter:
- 1. String-Register: Name des Imports in hexadezimaler Schreibweise (PUSH)
- 2. String-Register: Name des Thunks (PUSH)
Diese Überladung überprüft, ob ein bestimmter Import einen bestimmten Thunk besitzt.
Der Name des Imports wird in hexadezimalen Zahlencode angegeben und ist case-sensitive, während der Name
des Thunks in Buchstaben angegeben wird und Groß-/Kleinschreibung nicht berücksichtigt.
1. Byte-Register: 2, 2. Byte-Register: 2:
Erforderliche Paramenter:
- 1. String-Register: Name des Imports in hexadezimaler Schreibweise (PUSH)
- 2. String-Register: Name des Thunks in hexadezimaler Schreibweise (PUSH)
Sowohl Name des Imports als auch des Thunks werden in hexadezimaler Schreibweise angegeben.
ProtectionScript Code
000
001
002
003
004
PUSHBYTE 2
PUSHBYTE2 2
PUSH 7573657233322E646C6C
PUSH2 4D657373616765426F7841
PEIMPORTTHUNKEXISTS #R1
Im Beispiel wird geprüft, ob der Import
user32.dll (
7573657233322E646C6C) den Thunk
MessageBoxA (
4D657373616765426F7841) besitzt.
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. String-Register: Name des Exports (PUSH)
- 1. Number-Register: Anzahl der Exports (PUSHNUMBER)
Beschreibung:
PEEXPORTEXISTS ist eine überladene Funktion. Der Vergleichsmodus
im ersten Byte-Register gibt an, welche Überladung zum Einsatz kommt. Die kursiv geschriebenen
Parameter werden nicht von jeder Überladung verwendet.
Ist der Vergleichsmodus 0, wird kontrolliert, ob die Anzahl der Exporte den Wert im 1. Number-Register übersteigt.
Wenn das zutrifft, gibt die Funktion
True zurück.
Bei Vergleichsmodus 1 wird überprüft, ob ein im 1. String-Register angegebener Export existiert.
Vergleichsmodus 2 prüft wie Vergleichsmodus 1, ob ein bestimmter
Export existiert, der im 1. String-Register angegeben wird.
Nur muss hier der Name des Exports in Bytewerten in hexadezimaler Schreibweise angegeben werden.
Um den Unterschied von Vergleichsmodus 1 und 2 zu erklären, sind hier zwei Codebeispiele aufgeführt,
die die Existenz des selben Exports prüfen, aber verschiedene Vergleichsmodi verwenden.
Beispiel 1: Vergleichsmodus 1
Hier wird geprüft, ob ein
KERNEL32.dll-Export vorhanden ist.
Dazu wird der Name des Exports - in dem Fall "KERNEL32.dll" - in Klartext ins 1. String-Register geschrieben.
Groß-/Kleinschreibung wird nicht beachtet.
ProtectionScript Code
000
001
002
PUSHBYTE 1
PUSH KERNEL32.dll
PEEXPORTEXISTS #R1
Beispiel 2: Vergleichsmodus 2
Bei diesem Beispiel wird ebenfalls geprüft, ob Funktionen der
KERNEL32.dll exportiert werden.
Im Unterschied zum ersten Beispiel wird bei Vergleichsmodus 2 der Name in Bytes angegeben. (4B45524E454C33322E646C6C = KERNEL32.dll)
ProtectionScript Code
000
001
002
PUSHBYTE 2
PUSH 4B45524E454C33322E646C6C
PEEXPORTEXISTS #R1
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
Beschreibung:
Diese Funktion gibt den Namen des Imports mit der im 1. Number-Register angegebenen Nummer zurück.
Wichtig: Ist kein Import mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_Imports_Count] geprüft werden, ob die angegebene Nummer die
Nummer der Imports nicht übersteigt.
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 2. Number-Register: Nummer des Thunks (PUSHNUMBER2)
- 1. String-Register: Name des Imports (PUSH)
- 1. Number-Register: Nummer des Thunks (PUSHNUMBER)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
1. Byte-Register: 0
Erforderliche Parameter:
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 2. Number-Register: Nummer des Thunks (PUSHNUMBER2)
Die Funktion gibt den Namen des Thunks zurück, der zum angegebenen Import gehört und die angegebene Nummer besitzt.
Wichtig: Ist kein Import oder Thunk mit angegebener Nummer vorhanden, tritt eine nicht behandelte Ausnahme auf. Deshalb muss vorher
überprüft werden, ob an der angegebenen Nummer ein Import/Thunk existiert. Aus diesem Grund wird von der Verwendung dieser Überladung
abgeraten.
1. Byte-Register: 1
Erforderliche Parameter:
- 1. String-Register: Name des Imports (PUSH)
- 1. Number-Register: Nummer des Thunks (PUSHNUMBER)
Es wird der Name des Thunks mit der angegebenen Nummer zurückgegeben, der sich im angegebenen Import befindet.
Bei dieser Funktion kommt es zu keiner Ausnahme, wenn der Import nicht existiert, sehr wohl aber wenn die Nummer des Thunks zu groß ist.
Darum muss diese vorher überprüft werden.
1. Byte-Register: 2
Erforderliche Parameter:
- 1. String-Register: Name des Imports in hexadezimaler Schreibweise (PUSH)
- 1. Number-Register: Nummer des Thunks (PUSHNUMBER)
Diese Überladung ist beinahe identisch mit der oberen, nur dass der Name des Imports in hexadezimaler Bytefolge angegeben werden muss.
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 1. String-Register: Name des Imports (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
1. Byte-Register: 0
Erforderliche Parameter:
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
Diese Überladung gibt die Anzahl der Thunks des Imports mit angegebener Nummer zurück.
Wichtig: Ist kein Import mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_Imports_Count] geprüft werden, ob die angegebene Nummer die
Anzahl der Imports nicht übersteigt. Aus diesem Grund wird von der Verwendung dieser Überladung abgeraten.
1. Byte-Register: 1
Erforderliche Parameter:
- 1. String-Register: Name des Imports (PUSH)
Die Anzahl der Thunks des angegebenen Imports wird zurückgegeben. Ist kein Import mit spezifiziertem Namen vorhanden,
wird
[Nothing] zurückgegeben.
1. Byte-Register: 2
Erforderliche Parameter:
- 1. String-Register: Name des Imports in hexadezimaler Schreibweise (PUSH)
Diese Überladung ist beinahe identisch mit der oberen, nur dass der Name des Imports in hexadezimaler Bytefolge angegeben werden muss.
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 2. Number-Register: Nummer des Thunks (PUSHNUMBER2)
- 1. String-Register: Name des Imports (PUSH)
- 1. Number-Register: Nummer des Thunks (PUSHNUMBER)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 1. String-Register: Name des Imports (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 1. String-Register: Name des Imports (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer des Imports (PUSHNUMBER)
- 1. String-Register: Name des Imports (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Nummer des Exports (PUSHNUMBER)
Beschreibung:
Diese Funktion gibt den Namen des Exports mit angegebener Nummer zurück.
Wichtig: Ist kein Export mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_Exports_Count] geprüft werden, ob die angegebene Nummer die
Anzahl der Exports nicht übersteigt.
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Nummer des Exports (PUSHNUMBER)
Beschreibung:
Diese Funktion gibt die Ordnungszahl (Ordinal) des Exports mit angegebener Nummer zurück.
Wichtig: Ist kein Export mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_Exports_Count] geprüft werden, ob die angegebene Nummer die
Anzahl der Exports nicht übersteigt.
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Anzahl der Sections (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
1. Byte-Register: 0
Erforderliche Parameter:
- 1. Number-Register: Anzahl der Sections (PUSHNUMBER)
Übersteigt die Anzahl der Sections den Wert im 1. Number-Register wird
True zurückgegeben.
1. Byte-Register: 1
Erforderliche Parameter:
- 1. String-Register: Name der Section (PUSH)
Die Funktion gibt
True zurück, wenn eine Section mit angegebenen Namen existiert. Groß-/Kleinschreibung spielt keine Rolle.
ProtectionScript Code
000
001
002
PUSHBYTE 1
PUSH .text
PESECTIONEXISTS #R1
Im Beispiel wird geprüft, ob eine Section namens
.text existiert.
1. Byte-Register: 2
Erforderliche Parameter:
- 1. String-Register: Name der Section in hexadezimaler Bytefolge (PUSH)
Im Unterschied zur Überladung darüber muss hier der gesamte achtstellige Sectionname in hexadezimalen Bytewerten angegeben werden.
ProtectionScript Code
000
001
002
PUSHBYTE 2
PUSH 2E74657874000000
PESECTIONEXISTS #R1
Im Beispiel wird die selbe Section überprüft wie im Beispiel darüber, nur werden hier die hexadezimalen Bytewerte des Sectionnamens angegeben.
Hinweis: Der Sectionname hat immer 8 Stellen. Ist der eigentliche Name kürzer, werden die verbleibenden Stellen mit 00-Werten gefüllt. Diese
00-Werte müssen bei dieser Überladung auch angegeben werden.
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
Beschreibung:
Diese Funktion gibt den Namen der Section mit angegebener Nummer zurück.
Wichtig: Ist keine Section mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_NumberOfSections] geprüft werden, ob die angegebene Nummer die
Anzahl der Sections nicht übersteigt.
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
Beschreibung:
Diese Funktion gibt den Namen der Section mit angegebener Nummer zurück. Der Unterschied zur
PEGETSECTIONNAME-Funktion ist, dass der Rückgabewert nicht die Buchstaben des Namens liefert,
sondern seine hexadezimalen Bytewerte (8-stellig) mit platzfüllenden Nullen, falls vorhanden.
Wichtig: Ist keine Section mit der im 1. Number-Register angegebenen Nummer vorhanden, führt der
Script zu einer nicht behandelten Ausnahme. Um dies zu vermeiden, muss vorher mit der Konstante
[PE_NumberOfSections] geprüft werden, ob die angegebene Nummer die
Anzahl der Sections nicht übersteigt.
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Byte-Register: Vergleichsmodus (PUSHBYTE)
- 1. Number-Register: Nummer der Section (PUSHNUMBER)
- 1. String-Register: Name der Section (PUSH)
Beschreibung:
Diese Funktion gehört zu den überladenen Funktionen. Das 1. Byte-Register bestimmt, welche Überladung eingesetzt wird.
Je nachdem, welche Überladung verwendet wird, werden unterschiedliche Parameter benötigt.
Keine genauere Beschreibung vorhanden
Verweise:
Erforderliche Parameter:
- 1. Number-Register: Relative Virtual Address (PUSHNUMBER)
Beschreibung:
Konvertiert RVA in Raw Offset.
Verweise:
Von der Funktionsweise unterscheiden sich Drive-spezifische Funktionen nicht von allgemeinen Funktionen.
Wie der Name schon vermuten lässt, stehen Sie aber nur in Scripts der Drive-Kategorie zur Verfügung.
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
Beschreibung:
Die
FEXISTS-Funktion überprüft, ob eine bestimmte Datei auf der Disc vorhanden ist.
Der Name der zu prüfenden Datei wird ins erste String-Register gelegt. Befindet sich die Datei nicht im
Wurzelverzeichnis der Disc, muss der relative Pfad angegeben werden, beispielsweise
Tools\DirectX\dsetup32.dll.
Wenn Sie den genauen Pfad der Datei nicht kennen und nur prüfen möchten,
ob sich die gesuchte Datei irgendwo auf der Disc befindet, verwenden Sie die
FSEARCH-Funktion.
Hinweis: Groß-/Kleinschreibung wird nicht berücksichtigt.
Im Beispiel wird - sofern die CLOKSPL.EXE im Hauptverzeichnis der
gescannten Disc vorhanden ist - ins erste Benutzerregister
True geschrieben.
Beispiel:
ProtectionScript Code
000
001
PUSH CLOKSPL.EXE
FEXISTS #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
- 1. Byte-Register: Index der auszulesenden Dateiinformation (PUSHBYTE)
Beschreibung:
Mit
FINFO lassen sich
Dateiinformationen von Dateien auf dem analysierten Datenträger auslesen.
Hinweis: Um auf Dateien zuzugreifen, die sich in Unterordner befinden,
müssen sie den relativen Pfad angeben, beispielsweise
Tools\DirectX\dsetup32.dll.
Mit dieser Funktion kann man verschiedenste Informationen auslesen.
Welche Information man auslesen möchte, wird über den Indexwert im ersten Byte-Register bestimmt.
Welcher Indexwert welche Information liefert, finden Sie in dieser Tabelle:
Index |
Information |
Beschreibung |
0 |
Comments |
Ruft die der Datei zugeordneten Kommentare ab. |
1 |
CompanyName |
Ruft den Namen des Unternehmens ab, das diese Datei erstellt hat. |
2 |
FileBuildPart |
Ruft die Buildnummer der Datei ab. |
3 |
FileDescription |
Ruft die Beschreibung der Datei ab. |
4 |
FileMajorPart |
Ruft den Hauptteil der Versionsnummer der Datei ab. |
5 |
FileMinorPart |
Ruft den zweiten Teil der Versionsnummer (Nebenversionsnummer) der Datei ab. |
6 |
FilePrivatePart |
Ruft die Einzelteilnummer der Datei ab. |
7 |
FileVersion |
Ruft die Versionsnummer der Datei ab. |
8 |
InternalName |
Ruft den internen Namen der Datei ab, sofern vorhanden. |
9 |
IsDebug |
Ruft einen Wert ab, der angibt, ob die Datei Debuginformationen enthält oder mit aktivierten Debugfeatures kompiliert wurde. |
A |
IsPatched |
Ruft einen Wert ab, der angibt, ob die Datei geändert wurde und von der Originaldatei mit derselben Versionsnummer abweicht. |
B |
IsPreRelease |
Ruft einen Wert ab, der angibt, ob die Datei eine Entwicklungsversion und kein kommerziell vertriebenes Produkt ist. |
C |
IsPrivateBuild |
Ruft einen Wert ab, der angibt, ob die Datei mithilfe von Standardverfahren zur Veröffentlichung erstellt wurde. |
D |
IsSpecialBuild |
Ruft einen Wert ab, der angibt, ob die Datei ein besonderes Build ist. |
E |
Language |
Ruft die Zeichenfolge der Standardsprache für den Versionsinformationsblock ab. |
F |
LegalCopyright |
Ruft alle Copyrighthinweise ab, die für die angegebene Datei gültig sind. |
10 |
LegalTrademarks |
Ruft die Marken und eingetragenen Marken ab, die die Datei betreffen. |
11 |
OriginalFilename |
Ruft den Namen ab, mit dem die Datei erstellt wurde. |
12 |
PrivateBuild |
Ruft Informationen über eine private Version der Datei ab. |
13 |
ProductBuildPart |
Ruft die Buildnummer des Produkts ab, dem diese Datei zugeordnet ist. |
14 |
ProductMajorPart |
Ruft den Hauptteil der Versionsnummer des Produkts ab, dem diese Datei zugeordnet ist. |
15 |
ProductMinorPart |
Ruft den zweiten Teil der Versionsnummer (Nebenversionsnummer) des Produkts ab, dem diese Datei zugeordnet ist. |
16 |
ProductName |
Ruft den Namen des Produkts ab, mit dem diese Datei geliefert wird. |
17 |
ProductPrivatePart |
Ruft die Einzelteilnummer des Produkts ab, dem diese Datei zugeordnet ist. |
18 |
ProductVersion |
Ruft die Version des Produkts ab, mit dem diese Datei geliefert wird. |
19 |
SpecialBuild |
Ruft die Informationen über das besondere Build dieser Datei ab. |
Beispiel:
ProtectionScript Code
000
001
002
PUSH protection.dll
PUSHBYTE 7
FINFO #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
Beschreibung:
Mit dieser Funktion lässt sich die Größe einer Datei auf der Disc auslesen.
Wenn die angegebene Datei nicht vorhanden ist, wird nicht 0 sondern nichts zurückgegeben.
Hinweis: Die Größe wird in Bytes und in hexadezimaler Schreibweise ausgegeben.
Beispiel:
ProtectionScript Code
000
001
PUSH CLOKSPL.EXE
FSIZE #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
Beschreibung:
Mit dieser Funktion lassen sich die Attribute einer Datei auf der Disc auslesen.
Wenn die angegebene Datei nicht vorhanden ist, wird nicht 0 sondern nichts zurückgegeben.
Beispiel:
ProtectionScript Code
000
001
PUSH CLOKSPL.EXE
FATTRIBUTES #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Dateiname (PUSH)
Beschreibung:
FSEARCH sucht eine Datei auf der Disc.
Ist die angegebene Datei gefunden, wird der Pfad vom Hauptverzeichnis zur Datei ausgegeben.
Im Beispiel könnte die Funktion
Tools\DirectX\dsetup32.dll ins erste Benutzerregister schreiben.
Beispiel:
ProtectionScript Code
000
001
PUSH dsetup32.dll
FSEARCH #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Verzeichnispfad (PUSH)
Beschreibung:
Die
DEXISTS-Funktion überprüft, ob ein bestimmtes Verzeichnis auf der Disc vorhanden ist.
Der Pfad des zu prüfenden Verzeichnis wird ins erste String-Register gelegt.
Wenn Sie den genauen Pfad des Verzeichnis nicht kennen und nur prüfen möchten,
ob sich ein bestimmter Ordner irgendwo auf der Disc befindet, verwenden Sie die
DSEARCH-Funktion.
Hinweis: Groß-/Kleinschreibung wird nicht berücksichtigt.
Im Beispiel wird - sofern es auf der Disc einen Ordner namens
Version gibt, der sich im
Protection-Verzeichnis befindet - ins erste Benutzerregister
True geschrieben.
Beispiel:
ProtectionScript Code
000
001
PUSH Protection\Version
DEXISTS #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Verzeichnispfad (PUSH)
Beschreibung:
DSEARCH sucht einen Ordner auf der Disc.
Wurde der angegebene Ordner gefunden, wird der Pfad vom Hauptverzeichnis zum Ordner ausgegeben.
Im Beispiel könnte die Funktion
Protection\Version ins erste Benutzerregister schreiben,
wenn sich ein Ordner namens
Version im
Protection-Verzeichnis befindet.
Beispiel:
ProtectionScript Code
000
001
PUSH Version
DSEARCH #R1
Verweise:
Erforderliche Parameter:
- 1. String-Register: Verzeichnispfad (PUSH)
Beschreibung:
Mit dieser Funktion lassen sich die Attribute eines Ordners auf der Disc auslesen.
Wenn der angegebene Ordner nicht vorhanden ist, wird nicht 0 sondern nichts zurückgegeben.
Beispiel:
ProtectionScript Code
000
001
PUSH Version
DATTRIBUTES #R1
Die beiden allgemeinen Konstanten sind sowohl in Drive- als auch in File-Scripts verfügbar.
Beschreibung:
Keine Beschreibung vorhanden
Beschreibung:
Mit der Konstante lässt sich beispielsweise prüfen, ob die
GETEXTERNALFILEINFO-Funktion keinen Wert zurückgibt.
Im Beispiel wird mit der
GETEXTERNALFILEINFO-Funktion der
OriginalFilename (11) von der
protection.dll ausgelesen. Und anschließend wird
verglichen, ob der zurückgegebene Wert der
[Nothing]-Konstante entspricht.
Wenn die Vergleichsfunktion
CMP in diesem Fall
True zurückgibt,
verfügt die
protection.dll-Datei über keine
OriginalFilename-Eigenschaft oder die Datei existiert nicht.
Beispiel:
ProtectionScript Code
000
001
002
003
004
005
006
PUSH protection.dll
PUSHBYTE 11
GETEXTERNALFILEINFO #R1
PUSHBYTE 0
PUSH #R1
PUSH2 [Nothing]
CMP #R2
Verweise:
Die File-spezifischen Konstanten können nur in File-Scripts verwendet werden.
Beschreibung:
Die
[Size]-Konstante enthält die Dateigröße
der gerade analysierten Datei in Bytes in hexadezimaler Schreibweise.
Zum Bestimmen der Dateigröße externer Dateien, verwenden Sie die
GETEXTERNALFILESIZE-Funktion.
Verweise:
Beschreibung:
In der
[Name]-Konstante steht der Dateiname (mit Dateiendung, ohne Pfad) der gerade analysierten Datei.
Beschreibung:
In dieser Konstante stehen die Attribute der gerade analysierten Datei.
Um die Attribute externer Dateien herauszufinden, verwenden Sie die
GETEXTERNALFILEATTRIBUTES-Funktion.
Verweise:
Beschreibung:
Die
[Extension]-Konstante gibt Auskunft über die Dateiendung der gerade analysierten Datei.
Hinweis: Die Dateiendung wird immer in Kleinbuchstaben geschrieben und fängt mit einem Punkt an.
Beschreibung:
Die
[CreationTime]-Konstante gibt den Zeitpunkt an, wann die gerade analysierte Datei erstellt wurde, beispielsweise 07.01.2007 13:26:44.
Beschreibung:
Enthält den Wert der
Comments-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
Comments-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
Comments-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
CompanyName-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
CompanyName-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
CompanyName-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
FileBuildPart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
FileBuildPart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
FileBuildPart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
FileDescription-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
FileDescription-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
FileDescription-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
FileMajorPart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
FileMajorPart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
FileMajorPart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
FileMinorPart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
FileMinorPart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
FileMinorPart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
FilePrivatePart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
FilePrivatePart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
FilePrivatePart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
FileVersion-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
FileVersion-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
FileVersion-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
InternalName-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
InternalName-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
InternalName-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
IsDebug-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
IsDebug-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
IsDebug-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
IsPatched-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
IsPatched-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
IsPatched-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
IsPreRelease-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
IsPreRelease-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
IsPreRelease-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
IsPrivateBuild-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
IsPrivateBuild-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
IsPrivateBuild-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
IsSpecialBuild-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
IsSpecialBuild-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
IsSpecialBuild-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
Language-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
Language-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
Language-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
LegalCopyright-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
LegalCopyright-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
LegalCopyright-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
LegalTrademarks-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
LegalTrademarks-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
LegalTrademarks-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
OriginalFilename-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
OriginalFilename-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
OriginalFilename-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
PrivateBuild-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
PrivateBuild-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
PrivateBuild-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
ProductBuildPart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
ProductBuildPart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
ProductBuildPart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
ProductMajorPart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
ProductMajorPart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
ProductMajorPart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
ProductMinorPart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
ProductMinorPart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
ProductMinorPart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
ProductName-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
ProductName-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
ProductName-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
ProductPrivatePart-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
ProductPrivatePart-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
ProductPrivatePart-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
ProductVersion-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
ProductVersion-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
ProductVersion-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Enthält den Wert der
SpecialBuild-Eigenschaft der gerade analysierten Datei.
Weitere Informationen zur
SpecialBuild-Eigenschaft finden sich
in der Beschreibung der
GETEXTERNALFILEINFO-Funktion.
Um die
SpecialBuild-Eigenschaft externer Dateien auszulesen,
verwenden Sie die
GETEXTERNALFILEINFO-Funktion.
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1244
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: ERROR - EORROR - ERROR - EORROR - ERROR - EORROR - ERROR - EORROR - ERROR - EORROR
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 10F
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 400000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 14C
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 10B
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 7
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 4
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 4
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: A
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 10
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 4
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: F8
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1F0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: BF000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 100000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 3E5000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1DC000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: E0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 1000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 100000
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 2
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 1
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 43EC0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): D78C
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 43EC0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 0
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): base.dll
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 3E7
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 3E7
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 46CB787F
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 3E7
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 2264
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 50
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 2264
Verweise:
Beschreibung:
Siehe PE Dateiformat Spezifikation
Beispielwert: 3
Verweise:
Die Drive-spezifischen Konstanten können nur in Drive-Scripts verwendet werden.
Beschreibung:
Die
SerialNumber-Konstante enthält die Seriennummer
der gerade analysierten Disc in hexadezimaler Schreibweise (zum Beispiel
AD29BC97).
Beschreibung:
FileSystem gibt das Dateisystem der Disc an (
CDFS bei CDs,
UDF bei DVDs).
Beschreibung:
Die
Size-Konstante enthält die Größe der gerade
analysierten Disc in Bytes in hexadezimaler Schreibweise.
Beschreibung:
In der
Name-Konstante steht der Name der gerade gescannten Disc.
Beschreibung:
Gibt den Typ des Datenträgers an. Sowohl CDs als auch DVDs gehören zum Typ
CDRom.