UPX

UPXFile:Frameless

Initial release| May 26, 1998; 27 years ago (1998-05-26)
Stable release|

5.0.2 / July 20, 2025; 9 months ago (2025-07-20)

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.github.io

UPX (Ultimate Packer for eXecutables) is a free and open source executable packer supporting a number of file formats from different operating systems.[3][4]

## Contents

* 1 Compression
* 2 Decompression
* 3 Supported formats
* 4 Notes
* 5 References
* 6 External links

## Compression

UPX uses a data compression algorithm called UCL,[5] which is an open-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 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) PE files on the Windows platform.[7] This feature is currently declared as experimental.

## Decompression

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. 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:

* Special permissions are ignored, such as suid.
* `argv[0]` will not be meaningful.
* Multiple running instances of the executable are unable to share common segments.

Unmodified UPX packing is often detected and unpacked by antivirus software scanners. UPX also has a built-in feature for unpacking unmodified executables packed with itself.

## Supported formats

UPX supports the following formats:[8]

* Portable Executable (PE, EXE and DLL files):
* ARM (Windows CE)
* 32-bit x86 (Windows Desktop)
* 64-bit x86-64 (Windows Desktop, still experimental)
* RTM32 (DOS extender, as generated by Borland C/Pascal compilers)[9]
* COFF executables, used by DJGPP2
* a.out format, BSD i386 (removed)
* Raw 8086/DOS files:[nb 1]
* DOS/COM (including some binary images)[nb 2][nb 3]
* DOS/EXE[nb 1]
* DOS/SYS[nb 1]
* TMT/adam (as generated by the TMT Pascal compiler)
* Atari/TOS
* Linux kernel, i386, x86-64 and ARM
* Linux Executable and Linkable Format, i386, x86-64, ARM, PowerPC, MIPS
* PlayStation 1/EXE (MIPS R3000)
* Darwin Mach-O, ppc32, i386, and x86-64

UPX does not currently support PE files containing CIL code intended to run on the .NET Framework.

## Notes

1. ↑ 1.0 1.1 1.2 For the DOS targets, UPX supports a special option `-8086` in order to force the embedded decompressor to become compatible with 8088/8086 processors, so that the compressed files can be executed and decompressed even on the earliest PCs running DOS.
2. ↑ The facility to compress DOS .COM-style files can be utilized also to compress other binary executable files. Some FreeDOS and EDR-DOS kernel files are known to be UPX-compressible this way.
3. ↑ The facility to compress DOS .COM-style files can be utilized also to compress non-executable binary data files, if the driver/application using these files has been enhanced to detect UPX-compressed files and jump to the decompressor embedded in the file. FreeDOS is known to utilize this for .CPX files, UPX-compressed .CPI font files.

## References

1. ↑ "UPX License Agreement". https://upx.github.io/upx-license.html.
2. ↑ 2.0 2.1 "The UPX Hacker's Guide". 19 February 2022. https://github.com/upx/upx/blob/master/README.SRC.
3. ↑ Marak, Victor (2015). Windows Malware Analysis Essentials. Packt Publishing. p. 188. ISBN 978-1-78528-151-8. https://books.google.com/books?id=4-F5CgAAQBAJ&q=Ultimate+Packer+for+Executables&pg=PA188. Retrieved November 22, 2015. "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 ..."
4. ↑ Blunden, Bill (2013). The Rootkit Arsenal (Second ed.). Jones & Bartlett Learning. pp. 353–355. ISBN 978-1-4496-2636-5. https://books.google.com/books?id=GAsuwHTquhEC&q=Ultimate+Packer+for+Executables&pg=PA780. Retrieved November 22, 2015. "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."
5. ↑ Markus Oberhumer. "UCL data compression library". https://www.oberhumer.com/opensource/ucl/.
6. ↑ Markus Oberhumer. "NRV Compression Library". https://www.oberhumer.com/products/nrv/.
7. ↑ "UPX News". https://upx.github.io/upx-news.txt.
8. ↑ `upx(1)` – Linux General Commands Manual
9. ↑ "dos extender rtm32 - fileformat of the stub? \ VOGONS". https://www.vogons.org/viewtopic.php?t=25997.

## External links

* No URL found. Please specify a URL here or add one to Wikidata.

* v
* t
* e

Data compression software

Archivers with
compression
(comparison)|

| Free software|

* 7-Zip
* Archive Manager
* Ark
* Expander
* FreeArc
* Info-ZIP
* KGB Archiver
* PAQ
* PeaZip
* tar
* XAD (decompression only)
* Xarchiver
* Zipeg
* ZPAQ

|

Freeware|

* Filzip
* LHA
* StuffIt Expander (decompression only)
* The Unarchiver (decompression only)
* TUGZip
* ZipGenius

Commercial|

* ARC
* ALZip
* Archive Utility
* ARJ
* BetterZip
* JAR
* MacBinary
* PKZIP/SecureZIP
* PowerArchiver
* StuffIt
* WinAce
* WinRAR
* WinZip

Non-archiving
compressors|

| Generic|

* bzip2
* compress
* gzip
* lzip
* lzop
* pack
* rzip
* Snappy
* XZ Utils

|

For code|

UPX

Audio
compression
(comparison)|

| Lossy|

* Fraunhofer FDK AAC
* Nero AAC Codec
* Freeware Advanced Audio Coder (FAAC)
* Helix DNA Producer
* l3enc
* LAME
* TooLAME
* libavcodec
* libcelt
* libopus
* libspeex
* Musepack
* libvorbis
* Windows Media Encoder

|

Lossless|

* ALAC
* FLAC
* libavcodec
* Monkey's Audio
* mp4als
* OptimFROG
* Shorten
* TTA (True Audio)
* WavPack

Video
compression
(comparison)|

| Lossy|

| MPEG-4 ASP|

* 3ivx
* DivX
* Nero Digital
* FFmpeg
* HDX4
* Xvid

|

H.264 /
MPEG-4 AVC|

* CoreAVC
* Blu-code
* DivX
* FFmpeg
* Nero Digital
* OpenH264
* QuickTime
* x264

HEVC|

* DivX
* x265

Others|

* CineForm
* Cinepak
* Daala
* DNxHD
* Helix DNA Producer
* Indeo
* libavcodec
* Schrödinger (Dirac)
* SBC
* Sorenson
* VP7
* libtheora
* libvpx
* Windows Media Encoder

Lossless|

* FFV1
* Huffyuv
* Lagarith
* MSU Lossless
* YULS

* See also: compression methods and compression formats

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/UPX. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:UPX&oldid=3967803"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template