Changelog:
==================================================================
User visible changes for UPX
==================================================================
Changes in 4.2.4 (09 May 2024):
* bug fixes – see https://github.com/upx/upx/milestone/17
Changes in 4.2.3 (27 Mar 2024):
* bug fixes – see https://github.com/upx/upx/milestone/16
Changes in 4.2.2 (03 Jan 2024):
* bug fixes – see https://github.com/upx/upx/milestone/15
Changes in 4.2.1 (01 Nov 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 – see https://github.com/upx/upx/milestone/14
Changes in 4.2.0 (26 Oct 2023):
* win32/pe and win64/pe: stricter relocation checks; please report regressions
* unix: use utimensat to preserve sub-second file timestamps
* 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+
* official Windows builds: set activeCodePage to UTF-8
* bug fixes – see https://github.com/upx/upx/milestone/13
Changes in 4.1.0 (08 Aug 2023):
* ELF: handle shared libraries with more than 2 PT_LOAD segments
* bug fixes – see https://github.com/upx/upx/milestone/11
Changes in 4.0.2 (30 Jan 2023):
* bug fixes – see https://github.com/upx/upx/milestone/9
Changes in 4.0.1 (16 Nov 2022):
* bug fixes – see https://github.com/upx/upx/milestone/8
Changes in 4.0.0 (28 Oct 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)
* win32/pe and win64/pe: set correct SizeOfHeaders in the PE header
* bug fixes – see https://github.com/upx/upx/milestone/6
* bug fixes – see https://github.com/upx/upx/milestone/7
Changes in 3.96 (23 Jan 2020):
* bug fixes – see https://github.com/upx/upx/milestone/5
Changes in 3.95 (26 Aug 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
Changes in 3.94 (12 May 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
Changes in 3.93 (29 Jan 2017):
* Fixed some win32/pe and win64/pe regressions introduced in 3.92
* bug fixes – see https://github.com/upx/upx/milestone/2
Changes in 3.92 (11 Dec 2016):
* INFO: UPX has moved to GitHub – the new home page is https://upx.github.io
* 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.
* Support Apple MacOS 10.12 “Sierra”, including more-robust de-compression.
* Explicitly diagnose Go-language bad PT_LOAD; recommend hemfix.c.
https://sourceforge.net/p/upx/bugs/195/ https://github.com/pwaller/goupx
* Fix CERT-FI Case 829767 UPX command line tools segfaults.
Received by UPX Team on 2015-May-08; originally reported
by Codenomicon to NCSC-FI on 2015-01-08.
The vulnerabilities were discovered by Joonas Kuorilehto and
Antti Häyrynen from Codenomicon.
* bug fixes – see https://github.com/upx/upx/milestone/1
Changes in 3.91 (30 Sep 2013):
* Added experimental support for Windows 64-bit PE files, based on
work by Stefan Widmann. Please use for testing only!
* bug fixes
==================================================================
Changes in 3.09 (18 Feb 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
Changes in 3.08 (12 Dec 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 support 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
Changes in 3.07 (08 Sep 2010):
* win32/pe: fixed relocation handling for files with *no* TLS callbacks
[severe bug introduced in 3.06]
Changes in 3.06 (04 Sep 2010):
* win32/pe: TLS callback support contributed by Stefan Widmann. Thanks!
* bug fixes
Changes in 3.05 (27 Apr 2010):
* i386-linux and amd64-linux support shared libraries (DT_INIT must
exist, all info needed by runtime loader must be first in .text, etc.)
* Linux /proc/self/exe now is preserved by default, by leaving behind
one page. New compress-time option –unmap-all-pages is available.
* Withdraw support for shared libraries on Darwin (Apple Mac OS X)
because upx does not understand enough about .dylib.
* bug fixes
Changes in 3.04 (27 Sep 2009):
* new format Mach/AMD64 supports 64-bit programs on Apple Macintosh.
* new formats Dylib/i386 and Dylib/ppc32 support shared libraries
[such as browser plugins] on Darwin (Apple Macintosh). An existing
-init function (LC_ROUTINES command) is required.
* new format vmlinuz/armel for Debian NSLU2 (etc.) linux kernel
* bvmlinuz boot protocol 2.08 for 386 Linux kernel
* Extended ABI version 4 for armel-eabi ARM Linux ELF
* bug fixes
Changes in 3.03 (27 Apr 2008):
* implement cache flushing for PowerPC (esp. model 440)
* fix cache flushing on MIPS (>3 MiB compressed, or with holes)
* fix MIPS big-endian
* bug fixes
Changes in 3.02 (16 Dec 2007):
* fix unmapping on arm-linux.elf
* fix error checking in mmap for i386-linux.elf [triggered by -fPIE]
* bug fixes
Changes in 3.01 (31 Jul 2007):
* new options –no-mode, –no-owner and –no-time to disable preservation
of mode (file permissions), file ownership and timestamps.
* dos/exe: fixed an incorrect error message caused by a bug in
relocation handling
* new format linux/mipsel supports ELF on [32-bit] R3000
* fix argv[0] on PowerPC with –lzma
* bug fixes
Changes in 3.00 (27 Apr 2007):
* watcom/le & tmt/adam: fixed a problem when using certain filters
Changes in 2.93 beta (08 Mar 2007):
* new formats Mach/i386 and Mach/fat support Mac OS X i686 and
Universal binaries [i686 and PowerPC only]
* dos/exe: LZMA is now also supported for 16-bit dos/exe. Please note that
you have to explicitly use ‘–lzma’ even for ‘–ultra-brute’ here
because runtime decompression is about 30 times slower than NRV –
which is really noticeable on old machines.
* dos/exe: fixed a rarely occurring bug in relocation handling
* win32/pe & arm/pe: better icon compression handling
Changes in 2.92 beta (23 Jan 2007):
* new option ‘–ultra-brute’ which tries even more variants
* slightly improved compression ratio for some files when
using ‘–brute’ or ‘–ultra-brute’
* bug fixes
Changes in 2.91 beta (29 Nov 2006):
* assorted bug fixes
* wince/arm: fix “missing” icon & version info resource problem for WinCE 5
* win32/pe & arm/pe: added option –compress-icons=3 to compress all icons
Changes in 2.90 beta (08 Oct 2006):
* LZMA algorithm support for most of the 32-bit and 64-bit file formats;
use new option ‘–lzma’ to enable
* new format: BSD/elf386 supporting FreeBSD, NetBSD and OpenBSD
via auto-detection of PT_NOTE or EI_OSABI
* arm/pe: all the NRV compression methods are now supported
(only NRV2D is missing in thumb mode)
* linux/elf386, linux/ElfAMD: remember /proc/self/exe in environment
* major source code changes: the runtime decompression stubs are now
built from internal ELF objects
==================================================================
Changes in 2.03 (07 Nov 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)
Changes in 2.02 (13 Aug 2006):
* linux/386: work around Linux kernel bug (“.bss” requires PF_W)
* linux/ppc32, mach/ppc32: compressed programs now work on a 405 CPU
* vmlinuz/386: fixed zlib uncompression problem on DOS
Atualizações:
Mudanças visíveis para o usuário no UPX
Mudanças na versão 4.2.4 (09 de maio de 2024):
Correções de bugs – veja https://github.com/upx/upx/milestone/17
Mudanças na versão 4.2.3 (27 de março de 2024):
Correções de bugs – veja https://github.com/upx/upx/milestone/16
Mudanças na versão 4.2.2 (03 de janeiro de 2024):
Correções de bugs – veja https://github.com/upx/upx/milestone/15
Mudanças na versão 4.2.1 (01 de novembro de 2023):
linux: /proc/self/exe agora é opcional
windows: use SetFileTime para preservar carimbos de data/hora subsegundo dos arquivos
builds oficiais do Windows: revertido a mudança activeCodePage introduzida na versão 4.2.0
Correções de bugs – veja https://github.com/upx/upx/milestone/14
Mudanças na versão 4.2.0 (26 de outubro de 2023):
win32/pe e win64/pe: verificações mais rigorosas de realocação; por favor, relate regressões
unix: use utimensat para preservar carimbos de data/hora subsegundo dos arquivos
nova opção ‘–link’ para preservar links duros (somente Unix; use com cuidado)
adicionado suporte para a variável de ambiente NO_COLOR; veja https://no-color.org/
desabilitado o suporte ao macOS até corrigirmos a compatibilidade com o macOS 13+
builds oficiais do Windows: define activeCodePage como UTF-8
Correções de bugs – veja https://github.com/upx/upx/milestone/13
Mudanças na versão 4.1.0 (08 de agosto de 2023):
ELF: trata bibliotecas compartilhadas com mais de 2 segmentos PT_LOAD
Correções de bugs – veja https://github.com/upx/upx/milestone/11
Mudanças na versão 4.0.2 (30 de janeiro de 2023):
Correções de bugs – veja https://github.com/upx/upx/milestone/9
Mudanças na versão 4.0.1 (16 de novembro de 2022):
Correções de bugs – veja https://github.com/upx/upx/milestone/8
Mudanças na versão 4.0.0 (28 de outubro de 2022):
Mudança para versionamento semântico
NOTAS DE SEGURANÇA: ênfase no contexto de segurança na documentação
Suporte para construção fácil a partir do código-fonte com CMake
Suporte para reconstrução fácil dos stubs a partir do código-fonte com Podman/Docker
Adicionado suporte para o framework de testes C++ doctest
Adicionado suporte para arquivos EFI (PE x86; Kornel Pal)
win32/pe e win64/pe: define corretamente o SizeOfHeaders no cabeçalho PE
Correções de bugs – veja https://github.com/upx/upx/milestone/6
Correções de bugs – veja https://github.com/upx/upx/milestone/7
Mudanças na versão 3.96 (23 de janeiro de 2020):
Correções de bugs – veja https://github.com/upx/upx/milestone/5
Mudanças na versão 3.95 (26 de agosto de 2018):
Flag –android-shlib para contornar o mau design no Android
Flag –force-pie quando o programa ET_DYN não é marcado como DF_1_PIE
Melhor compatibilidade com o layout variável do espaço de endereço no Linux
Suporte para layout de 4 segmentos PT_LOAD em ELF gerado por binutils-2.31
Correções de bugs, especialmente melhor diagnóstico de entrada malformada
Correções de bugs – veja https://github.com/upx/upx/milestone/4
Mudanças na versão 3.94 (12 de maio de 2017):
Adicionado suporte para arm64-linux (também conhecido como “aarch64”).
Adicionado suporte para compressão –lzma em PowerPC de 64 bits (Thierry Fauck).
Para Mach, “upx -d” irá descompactar um prefixo do arquivo (e avisar).
Várias melhorias nos formatos ELF.
Correções de bugs – veja https://github.com/upx/upx/milestone/3
Mudanças na versão 3.93 (29 de janeiro de 2017):
Corrigidas algumas regressões em win32/pe e win64/pe introduzidas na versão 3.92
Correções de bugs – veja https://github.com/upx/upx/milestone/2
Mudanças na versão 3.92 (11 de dezembro de 2016):
INFORMAÇÃO: O UPX mudou para o GitHub – a nova página inicial é https://upx.github.io
IMPORTANTE: todos os formatos PE: mudanças internas: reunificação dos arquivos fonte divergentes – por favor, relate regressões no rastreador de bugs e tente UPX 3.91 em caso de problemas.
Suporte para Apple MacOS 10.12 “Sierra”, incluindo descompressão mais robusta.
Diagnóstico explícito para problemas com PT_LOAD no Go-language; recomendamos hemfix.c. https://sourceforge.net/p/upx/bugs/195/ https://github.com/pwaller/goupx
Corrigido SEGFAULT nas ferramentas de linha de comando do UPX. Relatado ao UPX Team em 2015-May-08; originalmente reportado pela Codenomicon para o NCSC-FI em 2015-01-08. As vulnerabilidades foram descobertas por Joonas Kuorilehto e Antti Häyrynen da Codenomicon.
Correções de bugs – veja https://github.com/upx/upx/milestone/1
Comentários