Copy-Discovery 2000 Homepage

Anmelden:Zur Registrierung

ProtectionScript Referenz

weiterführende Verweise: Erste Schritte in ProtectionScript, ProtectionScript Syntax, Schleifen in ProtectionScript ProtectionScript Icon

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 JUMPTRUE RETURNNOTHING PUSH Video-DVD PUSH2 [Nothing] RETURN

Inhaltsverzeichnis

Außerordentliche Methoden Allgemeine Methoden Allgemeine Funktionen File-spezifische Funktionen Drive-spezifische Funktionen
Allgemeine Konstanten File-spezifische Konstanten Drive-spezifische Konstanten

Außerordentliche Methoden:

Außerordentliche Methoden schreiben im Gegensatz zu allgemeinen Methoden und Funktionen weder Werte in die Register, noch geben sie Werte zurück.

RETURN

Erforderliche Parameter:

  • 1. String-Register: Kopierschutzname (PUSH)
  • 2. String-Register: Kopierschutzversion (PUSH2)

Beschreibung:

Mit RETURN 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
RETURN

Verweise:

RETURNNOTHING

Erforderliche Parameter:

  • Keine

Beschreibung:

Mit RETURNNOTHING wird der Script beendet, wenn kein Kopierschutz gefunden wurde. Im Gegensatz zum RETURN-Befehl wird der Inhalt der ersten beiden String Register nicht beachtet.

Verweise:

JUMP

Erforderliche Parameter:

  • 1. Number-Register: Zeilennummer (PUSHNUMBER)

Beschreibung:

JUMP veranlasst den ProtectionScript Interpreter in eine beliebige Zeile zu springen. Die Zeilennummer, in die gesprungen werden soll, steht im ersten Number Register.

Verweise:

JUMPTRUE

Erforderliche Parameter:

  • 1. Number-Register: Zeilennummer (PUSHNUMBER)
  • 1. Bool-Register: Bedingung, wenn dieser Wert True ergibt, wird gesprungen (PUSHBOOL)

Beschreibung:

JUMPTRUE 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:

JUMPFALSE

Erforderliche Parameter:

  • 1. Number-Register: Zeilennummer (PUSHNUMBER)
  • 1. Bool-Register: Bedingung, wenn dieser Wert False ergibt, wird gesprungen (PUSHBOOL)

Beschreibung:

JUMPFALSE 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:

CLEARALL

Erforderliche Parameter:

  • Keine

Beschreibung:

CLEARALL löscht die Werte aller Register. (String-Register, Number-Register, Byte-Register, Bool-Register und Benutzerregister #R1-#R5)

Verweise:

  • CLEAR (verwandter Befehl)

Allgemeine Methoden:

Allgemeine Methoden schreiben Werte in die 5 Ausführungen der String-, Number-, Byte- und Bool-Register, die als Parameter für Funktionen dienen.

PUSH, PUSH2, PUSH3, PUSH4, PUSH5

Erforderliche Parameter:

  • Keine

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

PUSHBYTE, PUSHBYTE2, PUSHBYTE3, PUSHBYTE4, PUSHBYTE5

Erforderliche Parameter:

  • Keine

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

PUSHNUMBER, PUSHNUMBER2, PUSHNUMBER3, PUSHNUMBER4, PUSHNUMBER5

Erforderliche Parameter:

  • Keine

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

PUSHBOOL, PUSHBOOL2, PUSHBOOL3, PUSHBOOL4, PUSHBOOL5

Erforderliche Parameter:

  • Keine

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:

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.

CMP

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:

CMPNUMBER

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:

CMPBYTE

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:

CMPBOOL

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:

ADD

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:

ADDBYTE

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:

  • ADD (verwandter Befehl)

SUB

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:

SUBBYTE

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:

  • SUB (verwandter Befehl)

MUL

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:

MULBYTE

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:

  • MUL (verwandter Befehl)

DIV

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:

DIVBYTE

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:

  • DIV (verwandter Befehl)

MOD

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:

MODBYTE

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:

  • MOD (verwandter Befehl)

AND

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)

OR

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)

XOR

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)

SHL

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:

  • SHR (verwandter Befehl)

SHR

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:

  • SHL (verwandter Befehl)

NOT

Erforderliche Parameter:

  • 1. Byte-Register: Byte-Wert (PUSHBYTE)

Beschreibung:

Keine Beschreibung vorhanden

Beispiel:

ProtectionScript Code

000
001
PUSHBYTE 3F NOT #R2

Verweise:

NOTBOOL

Erforderliche Parameter:

  • 1. Bool-Register: Boolescher Wert (PUSHBOOL)

