I have been contacted recently by the author of XUNPACK. It's a very interesting program so I thought I'd drop a note about it here:
XUNPACK is an unpacker of packed executables. It uses a clever heuristic approach instead of hard-coded decompression routines and comes with asm sources. The author gives it away under "whatever-license" (public domain / MIT / anything else -- he does not care). The program is dated 1993, and apparently it has not been published before.
I have added XUNPACK to SvarDOS packages so it can be downloaded with pkgnet, or through the "packages" web interface at
http://svardos.org/?p=repo
From the program's documentation:
==================================
XUNPACK attempts to be an "universal" unpacker by exploiting a common characteristic of most of the run-time unpacking algorithm code: the unpacker moves itself above the final program space then jumps to the segment of the moved code; it then unpacks the target program and performs another inter-segment jump to the final start address. As no other inter-segment jump occurs while unpacking, the memory contains the unpacked program whenever the second inter-segment occurs.
XUNPACK steps through the unpacker code by only using instructions emulation and stepping vector, so it can even be executed on processors that do not support virtual modes.
==================================
I have tested it with an UPXed binary and it worked flawlessly. Did not work with a 624-packed COM file, but this might be too far on the esoteric spectrum. I suppose XUNPACK should work with executables packed with EXEPACK, aPACK, LZEXE, etc.