John Reiser
69c51eee4d
better checking of DT_STRSZ for ELF
...
https://github.com/upx/upx/issues/779
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66064
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2024-01-27 11:11:07 -08:00
John Reiser
ff5a4eeb96
ELF versus --brute: addStubEntrySections() needs ph_forced_method()
...
https://github.com/upx/upx/issues/770
modified: p_lx_elf.cpp
2024-01-25 17:17:32 -08:00
John Reiser
b48f870701
Detect circular DT_HASH and DT_GNUHASH lookup
...
https://github.com/upx/upx/issues/775
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65811&q=label%3AProj-upx
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65840&q=label%3AProj-upx
2024-01-25 15:05:53 -08:00
John Reiser
10807ebdc2
Unpack 8-byte b_info only if (ph.version <= 11): 2001 or earlier
...
*x86 only: .e_entry too low
https://github.com/upx/upx/issues/774
modified: p_lx_elf.cpp
2024-01-25 09:06:46 -08:00
John Reiser
d615985b8a
elf_find_table_size() did not check for empty table
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65765&q=label%3AProj-upx
https://github.com/upx/upx/issues/771
modified: p_lx_elf.cpp
2024-01-18 19:11:12 -08:00
John Reiser
d3e780d617
Unpacking ELF requires e_phnum at least 2
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65535
https://github.com/upx/upx/issues/763
modified: p_lx_elf.cpp
2024-01-10 14:07:58 -08:00
John Reiser
d549c2b5c9
More care when recovering from slid b_info
...
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65531
https://github.com/upx/upx/issues/762
modified: p_lx_elf.cpp
2024-01-10 13:38:18 -08:00
John Reiser
553fc9b1fb
invert_pt_dynamic: Compilers differ, unsigned vs. signed
...
modified: p_lx_elf.cpp
2024-01-10 10:33:33 -08:00
John Reiser
3dca1175e5
invert_pt_dynamic() needs better checking for malformed input
...
https://github.com/upx/upx/issues/759
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65510
modified: p_lx_elf.cpp
2024-01-10 09:41:12 -08:00
Markus F.X.J. Oberhumer
47fc230893
all: welcome 2024
2024-01-03 17:47:25 +01:00
John Reiser
ed2633bf95
Honor .p_align <= 64K; else assume 4K is also available
...
https://github.com/upx/upx/issues/737
modified: p_lx_elf.cpp
2023-11-26 11:46:12 -08:00
Markus F.X.J. Oberhumer
4f0f977f04
CI updates and cleanups
2023-11-03 17:52:46 +01:00
Markus F.X.J. Oberhumer
e964d4acf3
src/util: change TriBool logic to use a bool template parameter
2023-10-31 12:24:44 +01:00
John Reiser
d6d5e7ae3d
For Android emulator: align i386 LEXEC020 binfo
...
modified: src/stub/src/i386-linux.elf-entry.S
modified: src/p_lx_elf.cpp
modified: src/stub/i386-linux.elf-entry.h
modified: misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
2023-09-28 12:02:28 -07:00
John Reiser
854988bc5f
Detect AlreadyPacked even when trailing PackHeader has been lopped.
...
This is heuristic, but strong.
https://github.com/upx/upx/issues/712
modified: p_lx_elf.cpp
modified: p_unix.h
2023-09-21 14:12:18 -07:00
Markus F.X.J. Oberhumer
62dbf8485f
src: sort cleanups
2023-09-04 07:28:48 +02:00
John Reiser
b526eed346
Detect "no Shdrs" earlier when already packed
...
https://github.com/upx/upx/issues/699
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
John Reiser
59c6a71b72
More use of ph_forced_method()
...
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
John Reiser
bfb5ea50a9
Temporary
...
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
John Reiser
149d84edca
--brute versus forced_method(ph.method)
...
https://github.com/upx/upx/issues/694 (partial)
modified: p_lx_elf.cpp
2023-08-23 19:52:35 +02:00
Markus F.X.J. Oberhumer
b9bf81d548
src/p_lx_elf.cpp: init o_binfo to avoid crash with MSAN build
...
This should be double-checked by @jreiser
2023-08-16 22:23:28 +02:00
Markus F.X.J. Oberhumer
a9ac4b5e23
src: introduce type tribool
2023-08-15 14:44:50 +02:00
Markus F.X.J. Oberhumer
777d4f5279
src: refactoring: create packhead.h and move some methods
2023-08-11 03:57:20 +02:00
Markus F.X.J. Oberhumer
757401dd0c
CI and spell checks
2023-08-09 13:08:38 +02:00
John Reiser
75e153dd99
More care in ::forward_Shdrs() and ::pack4()
...
Also, de-compressing arm64 shlib restores .init_array[0],
although supposedly *_RELATIVE relocation should overwrite.
https://github.com/upx/upx/issues/693
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2023-08-04 11:52:58 -07:00
John Reiser
3a16d4a12e
Spell check; No-Functional-Change
...
modified: p_lx_elf.cpp
2023-07-31 06:06:31 -07:00
John Reiser
41e9f7985f
forward_Shdrs: elfout for main, lowmem for shlib
...
Especially Android.
https://github.com/upx/upx/issues/680
modified: p_lx_elf.cpp
modified: p_lx_elf.h
2023-07-29 13:43:33 -07:00
John Reiser
905bfacf44
Pacify clang-tidy
2023-07-26 17:21:39 -07:00
Markus F.X.J. Oberhumer
053e95033f
all: improve C++ static analyzers
2023-07-26 22:28:47 +02:00
John Reiser
745fef7425
fpad4, fpad8, and _Shdr hacking should guard against (!fo)
...
Also pacify some clang scan-build complaints.
modified: p_lx_elf.cpp
2023-07-26 07:27:12 -07:00
John Reiser
c9d625a237
Use 'elfout' for changing ElfXX_Ehdr
...
https://github.com/upx/upx/issues/688
modified: p_lx_elf.cpp
2023-07-26 07:15:22 +02:00
John Reiser
2684e815e0
Fix use of memfd_create for shlib stubs, espcially Android
...
Also relocation of init_array[0] for Elf32 shlib.
https://github.com/upx/upx/issues/220
https://github.com/upx/upx/issues/609
https://github.com/upx/upx/issues/680
modified: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/i386-linux.elf-so_main.c
modified: p_lx_elf.cpp
modified: stub/src/arm.v4a-linux.elf-so_fold.S
modified: stub/src/arm64-linux.elf-so_entry.S
modified: stub/src/arm64-linux.elf-so_fold.S
modified: stub/src/i386-linux.elf-so_fold.S
modified: stub/amd64-linux.elf-so_fold.h
modified: stub/arm.v4a-linux.elf-so_fold.h
modified: stub/arm.v5a-linux.elf-so_fold.h
modified: stub/arm64-linux.elf-so_entry.h
modified: stub/arm64-linux.elf-so_fold.h
modified: stub/i386-linux.elf-so_fold.h
modified: stub/tmp/amd64-linux.elf-so_fold.bin.dump
2023-07-26 07:15:22 +02:00
John Reiser
672d69c68a
Fix unpacking of upx-3.94-armeb_linux/upx
...
Getting past the code of the stub must deal with variances
between released versions.
modified: p_lx_elf.cpp
2023-07-18 16:56:39 -07:00
Markus F.X.J. Oberhumer
5edfda46e5
all: clang-tidy updates
2023-07-08 09:59:41 +02:00
John Reiser
c429859cbf
Placate Android dlopen() some more.
...
https://github.com/upx/upx/issues/680
modified: p_lx_elf.cpp
2023-07-06 10:08:41 +02:00
John Reiser
dc76b2af97
info(Android_penalty)
...
modified: p_lx_elf.cpp
2023-06-26 09:09:47 -07:00
John Reiser
b4a793ed26
Make ::forward_Shdrs more friendly to Android dlopen()
...
https://github.com/upx/upx/issues/220
https://github.com/upx/upx/issues/609
2023-06-22 10:16:25 -07:00
Markus F.X.J. Oberhumer
08a72d5251
Fix whitespace.
2023-05-10 20:19:22 +02:00
John Reiser
736a6cd955
Catch amd64 ET_EXEC with .e_entry < 0x400000
...
https://github.com/upx/upx/issues/673
modified: p_lx_elf.cpp
2023-05-10 20:17:22 +02:00
John Reiser
75ce5e5df3
Fix SIGSEGV due to name confusion in ::forward_Shdrs
...
https://github.com/upx/upx/issues/671
modified: p_lx_elf.cpp
2023-05-10 20:17:22 +02:00
John Reiser
04ffb641a6
Compilers generate junk .sh_info
...
modified: p_lx_elf.cpp
2023-04-24 19:37:25 -07:00
Markus F.X.J. Oberhumer
b1729e3bcf
src: cleanup MAX_ELF_HDR
2023-04-19 23:23:46 +02:00
John Reiser
78b68283c4
Fix .e_entry for PowerPC64
...
https://github.com/upx/upx/issues/668
modified: p_lx_elf.cpp
2023-04-19 13:58:52 -07:00
John Reiser
d8395d8c42
Fix usage of _te32/_te64/_te16 for Elf classes
...
How did it ever work? UPX_RSIZE_MAX_MEM of 768MiB, Elf32_Off of only
32-bits, and preponderance of little-endian and small positive integers
hides many mis-uses of _te64/_te32.
ELF does not help: e_phnum, e_shnum, Elf32_Section, Elf64_Section are all
16-bit, but sh_info and sh_link are 32-bit.
Templatizing p_elf.h (following the example of p_mach.h) failed
because of complexity. (Plus too many special cases of ELF where 32-bit
and 64-bit are not parallel.)
modified: p_lx_elf.cpp
modified: p_lx_sh.cpp
modified: p_mach.cpp
2023-04-17 13:19:06 -07:00
John Reiser
a20c5a1e7f
Align 64-bit forward_Shdr
...
//github.com/upx/upx/issues/220
modified: p_lx_elf.cpp
2023-04-12 14:54:49 -07:00
John Reiser
3bdfcaa541
Try to placate Android crapware, which cannot deal with null strings
...
From https://github.com/upx/upx/issues/220 :
Phone:
04-10 16:07:52.862 E/AndroidRuntime( 5178): java.lang.UnsatisfiedLinkError: dlopen failed: \
"/data/app/~~Nwb-iR6LHpHyrT37xe8HNg==/com.android.support-y0YbcwLn1b4sBRD09JGVAw==/lib/arm64/libMyLibName.so" \
has unsupported e_shentsize: 0x0 (expected 0x40)
Emulator:
04-10 09:57:38.746 E/AndroidRuntime( 6403): java.lang.UnsatisfiedLinkError: dlopen failed: \
"/data/app/~~sBBMDvh36TxwO4muxOJ3Bg==/com.android.support-8Lc6r2dLzTIW7SEHXLI0XQ==/lib/arm64/libMyLibName.so" \
has no section headers
modified: p_lx_elf.cpp
2023-04-11 13:41:54 -07:00
John Reiser
7b2faf2016
Elf64_Rela for shlib DT_INIT_ARRAY
...
Also allow PT_PHDR in shlibs.
Also page align lo end of mmap, like mprotect.
https://github.com/upx/upx/issues/664
modified: p_lx_elf.cpp
modified: stub/src/amd64-linux.elf-so_main.c
modified: stub/src/i386-linux.elf-so_main.c
modified: stub/src/amd64-linux.elf-so_fold.S
modified: stub/src/arm.v4a-linux.elf-fold.S
modified: stub/src/arm.v4a-linux.elf-so_fold.S
modified: stub/src/arm64-linux.elf-fold.S
modified: stub/src/arm64-linux.elf-so_fold.S
modified: stub/src/i386-linux.elf-so_fold.S
modified: stub/amd64-linux.elf-so_fold.h
modified: stub/arm.v4a-linux.elf-fold.h
modified: stub/arm.v4a-linux.elf-so_fold.h
modified: stub/arm.v5a-linux.elf-fold.h
modified: stub/arm.v5a-linux.elf-so_fold.h
modified: stub/arm64-linux.elf-fold.h
modified: stub/arm64-linux.elf-so_fold.h
modified: stub/armeb.v4a-linux.elf-fold.h
modified: stub/i386-linux.elf-so_fold.h
modified: stub/tmp/amd64-linux.elf-so_fold.bin.dump
modified: stub/tmp/arm.v4a-linux.elf-fold.map
modified: stub/tmp/arm.v5a-linux.elf-fold.map
modified: stub/tmp/arm64-linux.elf-fold.map
modified: stub/tmp/armeb.v4a-linux.elf-fold.map
modified: stub/src/arch/mips/r3000/macros.ash
modified: ../.github/travis_testsuite_1-expected_sha256sums.sh
2023-04-11 11:00:48 -07:00
John Reiser
42902dabac
64-bit shlib with DT_INIT_ARRAY but no DT_INIT
...
https://github.com/upx/upx/issues/664
modified: p_elf_enum.h
modified: p_lx_elf.cpp
2023-04-10 18:01:39 -07:00
John Reiser
c72ceaa979
MSVC
...
modified: p_lx_elf.cpp
2023-03-26 11:29:19 -07:00
John Reiser
8ac79ca0ad
whitespce
...
modified: p_lx_elf.cpp
2023-03-26 11:16:36 -07:00