Commit Graph

231 Commits

Author SHA1 Message Date
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
Markus F.X.J. Oberhumer ef8a7f330d Silence some compiler warnings. 2017-07-23 02:59:51 +02:00
Markus F.X.J. Oberhumer 69355514c9 Fix some misspellings. 2017-07-22 12:54:37 +02:00
John Reiser 650df95b72 Fix thinko in PackMachBase<T>::canUnpack(). Also detect more bad input values.
https://github.com/upx/upx/issues/109
	modified:   p_mach.cpp
2017-06-18 14:24:44 -07:00
John Reiser 143c4e3322 Fix MH_EXECUTE for amd64-darwin.macho
modified:   p_mach.cpp
	modified:   stub/src/amd64-darwin.macho-entry.S

	modified:   stub/amd64-darwin.macho-entry.h
	modified:   stub/tmp/amd64-darwin.macho-entry.bin.dump
2017-06-07 08:58:20 -07:00
John Reiser ce194fa5d8 amd64-darwin.dylib hacking
modified:   p_mach.cpp
	modified:   p_mach.h
	modified:   p_mach_enum.h
	modified:   stub/src/amd64-darwin.dylib-entry.S

	modified:   stub/amd64-darwin.dylib-entry.h
	modified:   stub/tmp/amd64-darwin.dylib-entry.bin.dump
2017-05-17 15:50:34 -07:00
John Reiser fe4a8f33b1 Start on darwin.macho-dylib
modified:   p_mach.cpp
	modified:   p_mach.h
	modified:   packmast.cpp
2017-05-03 08:30:21 -07:00
John Reiser 6ed67f4532 Unpack prefix with appended data; give message, keep backup
https://github.com/upx/upx/issues/4
	modified:   p_mach.cpp
2017-04-03 12:53:27 -07:00
John Reiser f7751684af Stubs LZMA_DEC00 and LZMA_ELF00 fall through; no "+80C" alignment.
addStubEntrySections() and getDecompressorSections()
	modified:   p_lx_elf.cpp
	modified:   p_mach.cpp
	modified:   packer_c.cpp
2017-02-05 13:26:02 -08:00
John Reiser 2cefd34bb7 Allow __PAGEZERO.vmsize to be 0x1000 on x86_64, as for "go"-language.
https://github.com/upx/upx/issues/59
	modified:   p_mach.cpp
	modified:   p_mach.h
2017-02-03 15:12:40 -08:00
Markus F.X.J. Oberhumer 5d3be8da1d Silence a MSVC warning. 2017-01-03 12:37:35 +01:00
Markus F.X.J. Oberhumer c4da5e81fa Welcome 2017. 2017-01-03 12:02:07 +01:00
Markus F.X.J. Oberhumer 0b4ac35bc9 Tune some MSVC warnings. 2016-12-19 22:57:43 +01:00
John Reiser 9c1bc99d7a Avoid warning C4146: unary minus operator applied to unsigned type, result still unsigned
modified:   p_mach.cpp
2016-12-16 10:59:51 -08:00
Markus F.X.J. Oberhumer 8d61e037f9 Cleanups. 2016-11-20 14:17:21 +01:00
John Reiser 3df7d26101 propagate cpusubtype
modified:   p_mach.cpp
	modified:   p_mach.h
2016-11-14 05:06:29 -08:00
John Reiser a72aca4379 powerpc (32-bit) works on MacOS using Sierra-compatible strategy.
modified:   p_mach.cpp
	modified:   p_mach.h
	modified:   stub/powerpc-darwin.macho-entry.h
	modified:   stub/powerpc-darwin.macho-upxmain.exe
	modified:   stub/powerpc-darwin.macho-upxmain.h
	modified:   stub/src/powerpc-darwin.macho-entry.S
	modified:   stub/src/powerpc-darwin.macho-upxsubr.S
	modified:   stub/tmp/powerpc-darwin.macho-entry.bin.dump
2016-11-12 19:48:19 -08:00
John Reiser 3f14b9dab7 LC_UNIXTHREAD in ::pass4
modified:   p_mach.cpp
2016-11-08 17:53:02 -08:00
John Reiser 3b2c411274 Work on 32-bit PowerPC
modified:   p_mach.cpp
	modified:   p_mach.h
2016-11-06 20:39:01 -08:00
John Reiser e418af1ccd Try to fix 32-bit PowerPC.
modified:   p_mach.cpp
	modified:   p_mach.h
	modified:   stub/Makefile
	new file:   stub/powerpc-darwin.macho-upxmain.exe
	new file:   stub/powerpc-darwin.macho-upxmain.h
	new file:   stub/src/powerpc-darwin.macho-upxsubr.S
