Ŀ
 UX 0.55, Executable File Expander, written by Misha  January 15, 1995 
Ĵ
 PROTECT 4.0/5.0  OPTLINK  PKLITE  LZEXE  TINYPROG  EXEPACK  DIET 


    >>>>>>>>>> E-mail: an182076@anon.penet.fi <<<<<<<<<<<
    >>>>>>> Especially UCF members! need to talk <<<<<<<<
    >>> or call 201/908 boards, INFINITY or ACE sites <<<

        Notes on different compressors:

Protect! 4.0 & 5.0      Not a compressor, but an encrypting program
                        Difficult (impossible?) to unpack without a 386.
                        UX has a built-in support for this.
                        Protect is put on files compressed with
                        PKLITE/DIET/TINYPROG, etc. so UX bypasses Protect
                        and proceeds to extract the file. (unProtected file
                        is never saved).

                NOTE:   UX should work fine with _most_ Protect5 programs,
                        try the -1...-9 and/or -z options, only if UX fails.

                        I see that there's no perfect (real mode) solution for
                        the problem caused by the mutating code (when UX
                        locks up after identifying Protect5), so here are
                        the -1...9 switches!
                        Basically every non-zero # on the command line
                        will inc the pre-set addr UX uses to find the
                        Protect5 code.
                        For example: -123      // 1+2+3=6
                                     -6        // 6=6
                                     -111111   // 1+1+1+1+1+1=6
                                     -321      // 3+2+1=6
                        The above examples are all equivalent (the addr
                        will be inc'd by 6 in every case).

                        So, if your program doesn't unpack (and is identified
                        as having Protect5, start looking for your
                        'lucky' number!

                        Very good 'lucky' numbers to try:

                        UX -1 p5prog.exe
                        UX -88 p5prog.exe
                        UX -7 p5prog.exe
                        UX -12345 p5prog.exe
                        UX -9 p5prog.exe
                        UX -199 p5prog.exe

                        In general only combos from 1 to 999 make any sense,
                        so don't go crazy (3 digits is the max you should try).

                        -f switch. If you think the file is packed with
                        Protect5, but UX says "unknown" use this switch.
                        Always assumes that file is Protected with v5 and
                        tries to decrypt it.

                        -z switch. Simply moves the guessed/optimal address
                        that UX uses to start looking for Protect5 code,
                        back a little bit. Can be used alone or with
                        -1...-9 options above. Only one '-z' should be
                        used on a command line.

                        If CPU is running in v86 you must have VCPI
                        for UX to work.

OPTLINK                 Norton Utilities are packed with this.
                        I don't understand why no one else noticed, but
                        there are actually 2 (two!) levels of compression.
                        Anyway, UX handles both (I call the 2nd one --
                        relocation shrinker) separately.

PKLITE                  versions 1.14/1.15/1.20/1.50 put 'PK' and 'pk' into
                        the PSP. UX fakes this PK/pk extraction by adding a
                        small piece of code to the resulting file.

                        I've added PKLITE 1.50X decompression, PKWARE is
                        getting trickier, but very slowly. :)
                        Anyone else has seen it or has PKLITE.EXE v1.50?
                        E-mail me.

LZEXE                   Nothing special here
TINYPROG                       "
EXEPACK                        "
DIET                           "

        General notes:

o       UX does header optimization (like PKLITE's HDROPT) after extraction
and always uses the smallest possible .EXE header.

o       UX actually _finds_ the memory information (min/max/req mem)
for files compressed with LZEXE, DIET & regular PKLITE, as it's kept
in the compressed executable. For all the other ones (and when it can't
find any info that makes sense), it'll approximate, so the required minimum
memory might be a little more than that in the original program.

o       When uncompressing a program, UX sets up stack the way the program
would have it at Run-Time and uses that. Thus the resulting file might
have some garbage in the stack area. That's not important, as this area
gets overwritten with the first few instructions anyway.

o       When UX says the resulting file is still packed with something
else, just re-run UX on it.
        In case when the file is packed with something and then Pklite 1.15X
is put on top, be sure to remove Pklite with -k, because if you run UX the
second time to remove the other compressor, UX will get get confused with
the code to fake PK signature (the code it had added the first time).

o       And no, UX.COM doesn't unpack .COM files! Why? Take a wild guess..
        Maybe later

o       I can think of _many_ great improvements, relating to Protected
programs, but now there's no time.. Next versions will have better routines.

o       Oh, yeah. Don't touch your keyboard when UX is unpacking Protected
files -- because Protect screws with int09h (keyboard interrupt) and
pressing a key will kill the decryption process (and lock up the computer).

