This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources. Find sources: "UPX" – news ·newspapers ·books ·scholar ·JSTOR(February 2015) (Learn how and when to remove this message) |
![]() | |
Initial release | May 26, 1998; 26 years ago (1998-05-26) |
---|---|
Stable release | 4.2.2 / January 3, 2024; 14 months ago (2024-01-03) |
Repository | |
Written in | C++,Assembly |
Operating system | Microsoft Windows,Linux,macOS,DOS,Atari TOS |
Platform | i386,MIPS,AMD64,ARM,PowerPC,m68k |
Available in | English |
Type | Executable compression |
License | GPL with exception for compressed executables,[1]proprietary for compression algorithm in binary distributions[2] |
Website | upx |
UPX (Ultimate Packer for eXecutables) is afree and open sourceexecutable packer supporting a number of file formats from different operating systems.[3][4]
UPX uses adata compression algorithm called UCL,[5] which is anopen-source implementation of portions of the proprietary NRV (Not Really Vanished)[6] algorithm.[2]
UCL has been designed to be simple enough that a decompressor can be implemented in just a few hundredbytes 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 useLZMA 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)PE files on theWindows platform.[7] This feature is currently declared asexperimental.
UPX supports two mechanisms for decompression: an in-place technique and extraction totemporary file.
The in-place technique, which decompresses the executable into memory, is not possible on all supported platforms. It has the advantage of being more efficient in terms of memory, and that the environment set up by the OS remains correct.
The rest uses extraction to temporary file. This procedure involves additional overhead and other disadvantages; however, it allows any executable file format to be packed. The extraction to temporary file method has several disadvantages:
argv[0]
will not be meaningful.Unmodified UPX packing is often detected and unpacked byantivirus software scanners. UPX also has a built-in feature for unpacking unmodified executables packed with itself.
UPX supports the following formats:[8]
UPX doesnot currently supportPE files containingCIL code intended to run on the.NET Framework.
-8086
in order to force the embedded decompressor to become compatible with8088/8086 processors, so that the compressed files can be executed and decompressed even on the earliest PCs running DOS.Packers such as Ultimate Packer for Executables (UPX) are more of executable compressors as size reduction is the primary goal, not obfuscation, which can be a byproduct ...
One of the most prolific executable packers is UPX (the Ultimate Packer for executables). Not only does it handle dozens of different executable formats, but also its source code is available online.
upx(1)
– Linux General CommandsManual