John Reiser
f204670008
Mach unpack checks for bad load_command in compressed input
...
https://github.com/upx/upx/issues/564
modified: p_mach.cpp
2022-02-25 10:17:04 -08:00
John Reiser
651155c64d
Check Mach_header.ncmds at unpack
...
https://github.com/upx/upx/issues/563
modified: p_mach.cpp
2022-02-25 09:32:29 -08:00
John Reiser
2d6987252e
is_bad_linker_command()
...
https://github.com/upx/upx/issues/545
modified: p_mach.cpp
2021-12-27 08:14:19 -08:00
John Reiser
4a9c46253e
Validate input LC_ commands in order to defend against fuzzers
...
TODO: validate in ::unpack(), too
https://github.com/upx/upx/issues/545
modified: p_mach.cpp
modified: p_mach.h
modified: p_mach_enum.h
2021-12-26 19:40:34 -08:00
John Reiser
766fe466d6
PAGE_SIZE varies: Apple M1 uses 16K
...
modified: p_mach.cpp
modified: p_mach.h
modified: p_mach_enum.h
2021-04-11 15:19:24 -07:00
goushibee
bf957f435e
fix issue 486
2021-04-07 15:40:13 +08:00
John Reiser
7e5e6012df
PackMachFat::canPack handles case PackMachFat::CPU_TYPE_ARM64
...
modified: p_mach.cpp
2021-03-06 09:59:51 -08:00
John Reiser
fb844a8ed1
total_in, total_out move to PackUnix
...
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_lx_interp.cpp
modified: p_mach.cpp
modified: p_unix.cpp
modified: p_unix.h
2021-02-22 16:13:40 -08:00
John Reiser
23f63e4196
WIP unpacking ELF shared library
...
modified: Makefile
modified: lzma-sdk
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_mach.cpp
modified: p_unix.cpp
modified: p_unix.h
modified: packer.cpp
modified: packer.h
modified: stub/arm64-linux.elf-fold.h
modified: stub/src/arm64-linux.elf-fold.S
modified: stub/tmp/arm64-linux.elf-fold.map
2021-01-15 14:11:09 -08:00
John Reiser
fd6837b267
Another checkAlreadyPacked()
...
https://github.com/upx/upx/issues/463
modified: Makefile
modified: p_mach.cpp
2021-02-26 15:15:28 -08:00
John Reiser
1ab6e01de2
MacOS BigSur wants no MH_DYLDLINK for our MH_EXECUTE
...
https://github.com/upx/upx/issues/434
modified: p_mach.cpp
2021-02-14 13:23:19 -08:00
John Reiser
2469563b26
Mach_ARM64_thread_state padded to (0 mod 8)
...
https://github.com/upx/upx/issues/446 (partial)
modified: p_mach.cpp
modified: p_mach.h
modified: p_mach_enum.h
2021-01-30 16:11:32 -08:00
John Reiser
21d102c84f
Better checking of Mach_header.ncmds, .sizeofcmds
...
Improves earlier fix.
https://github.com/upx/upx/issues/447
modified: p_mach.cpp
2021-01-23 13:52:54 -08:00
John Reiser
80de11bc5b
Detect Mach_header.sizeofcmds==0
...
https://github.com/upx/upx/issues/448
modified: p_mach.cpp
2021-01-17 17:09:35 -08:00
John Reiser
5f98bb0ab0
De-compress allows old-style LC_UNIXTHREAD with one LC_SEGMENT
...
https://github.com/upx/upx/issues/447
modified: p_mach.cpp
2021-01-15 15:03:26 -08:00
Markus F.X.J. Oberhumer
9131d5216f
Welcome 2021.
2021-01-01 20:39:22 +01:00
Markus F.X.J. Oberhumer
f7e2266c3f
Start using some C++ 14 features.
2020-12-08 05:40:17 +01:00
Markus F.X.J. Oberhumer
bd193201b2
Avoid a clang-11 warning.
2020-12-03 02:14:47 +01:00
John Reiser
1879185e42
Check Mach_command.cmdsize
...
https://github.com/upx/upx/issues/426
Also use MemBuffer to avoid leaks that result from throw()
modified: p_mach.cpp
modified: p_mach.h
2020-11-28 10:56:28 -08:00
John Reiser
a928a08f9d
ptrTEXT in PackMachBase<T>::canUnpack()
...
https://github.com/upx/upx/issues/417
modified: p_mach.cpp
2020-11-06 19:14:18 -08:00
John Reiser
2f453acf5d
use UPX_RSIZE_MAX_MEM
...
modified: p_mach.cpp
2020-05-28 15:45:07 -07:00
John Reiser
4ae1576726
Mach-o LC_SEGMENTs not monotonic in file (__DWARF for 'go')
...
https://github.com/upx/upx/issues/222 go-1.14 (but not go-1.14.3 ?)
modified: ../p_mach.cpp
modified: ../p_mach.h
modified: ../p_unix.cpp
modified: ../p_unix.h
modified: ../stub/src/amd64-darwin.macho-main.c
modified: ../stub/amd64-darwin.macho-fold.h
modified: ../stub/arm.v5a-darwin.macho-fold.h
modified: ../stub/arm64-darwin.macho-fold.h
modified: ../stub/tmp/amd64-darwin.macho-fold.map
modified: ../stub/tmp/arm.v5a-darwin.macho-fold.map
modified: ../stub/tmp/arm64-darwin.macho-fold.map
2020-05-30 02:54:09 -07:00
Markus F.X.J. Oberhumer
92f072cf70
Silence some compiler warnings.
2020-01-08 04:49:27 +01:00
Markus F.X.J. Oberhumer
d1174385ef
Welcome 2020.
2020-01-08 04:13:28 +01:00
John Reiser
819c33fee2
Detect malformed Mach-o file in ::canUnpack()
...
https://github.com/upx/upx/issues/314
https://github.com/upx/upx/issues/315
modified: p_mach.cpp
2019-11-15 21:32:06 -08:00
John Reiser
3de0008543
i386-darwin.macho re-implementation, especially for MacOS <= 10.8.x (Mountain Lion)
...
[i386 will not be supported by new MacOS beginning fall 2019.]
https://github.com/upx/upx/issues/246
modified: p_mach.cpp
modified: stub/i386-darwin.macho-entry.h
modified: stub/i386-darwin.macho-fold.h
modified: stub/i386-darwin.macho-upxmain.exe
modified: stub/i386-darwin.macho-upxmain.h
new file: stub/src/arch/i386/bxx.S
new file: stub/src/arch/i386/nrv2b_d32-easy.S
new file: stub/src/arch/i386/nrv2d_d32-easy.S
new file: stub/src/arch/i386/nrv2e_d32-easy.S
modified: stub/src/i386-darwin.macho-entry.S
modified: stub/src/i386-darwin.macho-fold.S
modified: stub/src/i386-darwin.macho-main.c
modified: stub/src/i386-darwin.macho-upxmain.c
modified: stub/tmp/i386-darwin.macho-entry.bin.dump
modified: stub/tmp/i386-darwin.macho-fold.map
2019-03-02 15:39:30 -08:00
John Reiser
423f1a8758
pack4() "__TEXT".nsects can differ from prototype to actual
...
modified: p_mach.cpp
2019-02-18 14:41:43 -08:00
Markus F.X.J. Oberhumer
3667fa4e44
Welcome 2019.
2019-02-15 11:04:09 +01:00
John Reiser
473b90419f
Mach-o for 'rust' has intermixed LC_SEGMENT64 "__DWARF" with 0==.vmsize
...
https://github.com/upx/upx/issues/222
modified: p_mach.cpp
modified: stub/src/amd64-darwin.macho-main.c
modified: stub/src/amd64-darwin.macho-upxmain.c
also *-darwin.macho-fold.{h,map}
2018-10-13 21:06:37 -07:00
John Reiser
4d1c754af9
Preserve Mach_segment_header.flags; fix non-PIE main programs on MacOS.
...
https://github.com/upx/upx/issues/222
modified: p_mach.cpp
modified: p_mach.h
modified: stub/src/amd64-darwin.macho-entry.S
also *.macho-*.h, *.macho-fold.map, amd64-darwin.macho-entry.bin.dump
2018-09-22 18:50:37 -07:00
John Reiser
bb1f9cdecd
Propagate pagezero_vmsize; fix overlay_offset.
...
modified: p_mach.cpp
2018-09-22 12:11:51 -07:00
John Reiser
153ea8be03
MSVC signed/unsigned
...
modified: p_mach.cpp
2018-09-11 21:13:27 -07:00
John Reiser
f3f7f97f8d
MSVC signed/unsigned
...
modified: p_mach.cpp
2018-09-09 15:58:24 -07:00
John Reiser
597e8fe407
Fix de-compression for Mach-O files (MacOS)
...
https://github.com/upx/upx/issues/219
modified: p_mach.cpp
modified: p_mach.h
2018-09-08 11:41:38 -07:00
John Reiser
0dac6b7be3
MacOS de-compression (upx -d)
...
https://github.com/upx/upx/issues/218
modified: p_mach.cpp
2018-09-04 20:52:17 -07:00
John Reiser
fefe7a3452
Fix segTEXT.vmsize and data for entry to shlib.
...
https://github.com/upx/upx/issues/57
modified: p_mach.cpp
2018-03-19 14:59:20 -07:00
Markus F.X.J. Oberhumer
021c8db58a
Welcome 2018.
2018-01-19 10:55:32 +01:00
Markus F.X.J. Oberhumer
900926c0ed
Avoid a MSVC warning.
2018-01-12 10:19:14 +01:00
John Reiser
ee3f1292d0
fix editing rot for mach-o .dylib
...
https://github.com/upx/upx/issues/57
modified: p_mach.cpp
2018-01-11 11:33:15 -08:00
John Reiser
4854c03096
uint64_t ==> upx_uint64_t
...
MSVC error C2065: 'uint64_t' : undeclared identifier
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_mach.cpp
2018-01-06 09:33:04 -08:00
John Reiser
79e65503a9
Merge branch 'devel' into jreiser-macho
2017-12-26 10:41:26 -08:00
John Reiser
aefb2fa3c3
bad logic for throwCantUnpack("cmdsize") [simple]
...
https://github.com/upx/upx/issues/161
modified: p_mach.cpp
2017-12-19 17:36:22 -08:00
John Reiser
e8aa80f904
stash work-in-progress
...
modified: linker.cpp
modified: p_mach.cpp
modified: p_mach.h
modified: packmast.cpp
modified: stub/Makefile
modified: stub/src/amd64-darwin.macho-main.c
modified: stub/src/arm.v5a-darwin.macho-entry.S
modified: stub/src/arm64-darwin.macho-entry.S
modified: stub/src/arm64-darwin.macho-fold.S
modified: stub/src/arm64-darwin.macho-main.c
2017-12-19 17:32:15 -08:00
John Reiser
5063480a38
MH_EXECUTE runs under lldb, fails under shell
...
mmap addr=0x100000000 len=0x3003 prot=0x3 flags=0x1012 fd=-1 off=0x0 reloc=0x0
maddr=0xffffffffffffffff addr=0x100000000
modified: p_mach.cpp
modified: p_mach_enum.h
modified: stub/src/amd64-darwin.macho-entry.S
modified: stub/src/amd64-darwin.macho-fold.S
modified: stub/src/amd64-darwin.macho-main.c
2017-12-13 09:54:44 -08:00
John Reiser
3400ae9dbe
MH_EXECUTE leave space for thread state command
...
modified: p_mach.cpp
2017-12-12 10:53:19 -08:00
John Reiser
c6d6378005
Mach-o MH_EXECUTE rewrite; work-in-progress
...
The stub for amd64 gets into the de-compressed folded code.
modified: p_mach.cpp
modified: stub/amd64-darwin.macho-entry.h
modified: stub/src/amd64-darwin.macho-entry.S
modified: stub/src/amd64-darwin.macho-upxmain.c
modified: stub/tmp/amd64-darwin.macho-entry.bin.dump
2017-12-06 17:04:47 -08:00
John Reiser
4f6979967d
Mach-o MH_EXECUTE rewrite; work-in-progress
...
On amd64, otool and lldb accept the results.
The entry point points to the unfilter and uncompress routines.
Somehow _start has been lost.
modified: p_mach.cpp
modified: p_mach.h
modified: p_mach_enum.h
modified: stub/amd64-darwin.macho-entry.h
modified: stub/src/amd64-darwin.macho-entry.S
modified: stub/src/amd64-darwin.macho-upxmain.c
modified: stub/src/i386-darwin.macho-upxmain.c
modified: stub/src/powerpc-darwin.macho-upxmain.c
modified: stub/tmp/amd64-darwin.macho-entry.bin.dump
2017-12-03 23:17:55 -08:00
John Reiser
6eafa552bb
Mach-o defend against bad crafted input
...
https://github.com/upx/upx/issues/146
modified: p_mach.cpp
2017-11-15 13:38:54 -08:00
John Reiser
9e8de4abe5
i386: new stub strategy to avoid problems with early mmap layout
...
The stub occupies the same region that execve() would create
for the original progam. The stub copies everything to a new area,
erases the original region, replaces it with the de-compressed
program, and erases the copy of itself via the escape hatch.
The copy is inexpensive via mmap() of /proc/self/exe.
modified: stub/src/i386-linux.elf-entry.S
modified: stub/src/i386-linux.elf-fold.S
modified: stub/src/i386-linux.elf-main.c
modified: p_lx_elf.cpp
modified: p_lx_elf.h
modified: p_lx_interp.cpp
modified: p_lx_interp.h
modified: p_lx_sh.cpp
modified: p_lx_sh.h
modified: p_mach.cpp
modified: p_mach.h
modified: p_unix.cpp
modified: p_unix.h
modified: p_vmlinx.cpp
plus .h, .map, .dump
2017-10-01 15:56:34 -07:00
John Reiser
96433b4e39
FILTER_ID was wrong for arm64-linux.shlib and arm64-darwin.macho.
...
https://github.com/upx/upx/issues/100 (partial)
modified: stub/src/arm64-darwin.macho-fold.S
modified: stub/src/arm64-linux.shlib-init.S
modified: p_mach.cpp
modified: stub/arm64-darwin.macho-fold.h
modified: stub/arm64-linux.shlib-init.h
2017-08-25 12:51:33 -07:00