2016-11-06 17:59:16 -08:00
John Reiser 7dc004acb3 bug in other-endian ::canPack and ::canUnpack
modified:   p_mach.cpp
2016-11-05 14:02:51 -07:00
John Reiser 2635472896 more unpacking for Mach-o (pre-3.91 ?)
modified:   p_mach.cpp
	modified:   p_mach.h
2016-11-05 13:16:16 -07:00
John Reiser 9dd0e3ce4f c++-analyzer finds the speck but misses the log.
modified:   p_mach.cpp
2016-10-09 09:34:33 -07:00
John Reiser 42206364e5 Reduce Mach-o headers
modified:   p_mach.cpp
2016-10-06 16:06:24 -07:00
John Reiser 82d9bb8f51 Fix namespace typedefs for Mach-o structs [upx_uint32_t ==> Word]
modified:   p_mach.cpp
	modified:   p_mach.h
2016-10-06 14:00:05 -07:00
John Reiser 923a9d3f9b Template PackMackBase<T>::pack3. Use more templates for ::pack4.
modified:   p_mach.cpp
	modified:   p_mach.h
2016-10-06 08:55:09 -07:00
John Reiser ae7660068b Merge branch 'devel' of https://github.com/upx/upx into devel 2016-10-06 07:49:52 -07:00
John Reiser f466c1d764 Cosmetic
modified:   p_mach.cpp
2016-10-06 07:49:37 -07:00
Markus F.X.J. Oberhumer 6e76f8ef3a Don't use variable length arrays (VLA). 2016-10-06 13:04:46 +02:00
John Reiser 791fd9199e Preserve alignment in .text
modified:   p_mach.cpp
2016-10-05 12:52:52 -07:00
John Reiser 9e8baf1914 i386 for MacOS 10.12 "Sierra"
modified:   p_mach.cpp
	modified:   stub/i386-darwin.macho-entry.h
	modified:   stub/src/i386-darwin.macho-entry.S
	modified:   stub/tmp/i386-darwin.macho-entry.bin.dump
2016-10-05 11:25:16 -07:00
John Reiser 8fd5479f32 Templates for ::pack4; i386 now packs, needs work before running.
modified:   p_mach.cpp
	modified:   p_mach.h
	new file:   stub/i386-darwin.macho-upxmain.exe
	new file:   stub/i386-darwin.macho-upxmain.h
	new file:   stub/src/i386-darwin.macho-upxmain.c
2016-10-04 19:58:04 -07:00
John Reiser 3283896e4b Templatize ::buildLoader
modified:   p_mach.cpp
	modified:   p_mach.h
2016-10-04 08:54:55 -07:00
John Reiser b444bcf418 On the way to templates and mach-o/i386.
modified:   p_mach.cpp
	modified:   p_mach.h
2016-10-03 22:00:26 -07:00
John Reiser 870cdfa51f Merge branch 'devel' of https://github.com/upx/upx into devel 2016-10-02 10:47:59 -07:00
John Reiser 93787c74ee Rewrite linfo in output file.
modified:   p_mach.cpp
2016-10-02 10:47:37 -07:00
Markus F.X.J. Oberhumer 945323fe15 Fix a compilation warning. 2016-10-02 15:54:14 +02:00
Markus F.X.J. Oberhumer 5e41e69b27 Remove trailing whitespace from p_mach.cpp. 2016-10-02 15:48:56 +02:00
John Reiser 0f74162551 Decompression works after codesign. (Still more is possible.)
modified:   p_mach.cpp
2016-10-01 20:38:25 -07:00
John Reiser 00b1ff1ff6 Apple codesign now works.
modified:   p_mach.cpp
2016-10-01 17:40:32 -07:00
Markus F.X.J. Oberhumer daafc29d2b Add support for UPX_VERSION_GITREV. Some cleanups. 2016-09-25 09:41:26 +02:00
John Reiser df19f0d5ec Try harder to decompress Mach-O I386, too.
modified:   p_mach.cpp
	modified:   p_mach.h
2016-09-24 09:15:10 -07:00
John Reiser 7826a3652b Try harder to decompress Mach-O, because pirates.
modified:   p_mach.cpp
	modified:   p_mach.h
2016-09-24 06:43:16 -07:00
Markus F.X.J. Oberhumer 83828aa8a3 Update vim modelines. 2016-09-22 17:29:43 +02:00