home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / MISC / ARTFIX09.ZIP / PATCH / PATCH.DOC next >
Text File  |  1998-05-03  |  5KB  |  137 lines

  1.  
  2.  
  3.                        PATCH v0.11 for OS/2 and DOS
  4.              (c) 1998 by Wilfried Brinkmann, Fido 2:2448/6001
  5.             ──────────────────────────────────────────────────
  6.                           Abbreviated Directions
  7.  
  8.  
  9. Preface
  10. ───────
  11.   Patch(p).exe is used as a comfortable means of altering binary files
  12.   (EXEcutables).
  13.  
  14.   The data to be changed are stored specifically defined format in an
  15.   ASCII file. The name of this file MUST always be identical to that of
  16.   the EXE file, and include the extender '.PSC'. For example, the file
  17.   ABC.PSC must reside in the Patch(p).exe directory (or in the startup-
  18.   directory) in order to patch the file ABC.EXE.
  19.  
  20.   When Patch(p).exe is invoked, the name of the file to be patched can
  21.   be entered on the command line. If Patch(p).exe is invoked without
  22.   parameters, the name of the file to be patched can be entered into a
  23.   mask. In any case, the full file name including the path must be
  24.   specified.
  25.  
  26.   Any errors that occur during operation of the program are displayed in
  27.   an information window, and must be acknowledged by pressing a key.
  28.  
  29.  
  30. Commands in the patch script file (.PSC)
  31. ────────────────────────────────────────
  32.   This ASCII file contains all commands and parameters required to
  33.   perform the necessary changes. Blank lines and comments may be used.
  34.   Commends are prefixed with a semicolon (;). Everything following a
  35.   semicolon is ignored by Patch(p).
  36.  
  37.   The following syntax applies to the description below:
  38.  
  39.      <Parameter>   - Required Parameter
  40.      [Optional]    - Optional Parameter
  41.  
  42. The following commands are possible:
  43. ────────────────────────────────────
  44.  
  45.   SIZE  <Bytes>
  46.   ─────────────
  47.   <Bytes> is the size of the file to be patched, expressed in decimal
  48.   notation. Patch(p) compares this value with the size of the EXE file.
  49.   Processing is only continued if the values agree.
  50.  
  51.  
  52.   COPY  <[[Drive:][\]Path]Filename.Ext
  53.   ────────────────────────────────────
  54.   After Patch(p) verifies the file to be changed, it copies the original
  55.   file. Either a complete path (with drive letter) or a relative path
  56.   (without drive letter) can be specified. A file name must always be
  57.   specified. If a relative path is specified, Patch(p) will create the
  58.   directory in which the original file resides. The path is automatically
  59.   generated if not already present.
  60.  
  61.  
  62.   REN  <Filename.Ext>
  63.   ───────────────────
  64.   After all modifications have been made, the original file is renamed as
  65.   indicated.
  66.  
  67.  
  68.   VER  <Fileoffset>   <Data[+]>
  69.   ─────────────────────────────
  70.   The data of the original file at <Fileoffset> are compared to the
  71.   specified <Data>. Both <Fileoffset> and <Data> MUST be specified in
  72.   hexadecimal notation (0 .. 9, A .. F).
  73.  
  74.   Two characters must be specified for each Byte in <Data>. NO blanks may
  75.   appear between the characters.
  76.   Example:
  77.     VER 48B8B 83E85030E4       - Checks 5 Bytes from offset 48B8B
  78.  
  79.   An optional '+' (plus sign) may be appended to <Data>. This causes
  80.   multiple <Data> lines to be combined. The subsequent lines may not
  81.   include the "VER <Fileoffset>" command in this case, but ONLY the <Data>.
  82.   Do NEVER append a plus sign at the end of the last line!
  83.   Example:
  84.     VER 48B8B 83E850+
  85.               30E4             - Checks 5 Bytes from offset 48B8B
  86.  
  87.   This method of breaking up lines enhances the comprehensibility and
  88.   legibility of the script files, as shown by the following example:
  89.     VER 38D61 53+     ; push     ebx
  90.               51+     ; push     ecx
  91.               52+     ; push     edx
  92.               8B18+   ; mov      ebx,[eax]
  93.               89D8    ; mov      eax,ebx
  94.  
  95.  
  96.   CHA  <[$][Fileoffset]>   <Data[+]>
  97.   ───────────────────────────────────
  98.   The specified <Data> are written to the file at <Fileoffset>. Both
  99.   <Fileoffset> and <Data> MUST be specified in hexadecimal notation
  100.   (also refer to VER).
  101.  
  102.   The dollar sign ($) can optionally be specified for the file offset.
  103.   This causes the file offset of a preceding VER to be used. In this
  104.   case, the length of the data in VER and CHA are compared at the same
  105.   time. If these do not match, Patch(p) outputs an error message. If
  106.   possible, THIS method should be used for patching.
  107.   Example:
  108.      VER 38D0F 8B4014+      ; mov      eax,[eax+14]
  109.                83E845       ; sub      eax,45
  110.                ;
  111.      CHA $     E85BDAFFFF+  ; call     -000025A5
  112.                90           ; nop
  113.  
  114.  
  115.   @Marker <Data[+]>
  116.   ──────────────────
  117.   If the first character in a line is an at-sign (@), all following
  118.   characters up to the next space are ignored. This may be used for
  119.   purposes such as to highlight labels. Such markers have no purpose in
  120.   the program. They only serve to improve legibility.
  121.   Example:
  122.     CHA $     83E850+       ; sub      eax,50
  123.               7703+         ; jnbe     +03 (@3D3B3)
  124.               83C064+       ; add      eax,64
  125.     @3D3B3:   30E4+         ; xor      ah,ah
  126.               C3            ; ret
  127.  
  128.  
  129. Conclusion
  130. ───────────
  131.   All typos are the intellectual property of the author, are copyrighted
  132.   and thus may not be used without permission ;-))
  133.  
  134. ──────────────────────────────────────────────────────────────────────────────
  135. Wilfried Brinkmann, FidoNet 2:2448/6001                 Hattingen, in May 1998
  136. ──────────────────────────────────────────────────────────────────────────────
  137.