home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.wwiv.com
/
ftp.wwiv.com.zip
/
ftp.wwiv.com
/
pub
/
MISC
/
ARTFIX09.ZIP
/
PATCH
/
PATCH.DOK
< prev
next >
Wrap
Text File
|
1998-05-03
|
6KB
|
137 lines
PATCH v0.11 für OS/2 und DOS
(c) 1998 by Wilfried Brinkmann, Fido 2:2448/6001
──────────────────────────────────────────────────
Kurzanleitung
Vorwort
───────
Patch(p).exe dient zum komfortablen Ändern von Binärdateien (EXEcutables).
Die zu ändernden Daten sind in einer ASCII-Datei abgelegt und haben ein
fest vorgegebenes Format. Der Name dieser Datei MUSS immer identisch mit
dem Dateinamen der EXE-Datei sein und das Extension '.PSC' aufweisen.
Um z.B. die Datei ABC.EXE zu patchen muss im Verzeichnis von Patch(p).exe
(oder im Startverzeichnis) die Datei ABC.PSC vorhanden sein.
Beim Start von Patch(p).exe kann der Dateiname der zu ändernden Datei in
der Kommandozeile angegeben werden. Wird Patch(p) ohne Parameter gestartet,
kann der Dateiname in einer Maske eingeben werden. Es ist jeweils der voll-
ständige Pfad und Dateiname anzugeben.
Fehler die beim Programmlauf auftreten, werden in einem Nachrichtenfenster
angezeigt und müssen durch Betätigen einer Taste bestätigt werden.
Befehle in der Patch-Scriptdatei (.PSC)
───────────────────────────────────────
Diese ASCII-Datei enthält alle Befehle und Parameter um die Ändrungen
durchführen zu können. Es könne Leerzeilen und Kommentare verwendet werden.
Kommentare beginnen mit einem Semikolon (;). Alles was nach einem Semikolon
steht, wird von Patch(p) ignoriert.
Für die folgende Beschreibung gilt folgende Syntax:
<Parameter> - Notwendiger Parameter
[Optional] - Optionaler Parameter
Folgende Befehle sind möglich:
──────────────────────────────
SIZE <Bytes>
─────────────
<Bytes> ist die Grösse der zu patchenden Datei in dezimaler schreibweise.
Patch(p) vergleicht diesen Wert mit der Grösse der EXE-Datei.
Die Bearbeitung wird nur fortgesetzt, wenn die Werte übereinstimmen.
COPY <[[Laufwerk:][\]Pfad]Dateiname.Ext
────────────────────────────────────────
Nach der Überprüfung der zu ändernden Datei kopiert Patch(p) die Original-
datei. Du kannst entweder eine vollständigen Pfad (mit Laufwerk) angeben,
oder einen relativen Pfad (ohne Laufwerk). Ein Dateiname muss immer an-
gegeben werden.
Ist ein relativer Pfad angegeben, wird Patch(p) das Verzeichnis, in dem
die Originaldatei vorhanden ist erweitern. Der Pfad wird automatisch
angelegt, wenn er noch nicht vorhanden ist.
REN <Dateiname.Ext>
────────────────────
Die Originaldatei wird -nachdem alle Modifikationen durchgeführt wurden-
in den angegebenen Namen geändert.
VER <Dateioffset> <Daten[+]>
──────────────────────────────
Die Daten der Orinaldatei an <Dateioffset> werden mit den angegebenen
<Daten> verglichen. Sowohl <Dateioffset> als auch <Daten> MÜSSEN in
hexadezimaler Schreibweise angegeben werden (0 .. 9, A .. F).
Bei <Daten> müssen für jedes Byte zwei Ziffern angegeben werden. Zwischen
den Zeichen dürfen KEINE Leerzeichen stehen.
Beispiel:
VER 48B8B 83E85030E4 - Überprüft 5 Bytes ab Offset 48B8B
Optional kannst Du ein '+' (Pluszeichen) bei <Daten> anhängen. Damit werden
mehrerer <Daten> Zeilen zusammengezogen. Die nachfolgende Zeilen dürfen
dann kein VER <Dateioffset> enthalten, sondern NUR die <Daten>.
In der letzten Zeile darf KEIN Pluszeichen angehängt werden!
Beispiel:
VER 48B8B 83E850+
30E4 - Überprüft 5 Bytes ab Offset 48B8B
Mit dieser Zeilenteilung erreichst Du grössere Übersichtlichkeit und eine
bessere Lesbarkeit der Scriptdateien wie das folgende Beispiel zeigt:
VER 38D61 53+ ; push ebx
51+ ; push ecx
52+ ; push edx
8B18+ ; mov ebx,[eax]
89D8 ; mov eax,ebx
CHA <[$][Dateioffset]> <Daten[+]>
───────────────────────────────────
Die angebenen <Daten> werden an <Dateioffset> in die Datei geschrieben.
Sowohl <Dateioffset> als auch <Daten> MÜSSEN in hexadezimaler Schreibweise
angegeben werden (Siehe auch VER).
Optional kann für den Dateioffsets das Dollarzeichen ($) angegeben werden.
In diesem Fall wird der Dateioffset eines vorherigen VER verwendet.
Gleichzeitig wird in diesem Fall auch die Länge der <Daten> von VER und CHA
verglichen. Stimmt diese nicht überein, wird Patch(p) eine Fehlermeldung
ausgeben. Du solltest -soweit als möglich- DIESE Methode verwenden.
Beispiel:
VER 38D0F 8B4014+ ; mov eax,[eax+14]
83E845 ; sub eax,45
;
CHA $ E85BDAFFFF+ ; call -000025A5
90 ; nop
@Marke <Daten[+]>
──────────────────
Wenn das erste Zeichen der Zeile ein Klammeraffe (At-Sign, @) ist, werden
alle folgenden Zeichen -bis zum nächsten Leerzeichen- ignoriert. Du kannst
das verwenden, um z.B. Sprungmarken (Labels) deutlich zu machen. Eine
Funktion haben diese Marken nicht. Sie dienen nur der besseren Lesbarkeit.
Beispiel:
CHA $ 83E850+ ; sub eax,50
7703+ ; jnbe +03 (@3D3B3)
83C064+ ; add eax,64
@3D3B3: 30E4+ ; xor ah,ah
C3 ; ret
Schlusswort
───────────
Alle Tippfehler sind geistiges Eigentum des Verfassers, unterliegen
dem Urherberrecht und dürfen somit nicht wiederverwand werden ;-))
──────────────────────────────────────────────────────────────────────────────
Wilfried Brinkmann, FidoNet 2:2448/6001 Hattingen, im Mai 1998
──────────────────────────────────────────────────────────────────────────────