Beschreibung:

Keine Beschreibung vorhanden

Beispiel:

ProtectionScript Code

000
001
PUSHBOOL True NOTBOOL #R2

Verweise:

NOTNUMBER

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)

SAVE

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:

SAVEBYTE

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:

SAVENUMBER

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:

SAVEBOOL

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:

JOINSTR

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

CHAR

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)

ASCII

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:

  • CHAR (verwandter Befehl)

HEX

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:

DECIMAL

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:

  • HEX (verwandter Befehl)

SUBSTR

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

LENSTR

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

ISNUMERIC

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

REPLACESTR

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

UPPERSTR

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:

LOWERSTR

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:

TRIMSTR

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

CLEAR

Erforderliche Parameter:

  • Keine

Beschreibung:

Löscht den Wert des angegebenen Benutzerregisters.

Beispiel:

ProtectionScript Code

000
CLEAR #R1

Verweise:

File-spezifische Funktionen:

Von der Funktionsweise unterscheiden sich File-spezifische Funktionen nicht von allgemeinen Funktionen.
File-spezifische Funktionen stehen aber nur File-Scripts zur Verfügung.

BYTESSEARCH

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:

STRINGSEARCH

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:

READBYTE

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:

READBYTES

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:

READSTRING

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:

GETEXTERNALFILEINFO

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:

GETEXTERNALFILEATTRIBUTES

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:

GETEXTERNALFILESIZE

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:

PEIMPORTEXISTS

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:

PEIMPORTTHUNKEXISTS

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:

PEEXPORTEXISTS

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:

PEGETIMPORTNAME

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:

PEGETIMPORTTHUNK

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:

PEGETIMPORTTHUNKCOUNT

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:

PEGETIMPORTTHUNKHINT

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:

PEGETIMPORTADDRESSOFFIRSTMETHODINMEMORY

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:

PEGETIMPORTFORWARDERCHAIN

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:

PEGETIMPORTTIMEDATESTAMP

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:

PEGETEXPORTNAME

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:

PEGETEXPORTORDINAL

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:

PESECTIONEXISTS

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:

PEGETSECTIONNAME

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:

PEGETSECTIONNAMEBYTES

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:

PEGETSECTIONVOFFSET

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:

PEGETSECTIONROFFSET

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:

PEGETSECTIONVSIZE

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:

PEGETSECTIONRSIZE

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:

PEGETSECTIONCHARACTERISTICS

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:

PEGETSECTIONNUMBEROFLINENUMBERS

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:

PEGETSECTIONNUMBEROFRELOCATIONS

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:

PEGETSECTIONPOINTERTOLINENUMBERS

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:

PEGETSECTIONPOINTERTORELOCATIONS

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:

PERVATORAWOFFSET

Erforderliche Parameter:

  • 1. Number-Register: Relative Virtual Address (PUSHNUMBER)

Beschreibung:

Konvertiert RVA in Raw Offset.

Verweise:

Drive-spezifische Funktionen:

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.

FEXISTS

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:

FINFO

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:

FSIZE

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:

FATTRIBUTES

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:

FSEARCH

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:

DEXISTS

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:

DSEARCH

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:

DATTRIBUTES

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

Allgemeine Konstanten:

Die beiden allgemeinen Konstanten sind sowohl in Drive- als auch in File-Scripts verfügbar.

[NewLine]

Beschreibung:

Keine Beschreibung vorhanden

[Nothing]

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:

File-spezifische Konstanten:

Die File-spezifischen Konstanten können nur in File-Scripts verwendet werden.

[Size]

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:

[Name]

Beschreibung:

In der [Name]-Konstante steht der Dateiname (mit Dateiendung, ohne Pfad) der gerade analysierten Datei.

[Attributes]

Beschreibung:

In dieser Konstante stehen die Attribute der gerade analysierten Datei.
Um die Attribute externer Dateien herauszufinden, verwenden Sie die GETEXTERNALFILEATTRIBUTES-Funktion.

Verweise:

[Extension]

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.

[CreationTime]

Beschreibung:

Die [CreationTime]-Konstante gibt den Zeitpunkt an, wann die gerade analysierte Datei erstellt wurde, beispielsweise 07.01.2007 13:26:44.

[Comments]

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:

[CompanyName]

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:

[FileBuildPart]

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:

[FileDescription]

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:

[FileMajorPart]

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:

[FileMinorPart]

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:

[FilePrivatePart]

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:

[FileVersion]

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:

[InternalName]

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:

[IsDebug]

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:

[IsPatched]

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:

[IsPreRelease]

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:

[IsPrivateBuild]

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:

