UPX Changelog

What's new in UPX 4.2.2

Jan 4, 2024
  • bug fixes

New in UPX 4.2.1 (Nov 1, 2023)

  • Linux: /proc/self/exe now is optional
  • Windows: use SetFileTime to preserve sub-second file timestamps
  • Official Windows builds: revert activeCodePage change introduced in 4.2.0
  • Bug fixes

New in UPX 4.2.0 (Oct 26, 2023)

  • Win32/pe and win64/pe: stricter relocation checks; please report regressions
  • New option '--link' to preserve hard-links (Unix only; use with care)
  • Add support for NO_COLOR env var; see https://no-color.org/
  • Disable macOS support until we fix compatibility with macOS 13+
  • Bug fixes - see https://github.com/upx/upx/milestone/13

New in UPX 4.1.0 (Aug 8, 2023)

  • ELF: handle shared libraries with more than 2 PT_LOAD segments

New in UPX 4.0.2 (Jan 30, 2023)

  • bug fixes

New in UPX 4.0.1 (Nov 17, 2022)

  • Bug fixes - see https://github.com/upx/upx/milestone/8

New in UPX 4.0.0 (Oct 28, 2022)

  • Switch to semantic versioning
  • SECURITY NOTES: emphasize the security context in the docs
  • Support easy building from source code with CMake
  • Support easy rebuilding the stubs from source with Podman/Docker
  • Add integrated doctest C++ testing framework
  • Add support for EFI files (PE x86; Kornel Pal)
  • Bug fixes - see https://github.com/upx/upx/milestone/6
  • Bug fixes - see https://github.com/upx/upx/milestone/7

New in UPX 3.96 (Jan 23, 2020)

  • Bug fixes - see https://github.com/upx/upx/milestone/5

New in UPX 3.95 (Aug 26, 2018)

  • Flag --android-shlib to work around bad design in Android
  • Flag --force-pie when ET_DYN main program is not marked as DF_1_PIE
  • Better compatibility with varying layout of address space on Linux
  • Support for 4 PT_LOAD layout in ELF generated by binutils-2.31
  • Bug fixes, particularly better diagnosis of malformed input
  • Bug fixes - see https://github.com/upx/upx/milestone/4

New in UPX 3.94 (May 15, 2017)

  • Add support for arm64-linux (aka "aarch64").
  • Add support for --lzma compression on 64-bit PowerPC (Thierry Fauck).
  • For Mach, "upx -d" will unpack a prefix of the file (and warn).
  • Various improvements to the ELF formats.
  • bug fixes - see https://github.com/upx/upx/milestone/3

New in UPX 3.93 (Feb 21, 2017)

  • UPX has moved to GitHub - the new home page is https://upx.github.io
  • fixed some win32/pe and win64/pe regressions introduced in 3.92

New in UPX 3.92 (Dec 12, 2016)

  • IMPORTANT: all PE formats: internal changes: reunited the diverged source files - please report all regressions into the bug tracker and try UPX 3.91 in case of problems
  • Explicitly diagnose Go-language bad PT_LOAD
  • Fix CERT-FI Case 829767 UPX command line tools segfaults
  • Bug fixes

New in UPX 3.91 (Oct 1, 2013)

  • experimental support for Win64/PE

New in UPX 3.09 (Feb 20, 2013)

  • New option --preserve-build-id for GNU ELF.
  • Allow for code signing and LC_UUID on Mac OS X executables.
  • Allow non-contiguous LC_SEGMENTs and 0==.vmsize for Mach-O.
  • Allow zero-filled final page in PackUnix::canUnpack().
  • Bug fixes

New in UPX 3.08 (Dec 13, 2011)

  • Fix allocation in runtime stub for darwin.macho-entry (i386 and amd64).
  • Compress shared library on ELF i386 only [ld.so threatens even this case].
  • Attempt to suport ELF on QNX 6.3.0 for armel (experimental).
  • Better diagnostic when ELF -fPIC is needed.
  • PT_NOTE improvements for *BSD.
  • Preserve more ELF .e_flags on ARM.
  • Minor code improvements for ELF stubs
  • Defend against another flavor of corrupt PE header.
  • bug fixes

New in UPX 3.07 (Dec 13, 2011)

  • win32/pe: fixed relocation handling for files with *no* TLS callbacks

New in UPX 3.06 (Dec 13, 2011)

  • win32/pe: TLS callback support
  • bug fixes

New in UPX 3.05 (Apr 28, 2010)

  • optional LZMA compression
  • support for BSD systems

New in UPX 3.00 (May 2, 2007)

  • Optional LZMA compression
  • Support for BSD systems

New in UPX 2.03 (Nov 21, 2006)

  • bvmlinuz/386: fix for kernels not at 0x100000; also allow x86_64
  • linux/elf386: work around Linux kernel bug (0-length .bss needs PF_W)

New in UPX 2.01 (Jun 7, 2006)

  • * arm/pe: better DLL support
  • * dos/exe: device driver support added
  • * linux/386: Fix --force-execve for PaX, grSecurity, and strict SELinux.
  • /tmp must support execve(); therefore /tmp cannot be mounted 'noexec'.
  • * win32/pe & arm/pe: added new option '--keep-resource=' for excluding selected resources from compression

New in UPX 2.0 (Apr 29, 2006)

  • new format: added support for arm/pe (ARM executables running on WinCE)
  • new format: added support for linux elf/amd64
  • new format: added support for linux elf/ppc32
  • new format: added support for mach/ppc32 (Apple Mac OS X)
  • new format: added support for bootable Linux kernels ("vmlinuz/386")
  • new format: added support for Playstation exes ("ps1/exe")
  • slightly better compression using the new NRV2E algorithm
  • new options for compression tuning (e.g. '--brute')
  • improved win32/pe compatibility
  • direct ELF-to-memory decompression
  • various bug fixes