home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / unp411 / unp.doc < prev    next >
Text File  |  1995-05-30  |  31KB  |  686 lines

  1.                                    │
  2.  
  3.                                    │
  4.                                 ─ ─┼─ ─
  5.         ░░▌ ░░▌ ░░░░░░▌ ░░░░░░▌   ░░▌ ░░▌        ░░▌     ░░▌│
  6.         ░░▌ ░░▌ ░░▌ ░░▌ ░░▌ ░░▌   ░░▌ ░░▌       ░░░▌    ░░░▌
  7.         ░░▌ ░░▌ ░░▌ ░░▌ ░░░░░░▌   ░░░░░░▌        ░░▌     ░░▌│
  8.         ░░▌ ░░▌ ░░▌ ░░▌ ░░▌       ░░▌        ░░▌     ░░▌
  9.         ░░░░░░▌ ░░▌ ░░▌ ░░▌       ░░▌ ░▌  ░░░░░░▌ ░░░░░░▌
  10.  
  11.           ───────────────────────────────────────────────┐
  12.  
  13.  
  14.               Written by Ben Castricum
  15.  
  16.                     May 30, 1995
  17.  
  18.  
  19.  
  20.        This is the documentation belonging to and explaining the use of:
  21.  
  22.  
  23.                     UNP V4.11
  24.  
  25.  
  26.             Executable file restore utility
  27.  
  28.  
  29.  
  30.  
  31. TABLE OF CONTENTS:
  32.  
  33. DISCLAIMER
  34. WHAT IS UNP ?
  35. GENERAL INFO
  36. HOW TO USE UNP
  37. MESSAGES
  38. NOTES ON COMPRESSORS
  39. REGISTERING UNP
  40. HEY! UNP IS COMPRESSED!
  41. WHAT UNP CAN REMOVE
  42. WHAT UNP CANNOT REMOVE
  43. CONTACTING ME
  44.  
  45.  
  46. Disclaimer
  47. ----------
  48. Under NO circumstances I can be held responsible for any damage caused by
  49. files in this or any other package containing programs written by me.
  50. (That should do it :-)
  51.  
  52.  
  53. What is UNP ?
  54. -------------
  55. UNP's main purpose is to restore executable files to their original state.
  56. However it can do more than that.  UNP can optimise EXE-headers, remove
  57. debug information, convert files from one structure to the other, scan
  58. directories for compressed files, reveal hidden viruses and even make files
  59. that didn't run anymore run again.
  60.  
  61.  
  62. General info
  63. ------------
  64. Before you start using UNP, I would like to point out a few things which you
  65. might take into consideration.
  66.  
  67. Compressed EXE files containing an overlay may not work correctly after they
  68. have been decompressed.  Decompression expands the code size of the EXE file
  69. which also means that the overlay moves up.  Some programs do not check where
  70. the overlay currently is but just use a constant to get the overlay.  If this
  71. is the case, most anything can happen.
  72.  
  73. When you use UNP to convert a file to another structure, please take into
  74. consideration that the converted program never runs under the exact same
  75. conditions as it did before.  Though these differences are likely not to
  76. cause any problems with most programs, there are always programs which expect
  77. just that what is changed by conversion.
  78.  
  79. UNP can do just about anything with files.  This definately includes messing
  80. up your files.    For that reason it is always a good idea to have a backup of
  81. the files your are going to process.  Someone suggested to let the -b
  82. (create backup) option turned on by default.  Although this is a good idea,
  83. it's still not 100% reliable.
  84.  
  85. UNP is not case sensitive in anyway, nor does it care about extensions.  This
  86. however does not mean that it is possible to convert files which are reported
  87. by UNP to be "binary (.COM)" can all be converted to .EXE files.  Files which
  88. are not really .COM files (e.g. .BAT or .GIF) will not run or view the
  89. picture when converted and executed.
  90.  
  91.  
  92. How to use UNP
  93. --------------
  94. If you type UNP without any parameters then you will get the built-in help
  95. screen of UNP which is explained below.
  96.  
  97.  - Commands - These are 1 character long and only one can be specified on the
  98. command line.  It does not really matter where you put it.  If no command is
  99. specified, the E command is used.
  100.  
  101. c = convert to COM file
  102.    Some .EXE files can be converted to .COM files.  You can do this by using
  103.    this command.  Please note that the resulting file will not automaticly
  104.    have a .COM extention.  You should only convert a file when you know
  105.    exactly what you are doing (see general info section).
  106.  
  107. d = make current options default
  108.    Using this command enables you to specify the default options yourself.
  109.    Simply type the options on the commandline you would like to have as
  110.    default and use this command.  UNP will modify itself to the settings
  111.    as default. For example to let UNP always create a backup use
  112.      UNP d -b+
  113.    UNP stores the new settings in itself, which means that UNP is self-
  114.    modifying.  With most anti-virus programs, this causes some alarm to go
  115.    off. Check your anti-virus program documentation on how to solve this
  116.    problem (see also: Hey! UNP is compressed!)
  117.  
  118. e = expand compressed file (default)
  119.    This command expands the compressed file.  If you do not specify a
  120.    command, UNP will use this by default.  Using this command without a
  121.    filename will result in unpacking all files in the current directory
  122.  
  123. i = show info only
  124.    If you just want some information about the file, this is the command to
  125.    use.  UNP will show all information like the E command but will not
  126.    decompress or write the file back.
  127.  
  128. l = load and save
  129.    This command loads a .COM or .EXE file but does not expand it.  It will be
  130.    written back just like a decompressed file would be written back.  This is
  131.    useful in case you want to remove an overlay, irrelevant header data or
  132.    optimize the relocation items.
  133.  
  134. m = MarkEXE, insert a file in header
  135.    MarkEXE is a small utility supplied with PROTECT! EXE/COM V5.0.  This
  136.    program can add a piece of text to an EXE file in such a way that when the
  137.    file is shown on screen the user can see that piece of text.  The 'M'
  138.    command does not exactly do the same as MarkEXE.  First it inserts the
  139.    file before the relocation items, this way any EOF markers in the
  140.    relocation items won't screw it up.  Second, UNP does not place the same
  141.    piece of text at the end of the code, since I see this as more or less
  142.    screwing up the file.
  143.  
  144. o = copy overlay
  145.    A new (and probably rarely used) command is the overlay copy command.
  146.    With this you can get the overlay from some .EXE file and append to some
  147.    other .EXE file.  The idea behind this is that when you use LZEXE as
  148.    compressor, the overlay is removed from the file.  With this command you
  149.    can place the overlay back.
  150.  
  151. s = search for compressed files
  152.    When you use this command, only a small list of compressed files matching
  153.    the Infile wildcard will be generated.  To save some space on the screen,
  154.    the pathname of the file will not  be show.  But since UNP does not work
  155.    recursive, it should not be a problem.
  156.  
  157. t = trace executable
  158.    My first attempt to a general unpacker can be found in this command.
  159.    Actually there are 2 different implemtations.  The implementation used for
  160.    .COM files will single-step through a program and checking every
  161.    instruction if the original program has been restored.  If UNP thinks it
  162.    has, it will stop and write the file back.  Unfortunately this is a very
  163.    slow process.  The .EXE implementation also single-steps through the file
  164.    but it checks every step to see if a known packer has been revealed.  If
  165.    it has found one, it will remove it and write it the resulting file back.
  166.    If the program has not been compressed with a known packer, sooner or
  167.    later some interrupt will be used which UNP will detect and abort the
  168.    tracing.
  169.  
  170. x = convert to EXE file
  171.    Some compressors can only compress .EXE files (like LZEXE).    With this
  172.    command you can convert a .COM file to an .EXE file.  The resulting file
  173.    will not be written back with an .EXE extension by default.    As with the
  174.    .EXE to .COM conversion, be sure you know what you're doing.  Not all
  175.    programs can be converted.
  176.  
  177.  
  178.  - Options - Even more fun can be achieved with specifying options on the
  179. command line. Options can be passed sepparated (like -a -b -c) but can also
  180. be combined (like -abc).  After each option there can be one of the
  181. characters "-", "+" or "?". The first turns switches off, the second turns
  182. them on and the third.. well it turns them on as well.  But the real purpose
  183. of the question mark is to force UNP to ask if it should do something.
  184. Currently only the -K switch supports this.  Options which are not followed
  185. by one of the mentioned characters work as toggles, which means that using an
  186. option twice will undo the previous (eg. -a -a has no result). However once
  187. an option has been turned on with the question mark (like -a?) then you can
  188. only turn it off by appending a - (like -a-). Still got it? :)
  189.  
  190. -? = help (this screen)
  191.    Suprisingly enough, this switch will let UNP show the built-in helpscreen.
  192.    Any other switch or command used on the same line will be ignored.
  193.  
  194. -a = automatic retry
  195.    It is possible that some files have been processed with some program more
  196.    than once.  This switch will make UNP to process the file again when it
  197.    was changed.  Useful when you want to uncompress a file which also has
  198.    been Immunized by CPAV.
  199.  
  200. -b = make backup .BAK file of original
  201.    If you want to keep a backup of your original file (very wise) use this
  202.    switch.  The original file will be renamed to a file with a .BAK
  203.    extension.
  204.  
  205. -c = ask for confirmation before action
  206.    This will force UNP to ask you if you want to remove the routine UNP found
  207.    on the file each time it has recognized some program's work.
  208.  
  209. -f = optimise fixups (like HDROPT.EXE)
  210.    Relocation items, also known as fixups, are stored in the .EXE header in
  211.    two parts; 16 bits for the segment value and another 16 bits for offset.
  212.    Since DOS only uses 20 bits for addressing, the fixups may contain some
  213.    redundant data.  Optimising the fixups does some arithmetic stuff which
  214.    will move as much as possible of the address into the offset and fills the
  215.    segment value with zeros.  This is the same as the program HDROPT.EXE
  216.    supplied with PKLITE does.
  217.  
  218. -g = merge overlay into image
  219.    This dirty switch allows you to merge an overlay into the image of an .EXE
  220.    file.  I can't think of any reason why someone should use it but it's
  221.    here.
  222.  
  223. -h = remove irrelevant header data
  224.    Most linkers add useless data to the .EXE header.  This switch removes all
  225.    such useless information, thus shrinking the header size.  This switch
  226.    also skips the header rebuilding code with files like PKLITE.
  227.  
  228. -i = interception of I/O interrupts
  229.    By default UNP watches several DOS interrupt to check if the program is
  230.    running as expected.  Any unexpected call to such an interrupt will make
  231.    UNP abort the process.  If you have any weird TSRs resident you might have
  232.    to use this switch.
  233.  
  234. -k = pklite signature handling; - = don't add, + = add always, ? = ask
  235.    With this switch you can handle the pklite signature.  There are 3
  236.    possibilities :
  237.    -k- = don't add
  238.       The pklite signature will not be added, this will also be the case if
  239.       you only use -k (to stay dislite compatible).
  240.    -k+ = add always
  241.       Always add the pklite signature, this is the default of UNP so you can
  242.       just as well leave the -k switch away if you want this.
  243.    -k? = ask
  244.       When you use this, UNP will ask you each time it has found a signature
  245.       (like UNP V3.01 or earlier did).
  246.  
  247. -l = use large memoryblock
  248.    When UNP loads a program it allocates a block with a size of the
  249.    required memory with about 32k extra for safety.  Some programs require
  250.    even much more memory than they tell DOS they need.    If such a file is
  251.    decompressed by UNP it definately will go wrong.  Two things can happen
  252.    in such a case.  The program detects the absence of enough memory and
  253.    will attempt to notify the user by writing a message on screen.  This
  254.    will probably result in a  "(INT 21) Unexepected call to DOS" error
  255.    (see messages) and UNP will abort gracefully.  Or worse, the program
  256.    does not check at all and will try to decompress anyway.  This will
  257.    probably result in a system crash or a memory allocation error.  If you
  258.    have got a file which requires more memory than it tells DOS, use this
  259.    switch.  After identifying the compressed program, UNP will increase
  260.    the allocated memory block to 15/16 of the maximum size of that block.
  261.  
  262. -m = MORE alike output
  263.    On request this switch has been added.  It should pause about every screen
  264.    full of information similar like DOS's MORE.EXE.
  265.  
  266. -n = numbered Outfiles
  267.    Also on request is the possibility the have UNP remove several routines
  268.    in one run but keeping a copy of every version.  This switch will assign a
  269.    number to the files it writes the new file to.  If the file already is
  270.    numbered, it will increment that number.  If not, the number 1, possibly
  271.    with leading underscores,will be assigned to it.
  272.  
  273. -o = overwrite output file if it exists
  274.    If you want to have the destination file overwritten, you can avoid the
  275.    question for permission by specifying this switch on the command line.
  276.  
  277. -p = align header data on a page
  278.    It is said that .EXE files with a header size that is a multiple of 512
  279.    bytes load faster (this could make sense since a sector is also 512
  280.    bytes).  This switch will expand the header to the nearest multiple of 512
  281.    bytes, filling it with zeros.
  282.  
  283. -r = remove overlay data
  284.    If something is appended to an .EXE it is called an overlay.  This switch
  285.    will let the file size of the outfile be the same as the load image.  So
  286.    anything that was appended to the file will be thrown away.    An overlay
  287.    can be used for all kinds of data, so removing this can result in
  288.    throwing away something useful.
  289.  
  290. -u = update file time/date
  291.    By default UNP sets the time/date of the destination file to the same
  292.    time/date as the original source file.  If you want to have it updated to
  293.    the current time/date use this switch.
  294.  
  295. -v = verbose
  296.    When you use this switch UNP will give you some additional information.  I
  297.    added this switch for debugging purposes.
  298.  
  299. -- = program's commandline
  300.    Anything after this switch will be passed to the program to be
  301.    decompressed.  This way you can pass along any required parameters (like
  302.    passwords) for the Tracing command.
  303.  
  304.  
  305. Messages
  306. --------
  307. UNP has 6 kinds of messages other than the usual information it can display:
  308.  
  309.  - Questions -   Even with new smart routines programmed into UNP4 it still
  310. needs to ask a few things now and then.  Who said that computers are smarter
  311. than you?  Anyway, you can expect the following questions:
  312.  
  313. Add code to fake PKLITE decompression (y/n)?
  314.    This question arises when UNP detects that a signature has been placed
  315.    into the program's PSP and the -K switch has the '?' value. (for more
  316.    info, read the "notes on compressors" part)
  317.  
  318. Continue (y/n)?
  319.    When UNP considers a program abnormal it wil display a warning with the
  320.    reason why it thinks so and will ask you if you want to continue anyway.
  321.  
  322. Remove this routine from file (y/n)?
  323.    You have requested confirmation for each action UNP takes (see -C option)
  324.    and this is the result.
  325.  
  326. Program is protected, please enter password:
  327.    Some programs have the ability to scramble executable files with a
  328.    password.  Unfortunately I have not succeeded in breaking all protection
  329.    schemes using this. So for certain programs you might be prompted for
  330.    the password
  331.  
  332. File FILENAME.EXT already exists.  Overwrite (y/n)?
  333.    When UNP wants to write to the destination file and discovers the file
  334.    already exists, it will ask if you want to overwrite the file. You can
  335.    avoid this question by using the overwrite option (see -O option).
  336.  
  337. - Informal messages - By placing UNP in verbose mode (see -V option) UNP will
  338. display additional information about anything that might be interesting. Note
  339. that informal messages allways start with "INFO -".
  340.  
  341. DOS Version X.XX[, running under Windows.]
  342.    Some system information, this has no effect on UNP.
  343.  
  344. Commandline = ...
  345.    This indicates what options are passed for the Init procudere the the main
  346.    module. This is influenced by UNP's commandline.
  347.  
  348. Program's commandline = "...".
  349.    If you have specified anything for the program's commandline
  350.    (see -- option), it will be echoed here.
  351.  
  352. Using FILENAME.EXT as temp file.
  353.    The name of the temporary file UNP will use. This is composed of the TEMP
  354.    environment variable and some constant defined in UNP.
  355.  
  356. Anti-virus program TbScanX detected.
  357.    UNP has detected the resident anti-virus program TbScanX and will use it
  358.    to scan the files before it loads them (also see -s switch).
  359.  
  360. Wildcard matches X filename(s), stored at XXXXh.
  361.    The wildcard specified on the commandline is resolved to a number of files
  362.    and these names has been stored at the specified segment.
  363.  
  364. Program loaded at XXXXh, largest free memory block: X bytes.
  365.    Indicates at which segment UNP is loaded and how large the largest
  366.    available memoryblock is.
  367.  
  368. Adding 'PK' signature to fake PKLITE decompression.
  369.    When UNP automaticly adds the code to fake PKLITE decompression
  370.    (see -K option), it will display this message.
  371.  
  372. Increasing program''s blocksize to X bytes.
  373.    In certain cases UNP will increase the memory given to the program which
  374.    UNP wants to decompress.  This can solve problems with programs which
  375.    do not check if they have enough memory. This can be forced with the -L
  376.    option (see -L option).
  377.  
  378. - Warnings - These messages indicate something is wrong but UNP can live with
  379. it. Warnings will always start with "WARNING -".
  380.  
  381. Infile and Outfile are same, Outfile ignored.
  382.    After UNP has resolved the wildcard it has found out the the file to be
  383.    processed is the same as the destionation file. Since this is the default
  384.    operation of UNP it will ignore the destination file.
  385.  
  386. Outfile specified, -B option ignored.'
  387.    When you have specified a destination file you can't create a backup. This
  388.    is because the backup is created by renaming the original file. When the
  389.    destination file is also specified there would be no original program
  390.    left.
  391.  
  392. -N option overrules -B option, -B option ignored
  393.    You can't number your files and have a backup created as well. It's about
  394.    the same reason as mentioned above.
  395.  
  396. Invalid or missing stored header information.
  397.    Some files store the original header somewhere inside the compressed file.
  398.    When UNP has detected this and the info does not seem to be correct it
  399.    will display this warning.
  400.  
  401. - Errors - UNP has discovered something wrong and cannot continue with the
  402. current action. It will continue with the next file (when available).
  403.  
  404. (INT 10h) Unexpected use of video interrupt, action failed.
  405. (INT 20h) Unexpected program termination, action failed.
  406. (INT 21h) Unexpected call to DOS, action failed.
  407.    UNP watches several interrupts to ensure things are going as expected.
  408.    When UNP loses control it will sooner or later detect one of the
  409.    interrupts it watches and abort the current action.  If you think nothing
  410.    went wrong and you got this message anyway, you can disable the interrupt
  411.    watching (see -i switch).
  412.  
  413. Cannot convert, file already is a COM file.
  414. Cannot convert, file has relocation items.
  415. Cannot convert, initial CS:IP not FFF0:0100.
  416. Cannot convert, file is too large for COM.
  417. Cannot convert, file contains internal overlay.
  418.    Convertion of a .EXE file to .COM file has to meet several conditions.
  419.    When one of these is not met the program will show which one and abort the
  420.    action.
  421.  
  422. - Dos error - Your operating system does not allow something UNP would like
  423. to do. Simple things like a read-only file or disk full will cause such a
  424. error. UNP will quit if such an error is encountered.  These messages start
  425. with "DOS ERROR - " and end with the DOS error code.
  426.  
  427. unable to open file ... (error x)
  428. unable to create file ... (error x)
  429. unable to read from file ... (error x)
  430. unable to write to file ... (error x)
  431.  
  432. - Fatal errors - Something seriously wrong has happened. The program will
  433. abort. These messages will start with "FATAL ERROR - ".
  434.  
  435. No files found matching
  436.    UNP could not resolve the wildcard you specified on the commandline to any
  437.    file. You might want to check the filenames.
  438.  
  439. Decompressing many files into one.
  440.    The Infile wildcard matches more than one file and you have also given a
  441.    destination filename on the commandline.
  442.  
  443. Output path/file must not contain '*' or '?'.
  444.    You can't use wildcards in the destination filename.
  445.  
  446. Outfile required for specified command.
  447.    The command you specified requires 2 filenames and you only gave one.
  448.  
  449. Specified command does not require filenames.
  450.    The command you specified does not allow any filenames at all!
  451.  
  452. (INT 00h) Divide overflow generated by CPU.
  453. (INT 23h) Ctrl-C or Ctrl-Break pressed by user.
  454.    These interrupts are considered very important and UNP will quit as fast
  455.    as possible when one of these occur.
  456.  
  457. Not enough memory to ...
  458.    UNP could not allocate enough memory for something.
  459.  
  460. Memory Control Blocks destroyed.
  461.    UNP now checks for this special memory error since this error is probably
  462.    caused by a progam that has been giving too few memory. UNP will abort but
  463.    the system will most likely halt immediately after that.  You might want
  464.    to try giving the program more memory (see -l switch).
  465.  
  466.  
  467. Notes on compressors
  468. --------------------
  469. There are a few things about compressors that might usefull to know:
  470.  
  471. AVPACK V1.20
  472.    This Russion compressor has many similaritys with PKLITE.  The PKLITE
  473.    routines are used to unpack this compressor.  However, it is not as good
  474.    as PKLITE. It reports that files with a size which is a multiple of 512
  475.    bytes contains an overlay and also it only stores the first 20h bytes of
  476.    an exeheader making it impossible to do a complete restore. It does have
  477.    some extra option like encryption.  UNP can uncompress encrypted files
  478.    like these although it does not recognize them as such.  If you know
  479.    you got an encrypted AVPACKed file you can use "UNP T" to unpack.
  480.  
  481. COMPACK V4.4
  482.    This program does not really contain a bug but more an incompatibility
  483.    error.  On 486s, programs compressed with this version of COMPACK will
  484.    crash.  This is a result of the self-modifying code COMPACK uses.
  485.    Somewhere at the end of the decompression routine of COMPACKed programs
  486.    there is a far jump to the decompressed program.  Initially this jump
  487.    points to 0:0 but is adjusted not much earlier before the execution of
  488.    this instruction.  On 386s or lower the prefetch queue is small enough
  489.    to allow this self-modifying code.  On 486s however, the read-ahead buffer
  490.    is much larger so the jmp has already been read when the adjustment takes
  491.    place. The result on 486s is that the jmp 0:0 is actually executed, most
  492.    likely causing a system crash.  UNP places a breakpoint before the
  493.    execution of this instruction which flushes the read-ahead buffer and the
  494.    program can be saved with the correct entrypoint.
  495.  
  496. EXEPACK
  497.    Ever got the message "Packed file is corrupt"?  Then you are probably
  498.    using a memory manager and have lots of conventional memory free.  Old
  499.    versions of Microsoft's EXEPACK require atleast one segment (64k) below it
  500.    to be able to unpack the program into memory.  If you have a lot of free
  501.    memory, let's say above 600k, then programs can be partially loaded in the
  502.    first segment.  This causes EXEPACK to generate this error.  UNP loads an
  503.    EXEPACKed file high enough to unpack it and can decompress it without any
  504.    trouble.
  505.  
  506. MEGALITE V1.5
  507.    Like AVPACK, this compression looks very much like PKLITE.  This version
  508.    however contains an instruction which changes 1 byte in the decompression
  509.    routine.  I have not been able to find out what the use of this
  510.    instruction is.  All it seems to do is screw up the code.  The instruction
  511.    which causes this is: DEC BYTE PTR DS:[SI+012Ch].
  512.  
  513. MR-LITE
  514.    This utility seems to be floating around in certain circuits.  It is
  515.    written to reduce the size of PKLITE size even more.  All it does is
  516.    simply rewrite the header and leave all useless information away.  In
  517.    fact, it does the same as "UNP l -h".  Unfortunately it does not do this
  518.    very well.  One of the fields in the .EXE header reports the amount of
  519.    memory required by the application.  This value is kindly set to 0 by
  520.    MR-LITE.  Because DOS by default allocates all memory available, you will
  521.    not immediately detect this bug.  But when unpacking it with UNP you
  522.    will very likely get the message "Memory Control Blocks destroyed.".  It
  523.    is adviced to unpack such a file with "UNP E -l" and if you want
  524.    recompress it, optionally you can optimize the header with a "UNP L -h".
  525.    (for more info, see -l switch)
  526.  
  527. PKLITE V1.00ß
  528.    Although this program is probably rarely used, I implemented some code
  529.    that fixes a bug that appears in this version of PKLITE only.  When
  530.    certain programs are compressed, PKLITE moves the last 512 bytes of the
  531.    image into an overlay.  Compressed programs will be decompressed by UNP
  532.    and checked for an overlay of 512 bytes.  If such an overlay has been
  533.    found, UNP includes the overlay into the newly created image.  This has
  534.    the same result of what would have happened when "PKLITE -x" would have
  535.    been used to restore to program.
  536.  
  537. PKLITE V1.14+ Professional
  538.    These versions of PKLITE have some small piece of code in the
  539.    decompression routine that adds a so called signature into the PSP.  This
  540.    allows programs to check if they are still compressed with PKLITE.  When
  541.    such a program is unpacked UNP by default adds a small piece of code into
  542.    the PSP to fake the decompression. One of the programs that check for such
  543.    a signature is the PKZIP V2.04g program. (see also -k switch)
  544.  
  545. PKLITE V1.15
  546.    This version does not seem to detect OS2 or Windows files anymore and will
  547.    compress them like normal EXE files.  Files will however not run
  548.    correctly, even when UNP has uncompressed them again.
  549.  
  550. PKTINY
  551.    A small utility has been written to prevent recognition (and unpacking)
  552.    of TINYPROGed files.  The trick this program uses is very simple.
  553.    TINYPROG has the ability to leave some space in the beginning of an .EXE
  554.    file.  By filling this space with a PKLITE header and modifing some code
  555.    to let the program still run correctly, it tries to fool unpackers.  If
  556.    UNP detects the modified code it tries to get around it and continue with
  557.    the TINYPROG check.
  558.  
  559. SHRINK V1.00
  560.    This compressor uses the basic RLE (Run Lenghth Encoding) compression
  561.    algorithm to decrease the size of a program.  Unfortunately the program
  562.    contains (at least) 2 bugs.  One of the bugs is when the RLE byte is found
  563.    followed by a 00 while decompressing, a 00 is placed in the program which
  564.    should be the RLE byte.  The second bug is that the last byte of the
  565.    compressed file is not written to disk.  Both of these bugs are triggered
  566.    when all 256 bytes appear at least one time in the file.  UNP is able to
  567.    correct the first bug, causing most program to work again.  However the
  568.    second bug is unrecoverable and UNP give a warning if it detects this bug.
  569.    It is always better to decompress it, even if the last byte is missing.
  570.  
  571.  
  572. Registering UNP
  573. ---------------
  574. Having tried several forms of registration for UNP, I have decided to use the
  575. following registration method.    First, since a lot of support has come from
  576. the low end user I decided to release UNP as cardware to the public domain.
  577. It's always nice to know your program is appreciated, and what's the price of
  578. a simple card compared to the registration fees asked by several others?  So
  579. if you're a happy user of UNP fill in your registration postcard of
  580. something in your neighbourhood today.    However, I have spend a lot of hours
  581. on this program and since it can be useful for commercial purposes I decided
  582. that for commercial use a registration of $1 per copy is required.  Why so
  583. cheap you might wonder.  Well, I don't want the price to prevent you from
  584. registering.  I do not have to make profit out of it, I am just a student who
  585. has written a program to teach myself more about DOS.  I just as well could
  586. have been writing viruses but instead I have chosen this.  Please note that
  587. non-commercial users are allowed to send me money anyway!  If it is enough to
  588. buy and mail a disk, you can expect a free special registered version!
  589.  
  590.  
  591. Hey! Unp is compressed!
  592. -----------------------
  593. Yes, starting with V4.11 of UNP I will use a compressor to make sure lamers
  594. won't just change the version number and upload it to some BBS just to get
  595. their ratio higher.  UNP is compressed with DIET V1.45f and processed with a
  596. program I call DSHIELD to prevent decompressing.  The traps used are not too
  597. difficult to figure out, but the idea behind it was just the prevent the
  598. lamers from hacking.  If you succeed in unpacking it, then you are probably
  599. an experienced programmer.  I am sorry but the protection seems to be
  600. neccesary.
  601. Due to this protection it might be possible that some anti-virus programs
  602. which use heuristic scanning consider UNP infected by a new or unknown virus.
  603. If you also use the D command to alter (some of) UNP's default settings,
  604. you might get a warning as well.  The D command causes UNP to alter it's
  605. own .EXE file.  Check your documention that came along with your anti-virus
  606. software on how to solve this incompatibility.
  607.  
  608.  
  609. What UNP can remove
  610. -------------------
  611. Quite a lot actually. A list follows:
  612.  
  613. AINEXE V2.1
  614. ANTIBODY
  615. AVPACK V1.20
  616. AXE V2.2
  617. CENTRAL POINT ANTI-VIRUS V1, V1.1
  618. COM2CRP V1.0
  619. COMLOCK V0.10
  620. COMPACK V4.4, V4.5
  621. CRYPTA V1.00
  622. CRYPTCOM
  623. DELTAPACKER V0.1
  624. DIET V1.00, V1.00d, V1.02b, V1.10a, V1.20, V1.44, V1.45f
  625. ENCRCOM V2.0
  626. EPW V1.2, V1.21, V1.30
  627. EXELITE V1.00aF
  628. EXEPACK V4.00, V4.03, V4.05, V4.06
  629. F-XLOCK V1.16
  630. ICE V1.00
  631. IMPLODE V1.0 Alpha
  632. KVETCH V1.02ß
  633. LINK /EXEPACK V3.60, V3.64, V3.65, V3.69, V5.01.21
  634. LZEXE V0.90, V0.91, V1.00a
  635. MCLOCK V1.2, V1.3
  636. MEGALITE V1.18a, V1.20a
  637. OPTLINK
  638. PACKEXE V1.0
  639. PACKWIN V1.0α
  640. PASSCOM V2.0
  641. PGMPAK V0.13, V0.14, V0.15
  642. PKLITE V1.00ß, V1.00, V1.03, V1.05, V1.12, V1.13, V1.14, V1.15, V1.20, V1.50
  643. POJCOM V1.0
  644. PRO-PACK V2.08, V2.14
  645. PROCOMP V0.82
  646. PROTECT! EXE/COM V1.0, V1.1, V2.0, V3.0, V3.1, V4.0, V5.0
  647. SELF-DISINFECT V0.90ß
  648. SHRINK V1.0
  649. SCRNCH V1.00, V1.02
  650. SYRINGE
  651. TINYPROG V1.0, V3.0, V3.3, V3.6, V3.8, V3.9
  652. TURBO ANTI-VIRUS V7.02A, V9.40
  653. UCEXE V2.3
  654. USERNAME V2.00, V2.10, V3.00
  655. WWPACK V3.00, V3.01, V3.02
  656.  
  657. I have left out a couple of names not really worth mentioning.
  658.  
  659.  
  660. What UNP cannot remove
  661. ----------------------
  662. SPACEMAKER V1.03
  663. EPW V1.2, V1.21, V1.30 - EXE only
  664. USERNAME V2.00, V2.10, V3.00 - EXE only
  665.  
  666.  
  667. CONTACTING ME
  668. -------------
  669. Please note that registrations must be send to my home adress, not to my
  670. E-mail adress.    A card really is a card, not a scanned picture or some
  671. piece of text.
  672.  
  673. My address:
  674.     Ben Castricum
  675.     Van Loenenlaan 10
  676.     1945 TX  Beverwijk
  677.     The Netherlands
  678.  
  679. E-Mail: valid until june '95
  680.     benc@htsa.hva.nl
  681.  
  682. I am not sure when exactly my account will be disabled, but I'll try to
  683. get a new account somewhere as soon as possible.
  684.  
  685. -- End of UNP V4.11 documentation --
  686.