home *** CD-ROM | disk | FTP | other *** search
-
-
- 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
- ──────────────────────────────────────────────────────────────────────────────
-