[IsSpecialBuild]

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:

[Language]

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:

[LegalCopyright]

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:

[LegalTrademarks]

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:

[OriginalFilename]

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:

[PrivateBuild]

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:

[ProductBuildPart]

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:

[ProductMajorPart]

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:

[ProductMinorPart]

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:

[ProductName]

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:

[ProductPrivatePart]

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:

[ProductVersion]

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:

[SpecialBuild]

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:

[PE_AddressOfEntryPoint]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1244

Verweise:

[PE_BaseOfCode]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1000

Verweise:

[PE_BaseOfData]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1000

Verweise:

[PE_BuildDate]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: ERROR - EORROR - ERROR - EORROR - ERROR - EORROR - ERROR - EORROR - ERROR - EORROR

Verweise:

[PE_Characteristics]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 10F

Verweise:

[PE_CheckSum]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_DllCharacteristics]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_FileAlignment]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1000

Verweise:

[PE_ImageBase]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 400000

Verweise:

[PE_LoaderFlags]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_Machine]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 14C

Verweise:

[PE_Magic]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 10B

Verweise:

[PE_MajorImageVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_MajorLinkerVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 7

Verweise:

[PE_MajorOperatingSystemVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 4

Verweise:

[PE_MajorSubsystemVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 4

Verweise:

[PE_MinorImageVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_MinorLinkerVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: A

Verweise:

[PE_MinorOperatingSystemVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_MinorSubsystemVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_NumberOfRvaAndSizes]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 10

Verweise:

[PE_NumberOfSections]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 4

Verweise:

[PE_NumberOfSymbols]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_PEPosition]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: F8

Verweise:

[PE_PointerToSymbolTable]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_SectionAlignment]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1000

Verweise:

[PE_SectionStart]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1F0

Verweise:

[PE_SizeOfCode]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: BF000

Verweise:

[PE_SizeOfHeaders]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1000

Verweise:

[PE_SizeOfHeapCommit]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1000

Verweise:

[PE_SizeOfHeapReserve]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 100000

Verweise:

[PE_SizeOfImage]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 3E5000

Verweise:

[PE_SizeOfInitializedData]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1DC000

Verweise:

[PE_SizeOfOptionalHeader]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: E0

Verweise:

[PE_SizeOfStackCommit]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 1000

Verweise:

[PE_SizeOfStackReserve]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 100000

Verweise:

[PE_SizeOfUninitializedData]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_Subsystem]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 2

Verweise:

[PE_Win32VersionValue]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 0

Verweise:

[PE_Exports_Base]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 1

Verweise:

[PE_Exports_Characteristics]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 0

Verweise:

[PE_Exports_ExportTableRawOffset]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 43EC0

Verweise:

[PE_Exports_ExportTableSize]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): D78C

Verweise:

[PE_Exports_ExportTableVirtualAddress]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 43EC0

Verweise:

[PE_Exports_MajorVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 0

Verweise:

[PE_Exports_MinorVersion]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 0

Verweise:

[PE_Exports_Name]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): base.dll

Verweise:

[PE_Exports_NumberOfFunctions]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 3E7

Verweise:

[PE_Exports_NumberOfNames]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 3E7

Verweise:

[PE_Exports_TimeDateStamp]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 46CB787F

Verweise:

[PE_Exports_Count]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert (hauptsächlich bei DLLs): 3E7

Verweise:

[PE_Imports_ImportTableRawOffset]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 2264

Verweise:

[PE_Imports_ImportTableSize]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 50

Verweise:

[PE_Imports_ImportTableVirtualAddress]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 2264

Verweise:

[PE_Imports_Count]

Beschreibung:

Siehe PE Dateiformat Spezifikation
Beispielwert: 3

Verweise:

Drive-spezifische Konstanten:

Die Drive-spezifischen Konstanten können nur in Drive-Scripts verwendet werden.

[SerialNumber]

Beschreibung:

Die SerialNumber-Konstante enthält die Seriennummer der gerade analysierten Disc in hexadezimaler Schreibweise (zum Beispiel AD29BC97).

[FileSystem]

Beschreibung:

FileSystem gibt das Dateisystem der Disc an (CDFS bei CDs, UDF bei DVDs).

[Size]

Beschreibung:

Die Size-Konstante enthält die Größe der gerade analysierten Disc in Bytes in hexadezimaler Schreibweise.

[Name]

Beschreibung:

In der Name-Konstante steht der Name der gerade gescannten Disc.

[Type]

Beschreibung:

Gibt den Typ des Datenträgers an. Sowohl CDs als auch DVDs gehören zum Typ CDRom.

Tutorial bewerten: