Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Compression  





2 Decompression  





3 Supported formats  





4 Notes  





5 References  





6 External links  














UPX






العربية
Čeština
Deutsch
Español
فارسی
Français


Polski
Русский

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Initial releaseMay 26, 1998; 26 years ago (1998-05-26)
Stable release

4.2.2 / January 3, 2024; 5 months ago (2024-01-03)

Repository
Written inC++, Assembly
Operating systemMicrosoft Windows, Linux, macOS, DOS, Atari TOS
Platformi386, MIPS, AMD64, ARM, PowerPC, m68k
Available inEnglish
TypeExecutable compression
LicenseGPL with exception for compressed executables,[1] proprietary for compression algorithm in binary distributions[2]
Websiteupx.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]

Compression[edit]

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[edit]

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:

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[edit]

UPX supports the following formats:[8]

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

Notes[edit]

  1. ^ a b c 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.
  • ^ 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.
  • ^ 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[edit]

    1. ^ "UPX License Agreement".
  • ^ a b "The UPX Hacker's Guide". GitHub. 19 February 2022.
  • ^ Marak, Victor (2015). Windows Malware Analysis Essentials. Packt Publishing. p. 188. ISBN 978-1-78528-151-8. 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 ...
  • ^ Blunden, Bill (2013). The Rootkit Arsenal (Second ed.). Jones & Bartlett Learning. pp. 353–355. ISBN 978-1-4496-2636-5. 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.
  • ^ Markus Oberhumer. "UCL data compression library". oberhumer.com.
  • ^ Markus Oberhumer. "NRV Compression Library". Archived from the original on September 9, 2012.
  • ^ UPX News
  • ^ upx(1) – Linux General Commands Manual
  • ^ "dos extender rtm32 - fileformat of the stub? \ VOGONS".
  • External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=UPX&oldid=1193507823"

    Categories: 
    Free data compression software
    Free software programmed in C++
    EXE packers
    1998 software
    Assembly language software
    Hidden categories: 
    Articles lacking reliable references from February 2015
    All articles lacking reliable references
    All articles with unsourced statements
    Articles with unsourced statements from November 2022
     



    This page was last edited on 4 January 2024, at 04:53 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki