UPX (Ultimate Packer for Executables) is a free and open source executable packer supporting a number of file formats from different operating systems.
UPX uses a data compression algorithm called UCL, which is an open source implementation of portions of the proprietary NRV (Not Really Vanished) algorithm.
UCL has been designed to be simple enough that a decompressor can be implemented in just a few hundred bytes of code. UCL requires no additional memory to be allocated for decompression, a considerable advantage that means that a UPX packed executable usually requires no additional memory.
UPX (since 2.90 beta) can use LZMA on most platforms; however, this is disabled by default for 16-bit due to slow decompression speed on older computers (use --lzma
to force it on).
Starting with version 3.91, UPX also supports 64-Bit (x64) executable files on the Windows platform. This feature is currently declared as experimental.
UPX supports two mechanisms for decompression: an in-place technique and extraction to temporary file.
Captain America:
Go ahead. Light it up.
George Hanson:
Oh, no, no, no...
George Hanson:
...l couldn't do that.
l've got enough problems...
George Hanson:
...with the booze and all.
l can't afford to get hooked.
Captain America:
You won't get hooked.
George Hanson:
Well, l know.
But it leads to harder stuff. (X2)