What's new in UPX 4.2.2
Jan 4, 2024
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)
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