UPX
   HOME

TheInfoList



OR:

UPX (Ultimate Packer for Executables) is a
free and open source Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
executable packer supporting a number of file formats from different operating systems.


Compression

UPX uses a
data compression algorithm In information theory, data compression, source coding, or bit-rate reduction is the process of encoding information using fewer bits than the original representation. Any particular compression is either lossy or lossless. Lossless compression ...
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
byte The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable uni ...
s 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 Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
platform.UPX News
/ref> This feature is currently declared as ''experimental''.


Decompression

UPX supports two mechanisms for decompression: an in-place technique and extraction to
temporary file A temporary file is a file created to store information temporarily, either for a program's intermediate use or for transfer to a permanent file when complete. It may be created by computer programs for a variety of purposes, such as when a program ...
. 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 /code> 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 Antivirus software (abbreviated to AV software), also known as anti-malware, is a computer program used to prevent, detect, and remove malware. Antivirus software was originally developed to detect and remove computer viruses, hence the name. ...
scanners. UPX also has a built-in feature for unpacking unmodified executables packed with itself.


Supported formats

UPX supports the following formats: * Portable Executable (PE, EXE and Dynamic-link library, DLL files): **ARM architecture, ARM (Windows CE) ** 32-bit x86 (Windows Desktop) ** 64-bit x86-64 (Windows Desktop, still experimental) ** RTM32 (DOS extender, as generated by Borland Turbo C, C/Turbo Pascal, Pascal compilers) * COFF executables, used by DJGPP2 * a.out (file format), a.out format, BSD i386 (removed) * Raw 8086/DOS files: ** DOS/COM file, COM (including some binary images) ** DOS/.EXE, EXE ** DOS/.SYS, SYS * Watcom/.exe, LE (used by DOS4G, PMODE/W, DOS32A and CauseWay DOS Extender, CauseWay) * TMT/adam (as generated by the TMT Pascal compiler) * Atari TOS, Atari/TOS * Linux kernel, i386, x86-64 and ARM * Linux Executable and Linkable Format, i386, x86-64, ARM architecture, ARM, PowerPC, MIPS architecture, MIPS * PlayStation (console), PlayStation 1/EXE (MIPS R3000) * Darwin Mach-O, ppc32, i386, and x86-64 UPX does not currently support PE files containing Common Intermediate Language, CIL code intended to run on the Portable Executable#.NET, metadata, and the PE format, .NET Framework.


Notes


References


External links

* {{compression software implementations Free data compression software Free software programmed in C++ EXE packers 1998 software Assembly language software