- published: 06 Jun 2015
- views: 6785
UPX, the 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 compression algorithm called UCL, which is an open source implementation of portions of the proprietary NRV—Not Really Vanished—algorithm.[citation needed]
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).
UPX supports two mechanisms for decompression - an in-place technique and extraction to temporary file.
The in-place technique, which decompresses the executable into memory, is not possible on all supported platforms. The rest use extraction to temporary file. This procedure involves additional overhead and other disadvantages; however, it allows any executable file format to be packed. The executable is extracted to a temporary location, and then open()
is used to obtain a file descriptor.
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)