Cleanup PackLinuxElf64amd::defineSymbols(): use is_pie; reduce symbols

modified:   p_lx_elf.cpp
	modified:   stub/src/amd64-linux.elf-entry.S
	modified:   stub/src/amd64-linux.elf-fold.S

	modified:   stub/amd64-linux.elf-entry.h
	modified:   stub/amd64-linux.elf-fold.h
	modified:   stub/tmp/amd64-linux.elf-entry.bin.dump
	modified:   stub/tmp/amd64-linux.elf-fold.map
This commit is contained in:
John Reiser 2017-04-06 17:22:30 -07:00
parent e88d2ff88c
commit 85fdd579d6
7 changed files with 256 additions and 296 deletions

View File

@ -1060,8 +1060,6 @@ PackLinuxElf64amd::defineSymbols(Filter const *ft)
{
PackLinuxElf64::defineSymbols(ft);
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
// We want to know if compressed data, plus stub, plus a couple pages,
// will fit below the uncompressed program in memory. But we don't
// know the final total compressed size yet, so use the uncompressed
@ -1079,15 +1077,13 @@ PackLinuxElf64amd::defineSymbols(Filter const *ft)
}
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
upx_uint64_t lo_va_stub = get_te64(&elfout.phdr[0].p_vaddr);
upx_uint64_t adrc;
upx_uint64_t adrm;
upx_uint64_t adru;
upx_uint64_t adrx;
unsigned cntc;
unsigned lenm;
unsigned lenu;
len += (7&-lsize) + lsize;
is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
upx_uint64_t my_page_size = 4096u;
upx_uint64_t my_page_mask = -my_page_size;
is_big = (lo_va_user < (lo_va_stub + len + 2 * my_page_size));
if (is_pie || (is_big /*&& ehdri.ET_EXEC==get_te16(&ehdri.e_type)*/)) {
// .e_entry is set later by PackLinuxElf64::updateLoader
set_te64( &elfout.ehdr.e_entry,
@ -1095,44 +1091,20 @@ PackLinuxElf64amd::defineSymbols(Filter const *ft)
set_te64(&elfout.phdr[0].p_vaddr, lo_va_user);
set_te64(&elfout.phdr[0].p_paddr, lo_va_user);
lo_va_stub = lo_va_user;
adrc = lo_va_stub;
adrm = getbrk(phdri, e_phnum);
adru = page_mask & (~page_mask + adrm); // round up to page boundary
adrx = adru + hlen;
lenm = page_size + len;
lenu = page_size + len;
cntc = len >> 3; // over-estimate; corrected at runtime
adrm = getbrk(phdri, e_phnum) - lo_va_user;
lenm = my_page_size + len;
lenu = my_page_size + len;
}
else {
adrm = lo_va_stub + len;
adrc = adrm;
adru = lo_va_stub;
adrx = lo_va_stub + hlen;
lenm = page_size;
lenu = page_size + len;
cntc = 0;
adrm = len;
lenm = my_page_size;
lenu = my_page_size + len;
}
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
//linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
ACC_UNUSED(adrx);
// For actual moving, we need the true count, which depends on sz_pack2
// and is not yet known. So the runtime stub detects "no move"
// if adrm==adrc, and otherwise uses actual sz_pack2 to compute cntc.
//linker->defineSymbol("CNTC", cntc); // count for copy
ACC_UNUSED(cntc);
adrm = my_page_mask & (~my_page_mask + adrm); // round up to page boundary
linker->defineSymbol("LENU", lenu); // len for unmap
//linker->defineSymbol("ADRC", adrc); // addr for copy
//linker->defineSymbol("ADRU", adru); // addr for unmap
ACC_UNUSED(adru);
#define EI_NIDENT 16 /* <elf.h> */
linker->defineSymbol("JMPU", EI_NIDENT -4 + lo_va_user); // unmap trampoline
#undef EI_NIDENT
linker->defineSymbol("LENM", lenm); // len for map
linker->defineSymbol("ADRM", adrm); // addr for map
linker->defineSymbol("ADRM", adrm); // offset from &Elf64_Ehdr
//linker->dumpSymbols(); // debug
}
@ -3769,7 +3741,7 @@ void PackLinuxElf64::pack4(OutputFile *fo, Filter &ft)
if (Elf64_Ehdr::ET_DYN==get_te16(&ehdri.e_type)) {
upx_uint64_t const base= get_te64(&elfout.phdr[0].p_vaddr);
set_te16(&elfout.ehdr.e_type, Elf64_Ehdr::ET_DYN);
set_te16(&elfout.ehdr.e_phnum, 1);
//set_te16(&elfout.ehdr.e_phnum, 1);
set_te64( &elfout.ehdr.e_entry,
get_te64(&elfout.ehdr.e_entry) - base);
set_te64(&elfout.phdr[0].p_vaddr, get_te64(&elfout.phdr[0].p_vaddr) - base);

View File

@ -1,5 +1,5 @@
/* amd64-linux.elf-entry.h
created from amd64-linux.elf-entry.bin, 10119 (0x2787) bytes
created from amd64-linux.elf-entry.bin, 10026 (0x272a) bytes
This file is part of the UPX executable compressor.
@ -31,11 +31,11 @@
*/
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 10119
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xb1ef104c
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xb46dbf18
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 10026
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xe06ffbe3
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x4af23ebf
unsigned char stub_amd64_linux_elf_entry[10119] = {
unsigned char stub_amd64_linux_elf_entry[10026] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,144, 24, 0, 0, 0, 0, 0, 0,
@ -410,13 +410,13 @@ unsigned char stub_amd64_linux_elf_entry[10119] = {
/* 0x1730 */ 97,105,108,101,100, 46, 10, 0, 94,106, 2, 95,106, 1, 88, 15,
/* 0x1740 */ 5,106,127, 95,106, 60, 88, 15, 5, 94,173,146, 86, 91, 72,141,
/* 0x1750 */ 69,247, 68,139, 56, 76, 41,248, 80, 65, 41,215, 72,141, 12, 16,
/* 0x1760 */ 104, 0, 0, 0, 0, 80,104, 0, 0, 0, 0, 81, 65, 87, 72,141,
/* 0x1770 */ 184, 0, 0, 0, 0,106, 7, 90,190, 0, 0, 0, 0,106, 50, 65,
/* 0x1780 */ 90, 69, 41,192,106, 9, 88, 15, 5, 72, 57,199, 15,133, 0, 0,
/* 0x1790 */ 0, 0, 72,139,116, 36, 24, 72,137,250, 72, 41,242, 72, 1,213,
/* 0x17a0 */ 72, 1, 84, 36, 8, 72, 1, 84, 36, 24, 72,137,217, 72, 41,241,
/* 0x17b0 */ 72,193,233, 3,252,243, 72,165, 72,151, 72,137,222, 80, 72,146,
/* 0x17c0 */ 173, 80, 72,137,225,173,151,173, 68, 15,182,192, 72,135,254,255,
/* 0x1760 */ 80,104, 0, 0, 0, 0, 81, 65, 87, 72,141,184, 0, 0, 0, 0,
/* 0x1770 */ 106, 7, 90,190, 0, 0, 0, 0,106, 50, 65, 90, 69, 41,192,106,
/* 0x1780 */ 9, 88, 15, 5, 72, 57,199, 15,133, 0, 0, 0, 0, 72,129,254,
/* 0x1790 */ 0, 16, 0, 0,118, 38, 72,139,116, 36, 24, 87, 90, 72, 41,242,
/* 0x17a0 */ 72, 1,213, 72, 1, 84, 36, 8, 72, 1, 84, 36, 24, 83, 89, 72,
/* 0x17b0 */ 41,241, 72,193,233, 3,252,243, 72,165, 72,151, 83, 94, 80, 80,
/* 0x17c0 */ 90,173, 80, 84, 89,173,151,173, 68, 15,182,192, 72,135,254,255,
/* 0x17d0 */ 213, 89,195, 93,232, 0, 0, 0, 0, 0, 0, 0, 0,102,105,108,
/* 0x17e0 */ 101, 32,102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,120,
/* 0x17f0 */ 56, 54, 45, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58,
@ -565,108 +565,102 @@ unsigned char stub_amd64_linux_elf_entry[10119] = {
/* 0x20e0 */ 114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20f0 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68,
/* 0x2100 */ 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2110 */ 48, 48, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2110 */ 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2120 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2130 */ 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, 48,
/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48,
/* 0x2150 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32,
/* 0x2160 */ 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48,
/* 0x2170 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82,
/* 0x2170 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78,
/* 0x2180 */ 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2190 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42,
/* 0x21a0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21b0 */ 48, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21c0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x21d0 */ 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21e0 */ 48, 48, 48, 48, 48, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10,
/* 0x21f0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x2200 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88,
/* 0x2210 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32,
/* 0x2220 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2230 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
/* 0x2240 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88,
/* 0x2250 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69,
/* 0x2260 */ 76, 70, 77, 65, 73, 78, 90,117, 43, 48,120, 48, 48, 48, 48, 48,
/* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 54,102, 10, 10, 82, 69, 76,
/* 0x2280 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
/* 0x2290 */ 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70,
/* 0x22a0 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x22b0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x22c0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22d0 */ 48, 48, 48, 48, 97,101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x22e0 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65,
/* 0x22f0 */ 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2300 */ 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2310 */ 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
/* 0x2320 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2330 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
/* 0x2340 */ 102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x2350 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86,
/* 0x2360 */ 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x2370 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x2380 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x2390 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82,
/* 0x23a0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
/* 0x23b0 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48,
/* 0x23c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48,
/* 0x23d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95,
/* 0x23e0 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
/* 0x23f0 */ 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,
/* 0x2400 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76,
/* 0x2410 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
/* 0x2420 */ 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70,
/* 0x2430 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x2440 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2450 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2460 */ 48, 48, 48, 48, 56, 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x2470 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65,
/* 0x2480 */ 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2490 */ 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x24a0 */ 48, 48, 48, 53, 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
/* 0x24b0 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x24c0 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
/* 0x24d0 */ 102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x24e0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77,
/* 0x24f0 */ 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84,
/* 0x2500 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32,
/* 0x2510 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
/* 0x2520 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2530 */ 48, 48, 54, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51,
/* 0x2540 */ 50, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48,
/* 0x2550 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2560 */ 48, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x2570 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70,
/* 0x2580 */ 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x2590 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x25a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x25b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49,
/* 0x25c0 */ 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x25d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,
/* 0x25e0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10,
/* 0x25f0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
/* 0x2600 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
/* 0x2610 */ 90,117, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x2620 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x2630 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x2640 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82,
/* 0x2650 */ 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32,
/* 0x2660 */ 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2670 */ 48, 48, 48, 48, 48, 55, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x2680 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48,
/* 0x2690 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 32, 82,
/* 0x26a0 */ 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 83, 32, 32, 32, 32, 32,
/* 0x26b0 */ 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x26c0 */ 48, 48, 48, 48, 49, 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x26d0 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48,
/* 0x26e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 53, 32, 82,
/* 0x26f0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
/* 0x2700 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48,
/* 0x2710 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10, 48, 48, 48,
/* 0x2720 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 57, 32, 82, 95,
/* 0x2730 */ 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32,
/* 0x2740 */ 79, 95, 66, 73, 78, 70, 79, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2750 */ 48, 48, 48, 48, 48, 48, 50,101, 32, 82, 95, 88, 56, 54, 95, 54,
/* 0x2760 */ 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
/* 0x2770 */ 73, 78, 89, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2780 */ 48, 48, 48, 48, 48,100, 10
/* 0x21b0 */ 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67,
/* 0x21c0 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
/* 0x21d0 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70,
/* 0x21e0 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
/* 0x21f0 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2200 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2210 */ 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52,
/* 0x2220 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
/* 0x2230 */ 78, 90,117, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2240 */ 48, 48, 48, 48, 54,102, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x2250 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x2260 */ 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x2270 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x2280 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x2290 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,
/* 0x22a0 */ 101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x22b0 */ 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48,
/* 0x22c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10,
/* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98,
/* 0x22e0 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32,
/* 0x22f0 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,
/* 0x2300 */ 102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10,
/* 0x2310 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x2320 */ 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10,
/* 0x2330 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2340 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2350 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2360 */ 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82, 95, 88, 56, 54, 95,
/* 0x2370 */ 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95,
/* 0x2380 */ 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2390 */ 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23a0 */ 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54,
/* 0x23b0 */ 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
/* 0x23c0 */ 73, 78, 89, 43, 48,120,102,102,102,102,102,102,102,102,102,102,
/* 0x23d0 */ 102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x23e0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x23f0 */ 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x2400 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x2410 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x2420 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
/* 0x2430 */ 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x2440 */ 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48,
/* 0x2450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10,
/* 0x2460 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 50,
/* 0x2470 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32,
/* 0x2480 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,
/* 0x2490 */ 102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10,
/* 0x24a0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x24b0 */ 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70,
/* 0x24c0 */ 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x24d0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x24e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x24f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82,
/* 0x2500 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
/* 0x2510 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48,
/* 0x2520 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10,
/* 0x2530 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x2540 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2550 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32,
/* 0x2560 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2570 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
/* 0x2580 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 88,
/* 0x2590 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69,
/* 0x25a0 */ 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,102,102,
/* 0x25b0 */ 102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79,
/* 0x25c0 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x25d0 */ 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90,117, 93, 58, 10,
/* 0x25e0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x25f0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2600 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2610 */ 48, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 88, 56, 54, 95,
/* 0x2620 */ 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85,
/* 0x2630 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2640 */ 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 83, 32, 32,
/* 0x2650 */ 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2660 */ 48, 48, 48, 48, 48, 48, 48, 49, 52, 32, 82, 95, 88, 56, 54, 95,
/* 0x2670 */ 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77,
/* 0x2680 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55,
/* 0x2690 */ 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x26a0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48,
/* 0x26b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10,
/* 0x26c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 57,
/* 0x26d0 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32,
/* 0x26e0 */ 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10, 48, 48, 48, 48, 48,
/* 0x26f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 57, 32, 82, 95, 88, 56,
/* 0x2700 */ 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76,
/* 0x2710 */ 70, 77, 65, 73, 78, 89, 43, 48,120, 48, 48, 48, 48, 48, 48, 48,
/* 0x2720 */ 48, 48, 48, 48, 48, 48, 48, 48,100, 10
};

View File

@ -1,5 +1,5 @@
/* amd64-linux.elf-fold.h
created from amd64-linux.elf-fold.bin, 1924 (0x784) bytes
created from amd64-linux.elf-fold.bin, 1920 (0x780) bytes
This file is part of the UPX executable compressor.
@ -31,20 +31,20 @@
*/
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 1924
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x0aead9dc
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0xeee592b2
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 1920
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0xc4cbd98b
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0xd4393110
unsigned char stub_amd64_linux_elf_fold[1924] = {
unsigned char stub_amd64_linux_elf_fold[1920] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 62, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x0060 */ 132, 7, 0, 0, 0, 0, 0, 0,132, 7, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 128, 7, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 132, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 128, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 89, 0, 0,
@ -54,107 +54,106 @@ unsigned char stub_amd64_linux_elf_fold[1924] = {
/* 0x00f0 */ 6,128,126,254, 15,116, 6, 44,232, 60, 1,119,228, 72, 57,206,
/* 0x0100 */ 115, 22, 86,173, 40,208,117,223, 95, 15,200, 41,248, 1,216,171,
/* 0x0110 */ 72, 57,206,115, 3,172,235,223, 91,195, 65, 89, 72,137,230, 72,
/* 0x0120 */ 141,190,240,239,255,255, 72,137,252,106, 7, 89,243, 72,165, 72,
/* 0x0120 */ 141,190,240,239,255,255, 72,137,252,106, 6, 89,243, 72,165, 72,
/* 0x0130 */ 131, 62, 0, 72,165,117,248, 72,137,250, 72,171, 72,131, 62, 0,
/* 0x0140 */ 72,165,117,248, 87, 72,131, 62, 0, 72,165, 72,165,117,246, 76,
/* 0x0150 */ 141,127,248, 72,137, 58,184, 32, 32, 32, 61,171,186, 0, 16, 0,
/* 0x0160 */ 0, 72,137,254, 76,137,207,106, 89, 88, 15, 5,133,192,120, 4,
/* 0x0170 */ 198, 4, 6, 0, 73,131,193, 15, 89, 94, 95, 72,139, 68, 36, 24,
/* 0x0180 */ 72,129,236, 0, 8, 0, 0, 72,137,226, 73,137,232, 80,232, 91,
/* 0x0190 */ 4, 0, 0, 90, 72,129,196, 0, 8, 0, 0, 94, 95, 89, 89, 80,
/* 0x01a0 */ 106, 11, 88, 65,255, 39,176, 11,235, 13,176, 10,235, 9,176, 12,
/* 0x01b0 */ 235, 5,176, 9, 73,137,202, 15,182,192, 15, 5, 72, 61, 0,240,
/* 0x01c0 */ 255,255,114, 4, 72,131,200,255,195,176, 0,235,234,176, 2,235,
/* 0x01d0 */ 230,176, 3,235,226,176, 60,235,222, 0, 0, 0, 81, 72, 57, 23,
/* 0x01e0 */ 76,139, 71, 8, 72,141, 74,255,115, 10,191,127, 0, 0, 0,232,
/* 0x01f0 */ 225,255,255,255, 72,131,249,255,116, 17, 65, 15,182, 0, 72,255,
/* 0x0200 */ 201, 73,255,192,136, 6, 72,255,198,235,233, 72, 1, 87, 8, 72,
/* 0x0210 */ 41, 23, 88,195, 65, 85, 73,137,213, 65, 84, 73,137,204, 85, 72,
/* 0x0220 */ 137,253, 83, 72,137,243, 72,131,236, 40, 72,131, 62, 0, 15,132,
/* 0x0230 */ 226, 0, 0, 0, 72,141,116, 36, 16,186, 12, 0, 0, 0, 72,137,
/* 0x0240 */ 239,232,150,255,255,255,139, 84, 36, 16,139,116, 36, 20,133,210,
/* 0x0250 */ 117, 21,129,254, 85, 80, 88, 33,117, 17, 72,131,125, 0, 0, 15,
/* 0x0260 */ 132,177, 0, 0, 0,235, 4,133,246,117, 10,191,127, 0, 0, 0,
/* 0x0270 */ 232, 96,255,255,255, 57,214,119,242,137,208, 72, 59, 3,119,235,
/* 0x0280 */ 57,214, 72,139, 67, 8,115,104,137, 84, 36, 12, 72,139,125, 8,
/* 0x0290 */ 72,141, 76, 36, 12, 68,139, 68, 36, 24, 72,137,194, 65,255,213,
/* 0x02a0 */ 133,192,117,199,139,116, 36, 12, 59,116, 36, 16,117,189, 15,182,
/* 0x02b0 */ 76, 36, 25,132,201, 15,149,194, 49,192, 77,133,228, 15,149,192,
/* 0x02c0 */ 133,194,116, 30,129,254, 0, 2, 0, 0,119, 7,137,240, 72, 57,
/* 0x02d0 */ 3,117, 15, 15,182, 84, 36, 26, 15,182,201, 72,139,123, 8, 65,
/* 0x02e0 */ 255,212,139, 68, 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13,
/* 0x02f0 */ 137,242, 72,137,239, 72,137,198,232,223,254,255,255,139, 84, 36,
/* 0x0300 */ 16, 72,139, 3, 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137,
/* 0x0310 */ 3,233, 24,255,255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,
/* 0x0320 */ 195, 72,133,255, 73,137,208,116, 41, 72,139, 7,137,241, 72, 57,
/* 0x0330 */ 200,116, 17, 72,255,200, 15,148,194, 49,192,133,246, 15,149,192,
/* 0x0340 */ 133,194,116, 8, 72,137, 15, 76,137, 71, 8,195, 72,131,199, 16,
/* 0x0350 */ 235,215,195, 65, 87,184, 0, 0, 0, 0, 73,137,255, 65, 86, 65,
/* 0x0360 */ 85, 65, 84, 73,137,252, 85, 83, 72,131,236,104, 76, 3,103, 32,
/* 0x0370 */ 102,131,127, 16, 3,137, 84, 36, 60, 15,183, 87, 56, 72,137, 76,
/* 0x0380 */ 36, 48,185, 16, 0, 0, 0, 72,137,116, 36, 64, 76,137, 68, 36,
/* 0x0390 */ 40, 76,137, 76, 36, 32, 15, 68,200, 76,137,230, 72,131,205,255,
/* 0x03a0 */ 49,219,131,193, 34,255,202,120, 33,131, 62, 1,117, 22, 72,139,
/* 0x03b0 */ 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40, 72, 57,195,
/* 0x03c0 */ 72, 15, 66,216, 72,131,198, 56,235,219, 72,129,229, 0,240,255,
/* 0x03d0 */ 255, 49,210, 69, 49,201, 72, 41,235, 65,131,200,255, 72,137,239,
/* 0x03e0 */ 72,129,195,255, 15, 0, 0, 72,129,227, 0,240,255,255, 72,137,
/* 0x03f0 */ 222,232,188,253,255,255, 72,141, 20, 24, 72, 41,232,102, 65,131,
/* 0x0400 */ 127, 56, 0, 72,137, 68, 36, 24,199, 68, 36, 20, 0, 0, 0, 0,
/* 0x0410 */ 72,137, 84, 36, 72, 15,132,155, 1, 0, 0, 72,131,124, 36, 64,
/* 0x0420 */ 0,116, 37, 65,131, 60, 36, 6,117, 30, 72,139, 84, 36, 24, 73,
/* 0x0430 */ 3, 84, 36, 16,190, 3, 0, 0, 0, 72,139,124, 36, 48,232,222,
/* 0x0440 */ 254,255,255,233, 87, 1, 0, 0, 65,131, 60, 36, 1, 15,133, 76,
/* 0x0450 */ 1, 0, 0, 72,139, 68, 36, 24, 73, 3, 68, 36, 16, 65,190, 64,
/* 0x0460 */ 98, 81,115, 65,139, 76, 36, 4, 65,131,200,255, 73,139, 84, 36,
/* 0x0470 */ 32, 72,137,197, 72,137, 68, 36, 88, 73,139, 68, 36, 40,131,225,
/* 0x0480 */ 7, 72,137,235, 72,137, 84, 36, 80,193,225, 2,129,227,255, 15,
/* 0x0490 */ 0, 0, 72, 1,232, 65,211,238, 72, 41,221, 72,137, 68, 36, 8,
/* 0x04a0 */ 73,139, 68, 36, 8, 65,131,230, 7, 76,141, 44, 26,185, 50, 0,
/* 0x04b0 */ 0, 0, 72, 41,216, 72,131,124, 36, 64, 0,117, 7, 68,139, 68,
/* 0x04c0 */ 36, 60,177, 18, 68,137,242, 73,137,193, 76,137,238,131,202, 2,
/* 0x04d0 */ 72,131,124, 36, 64, 0, 72,137,239, 65, 15, 68,214,232,208,252,
/* 0x04e0 */ 255,255, 72, 57,197,117,121, 72,131,124, 36, 64, 0,116, 25, 72,
/* 0x04f0 */ 139, 76, 36, 32, 72,139, 84, 36, 40, 72,141,116, 36, 80, 72,139,
/* 0x0500 */ 124, 36, 64,232, 12,253,255,255, 76,137,235, 72,247,219,129,227,
/* 0x0510 */ 255, 15, 0, 0, 65,246,198, 2,116, 13, 74,141,124, 45, 0, 49,
/* 0x0520 */ 192, 72,137,217,252,243,170, 72,131,124, 36, 64, 0,116, 59, 73,
/* 0x0530 */ 131,124, 36, 8, 0,117, 23, 72,139,124, 36, 48, 72,141, 85, 12,
/* 0x0540 */ 199, 69, 12, 15, 5,195,144, 49,246,232,211,253,255,255, 68,137,
/* 0x0550 */ 242, 76,137,238, 72,137,239,232, 78,252,255,255,133,192,116, 10,
/* 0x0560 */ 191,127, 0, 0, 0,232,107,252,255,255, 73,141, 68, 29, 0, 72,
/* 0x0570 */ 1,197, 72, 59,108, 36, 8,115, 38, 72, 41,108, 36, 8, 69, 49,
/* 0x0580 */ 201, 65,131,200,255, 72,139,116, 36, 8,185, 50, 0, 0, 0, 68,
/* 0x0590 */ 137,242, 72,137,239,232, 24,252,255,255, 72, 57,197,117,193,255,
/* 0x05a0 */ 68, 36, 20, 65, 15,183, 71, 56, 73,131,196, 56, 57, 68, 36, 20,
/* 0x05b0 */ 15,140,101,254,255,255, 72,131,188, 36,160, 0, 0, 0, 0,116,
/* 0x05c0 */ 16, 72,139, 68, 36, 24, 72,139,148, 36,160, 0, 0, 0, 72,137,
/* 0x05d0 */ 2, 73,139, 87, 24, 72, 1, 84, 36, 24, 72,139, 68, 36, 24, 72,
/* 0x05e0 */ 131,196,104, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 65, 87,
/* 0x05f0 */ 77,137,207, 65, 86, 65, 85, 77,137,197, 65, 84, 73,137,212, 85,
/* 0x0600 */ 72,141,106, 64, 83, 72,137,203, 49,201, 72,131,236, 56,139, 7,
/* 0x0610 */ 72,137, 52, 36, 72,137,116, 36, 16, 72,141,116, 36, 32, 72,137,
/* 0x0620 */ 84, 36, 40, 72,137,124, 36, 8, 76,137,194, 72,137,124, 36, 24,
/* 0x0630 */ 72,137,231, 72,137, 68, 36, 32,232,215,251,255,255, 72,139, 85,
/* 0x0640 */ 16,190, 3, 0, 0, 0, 72,137,223, 72,131,194, 64,232,207,252,
/* 0x0650 */ 255,255, 73, 15,183, 84, 36, 56,190, 5, 0, 0, 0, 72,137,223,
/* 0x0660 */ 232,188,252,255,255, 69, 15,183,116, 36, 16, 65,131,254, 3,117,
/* 0x0670 */ 62, 72,139, 84, 36,112, 73, 3, 84, 36, 24,190, 9, 0, 0, 0,
/* 0x0680 */ 102, 65,199, 68, 36, 16, 2, 0, 72,137,223,232,145,252,255,255,
/* 0x0690 */ 65, 15,183, 68, 36, 56,133,192,116, 21, 72,139, 84, 36,112, 72,
/* 0x06a0 */ 1, 85, 16, 72, 1, 85, 24, 72,131,197, 56,255,200,117,240, 65,
/* 0x06b0 */ 83, 77,137,249, 77,137,232, 49,210, 72,137,217, 72,141, 68, 36,
/* 0x06c0 */ 120, 72,141,116, 36, 24, 76,137,231, 80,232,132,252,255,255, 65,
/* 0x06d0 */ 89, 65,131,254, 3, 73,137,197, 65, 90,116, 16, 72,137,194,190,
/* 0x06e0 */ 9, 0, 0, 0, 72,137,223,232, 53,252,255,255, 69, 49,246,102,
/* 0x06f0 */ 65,131,124, 36, 56, 0, 73,141,108, 36, 64,116,117,131,125, 0,
/* 0x0700 */ 3,117, 93, 72,139,124, 36,112, 72, 3,125, 16, 49,210, 49,246,
/* 0x0710 */ 232,184,250,255,255,133,192,137,195,120, 23,186, 0, 4, 0, 0,
/* 0x0720 */ 76,137,230,137,199,232,159,250,255,255, 72, 61, 0, 4, 0, 0,
/* 0x0730 */ 116, 10,191,127, 0, 0, 0,232,153,250,255,255, 65, 80, 49,246,
/* 0x0740 */ 69, 49,201, 69, 49,192, 49,201,106, 0,137,218, 76,137,231,232,
/* 0x0750 */ 255,251,255,255,137,223, 73,137,197,232,115,250,255,255, 94, 95,
/* 0x0760 */ 65, 15,183, 68, 36, 56, 65,255,198, 72,131,197, 56, 65, 57,198,
/* 0x0770 */ 114,139, 72,131,196, 56, 76,137,232, 91, 93, 65, 92, 65, 93, 65,
/* 0x0780 */ 94, 65, 95,195
/* 0x0170 */ 198, 4, 6, 0, 73,131,193, 15, 89, 94, 95, 72,139, 68, 36, 16,
/* 0x0180 */ 72,129,236, 0, 8, 0, 0, 72,137,226, 73,137,232, 80,232, 87,
/* 0x0190 */ 4, 0, 0, 90, 72,129,196, 0, 8, 0, 0, 94, 95, 89, 80,106,
/* 0x01a0 */ 11, 88, 65,255, 39,176, 11,235, 13,176, 10,235, 9,176, 12,235,
/* 0x01b0 */ 5,176, 9, 73,137,202, 15,182,192, 15, 5, 72, 61, 0,240,255,
/* 0x01c0 */ 255,114, 4, 72,131,200,255,195,176, 0,235,234,176, 2,235,230,
/* 0x01d0 */ 176, 3,235,226,176, 60,235,222, 81, 72, 57, 23, 76,139, 71, 8,
/* 0x01e0 */ 72,141, 74,255,115, 10,191,127, 0, 0, 0,232,228,255,255,255,
/* 0x01f0 */ 72,131,249,255,116, 17, 65, 15,182, 0, 72,255,201, 73,255,192,
/* 0x0200 */ 136, 6, 72,255,198,235,233, 72, 1, 87, 8, 72, 41, 23, 88,195,
/* 0x0210 */ 65, 85, 73,137,213, 65, 84, 73,137,204, 85, 72,137,253, 83, 72,
/* 0x0220 */ 137,243, 72,131,236, 40, 72,131, 62, 0, 15,132,226, 0, 0, 0,
/* 0x0230 */ 72,141,116, 36, 16,186, 12, 0, 0, 0, 72,137,239,232,150,255,
/* 0x0240 */ 255,255,139, 84, 36, 16,139,116, 36, 20,133,210,117, 21,129,254,
/* 0x0250 */ 85, 80, 88, 33,117, 17, 72,131,125, 0, 0, 15,132,177, 0, 0,
/* 0x0260 */ 0,235, 4,133,246,117, 10,191,127, 0, 0, 0,232, 99,255,255,
/* 0x0270 */ 255, 57,214,119,242,137,208, 72, 59, 3,119,235, 57,214, 72,139,
/* 0x0280 */ 67, 8,115,104,137, 84, 36, 12, 72,139,125, 8, 72,141, 76, 36,
/* 0x0290 */ 12, 68,139, 68, 36, 24, 72,137,194, 65,255,213,133,192,117,199,
/* 0x02a0 */ 139,116, 36, 12, 59,116, 36, 16,117,189, 15,182, 76, 36, 25,132,
/* 0x02b0 */ 201, 15,149,194, 49,192, 77,133,228, 15,149,192,133,194,116, 30,
/* 0x02c0 */ 129,254, 0, 2, 0, 0,119, 7,137,240, 72, 57, 3,117, 15, 15,
/* 0x02d0 */ 182, 84, 36, 26, 15,182,201, 72,139,123, 8, 65,255,212,139, 68,
/* 0x02e0 */ 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13,137,242, 72,137,
/* 0x02f0 */ 239, 72,137,198,232,223,254,255,255,139, 84, 36, 16, 72,139, 3,
/* 0x0300 */ 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137, 3,233, 24,255,
/* 0x0310 */ 255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,195, 72,133,255,
/* 0x0320 */ 73,137,208,116, 41, 72,139, 7,137,241, 72, 57,200,116, 17, 72,
/* 0x0330 */ 255,200, 15,148,194, 49,192,133,246, 15,149,192,133,194,116, 8,
/* 0x0340 */ 72,137, 15, 76,137, 71, 8,195, 72,131,199, 16,235,215,195, 65,
/* 0x0350 */ 87,184, 0, 0, 0, 0, 73,137,255, 65, 86, 65, 85, 65, 84, 73,
/* 0x0360 */ 137,252, 85, 83, 72,131,236,104, 76, 3,103, 32,102,131,127, 16,
/* 0x0370 */ 3,137, 84, 36, 60, 15,183, 87, 56, 72,137, 76, 36, 48,185, 16,
/* 0x0380 */ 0, 0, 0, 72,137,116, 36, 64, 76,137, 68, 36, 40, 76,137, 76,
/* 0x0390 */ 36, 32, 15, 68,200, 76,137,230, 72,131,205,255, 49,219,131,193,
/* 0x03a0 */ 34,255,202,120, 33,131, 62, 1,117, 22, 72,139, 70, 16, 72, 57,
/* 0x03b0 */ 232, 72, 15, 66,232, 72, 3, 70, 40, 72, 57,195, 72, 15, 66,216,
/* 0x03c0 */ 72,131,198, 56,235,219, 72,129,229, 0,240,255,255, 49,210, 69,
/* 0x03d0 */ 49,201, 72, 41,235, 65,131,200,255, 72,137,239, 72,129,195,255,
/* 0x03e0 */ 15, 0, 0, 72,129,227, 0,240,255,255, 72,137,222,232,191,253,
/* 0x03f0 */ 255,255, 72,141, 20, 24, 72, 41,232,102, 65,131,127, 56, 0, 72,
/* 0x0400 */ 137, 68, 36, 24,199, 68, 36, 20, 0, 0, 0, 0, 72,137, 84, 36,
/* 0x0410 */ 72, 15,132,155, 1, 0, 0, 72,131,124, 36, 64, 0,116, 37, 65,
/* 0x0420 */ 131, 60, 36, 6,117, 30, 72,139, 84, 36, 24, 73, 3, 84, 36, 16,
/* 0x0430 */ 190, 3, 0, 0, 0, 72,139,124, 36, 48,232,222,254,255,255,233,
/* 0x0440 */ 87, 1, 0, 0, 65,131, 60, 36, 1, 15,133, 76, 1, 0, 0, 72,
/* 0x0450 */ 139, 68, 36, 24, 73, 3, 68, 36, 16, 65,190, 64, 98, 81,115, 65,
/* 0x0460 */ 139, 76, 36, 4, 65,131,200,255, 73,139, 84, 36, 32, 72,137,197,
/* 0x0470 */ 72,137, 68, 36, 88, 73,139, 68, 36, 40,131,225, 7, 72,137,235,
/* 0x0480 */ 72,137, 84, 36, 80,193,225, 2,129,227,255, 15, 0, 0, 72, 1,
/* 0x0490 */ 232, 65,211,238, 72, 41,221, 72,137, 68, 36, 8, 73,139, 68, 36,
/* 0x04a0 */ 8, 65,131,230, 7, 76,141, 44, 26,185, 50, 0, 0, 0, 72, 41,
/* 0x04b0 */ 216, 72,131,124, 36, 64, 0,117, 7, 68,139, 68, 36, 60,177, 18,
/* 0x04c0 */ 68,137,242, 73,137,193, 76,137,238,131,202, 2, 72,131,124, 36,
/* 0x04d0 */ 64, 0, 72,137,239, 65, 15, 68,214,232,211,252,255,255, 72, 57,
/* 0x04e0 */ 197,117,121, 72,131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32,
/* 0x04f0 */ 72,139, 84, 36, 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232,
/* 0x0500 */ 12,253,255,255, 76,137,235, 72,247,219,129,227,255, 15, 0, 0,
/* 0x0510 */ 65,246,198, 2,116, 13, 74,141,124, 45, 0, 49,192, 72,137,217,
/* 0x0520 */ 252,243,170, 72,131,124, 36, 64, 0,116, 59, 73,131,124, 36, 8,
/* 0x0530 */ 0,117, 23, 72,139,124, 36, 48, 72,141, 85, 12,199, 69, 12, 15,
/* 0x0540 */ 5,195,144, 49,246,232,211,253,255,255, 68,137,242, 76,137,238,
/* 0x0550 */ 72,137,239,232, 81,252,255,255,133,192,116, 10,191,127, 0, 0,
/* 0x0560 */ 0,232,110,252,255,255, 73,141, 68, 29, 0, 72, 1,197, 72, 59,
/* 0x0570 */ 108, 36, 8,115, 38, 72, 41,108, 36, 8, 69, 49,201, 65,131,200,
/* 0x0580 */ 255, 72,139,116, 36, 8,185, 50, 0, 0, 0, 68,137,242, 72,137,
/* 0x0590 */ 239,232, 27,252,255,255, 72, 57,197,117,193,255, 68, 36, 20, 65,
/* 0x05a0 */ 15,183, 71, 56, 73,131,196, 56, 57, 68, 36, 20, 15,140,101,254,
/* 0x05b0 */ 255,255, 72,131,188, 36,160, 0, 0, 0, 0,116, 16, 72,139, 68,
/* 0x05c0 */ 36, 24, 72,139,148, 36,160, 0, 0, 0, 72,137, 2, 73,139, 87,
/* 0x05d0 */ 24, 72, 1, 84, 36, 24, 72,139, 68, 36, 24, 72,131,196,104, 91,
/* 0x05e0 */ 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 65, 87, 77,137,207, 65,
/* 0x05f0 */ 86, 65, 85, 77,137,197, 65, 84, 73,137,212, 85, 72,141,106, 64,
/* 0x0600 */ 83, 72,137,203, 49,201, 72,131,236, 56,139, 7, 72,137, 52, 36,
/* 0x0610 */ 72,137,116, 36, 16, 72,141,116, 36, 32, 72,137, 84, 36, 40, 72,
/* 0x0620 */ 137,124, 36, 8, 76,137,194, 72,137,124, 36, 24, 72,137,231, 72,
/* 0x0630 */ 137, 68, 36, 32,232,215,251,255,255, 72,139, 85, 16,190, 3, 0,
/* 0x0640 */ 0, 0, 72,137,223, 72,131,194, 64,232,207,252,255,255, 73, 15,
/* 0x0650 */ 183, 84, 36, 56,190, 5, 0, 0, 0, 72,137,223,232,188,252,255,
/* 0x0660 */ 255, 69, 15,183,116, 36, 16, 65,131,254, 3,117, 62, 72,139, 84,
/* 0x0670 */ 36,112, 73, 3, 84, 36, 24,190, 9, 0, 0, 0,102, 65,199, 68,
/* 0x0680 */ 36, 16, 2, 0, 72,137,223,232,145,252,255,255, 65, 15,183, 68,
/* 0x0690 */ 36, 56,133,192,116, 21, 72,139, 84, 36,112, 72, 1, 85, 16, 72,
/* 0x06a0 */ 1, 85, 24, 72,131,197, 56,255,200,117,240, 65, 83, 77,137,249,
/* 0x06b0 */ 77,137,232, 49,210, 72,137,217, 72,141, 68, 36,120, 72,141,116,
/* 0x06c0 */ 36, 24, 76,137,231, 80,232,132,252,255,255, 65, 89, 65,131,254,
/* 0x06d0 */ 3, 73,137,197, 65, 90,116, 16, 72,137,194,190, 9, 0, 0, 0,
/* 0x06e0 */ 72,137,223,232, 53,252,255,255, 69, 49,246,102, 65,131,124, 36,
/* 0x06f0 */ 56, 0, 73,141,108, 36, 64,116,117,131,125, 0, 3,117, 93, 72,
/* 0x0700 */ 139,124, 36,112, 72, 3,125, 16, 49,210, 49,246,232,187,250,255,
/* 0x0710 */ 255,133,192,137,195,120, 23,186, 0, 4, 0, 0, 76,137,230,137,
/* 0x0720 */ 199,232,162,250,255,255, 72, 61, 0, 4, 0, 0,116, 10,191,127,
/* 0x0730 */ 0, 0, 0,232,156,250,255,255, 65, 80, 49,246, 69, 49,201, 69,
/* 0x0740 */ 49,192, 49,201,106, 0,137,218, 76,137,231,232,255,251,255,255,
/* 0x0750 */ 137,223, 73,137,197,232,118,250,255,255, 94, 95, 65, 15,183, 68,
/* 0x0760 */ 36, 56, 65,255,198, 72,131,197, 56, 65, 57,198,114,139, 72,131,
/* 0x0770 */ 196, 56, 76,137,232, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195
};

View File

@ -245,11 +245,9 @@ unfold: // enter: %rbp= &decompress === &ret_main
a R_X86_64_32S instead of R_X86_64_32 relocation type.
Avoid that until tested.
*/
.byte 0x68; .int JMPU // push $ JMPU (R_X86_64_32)
push %rax // ADRU for unmap in fold; updated later
.byte 0x68; .int LENU // push $ LENU (R_X86_64_32)
#else
push $ JMPU // for unmap in fold
push %rax // ADRU for unmap in fold; updated later
push $ LENU // for unmap in fold
#endif
@ -271,31 +269,32 @@ unfold: // enter: %rbp= &decompress === &ret_main
push $ SYS_mmap; pop %rax
syscall // %rax= result; trashes %rcx,%r11 only
cmpq %rax,%rdi; jne msg_SELinux
cmpq $4096,%rsi; jna L80 // only 1 page: no move required
movq 3*8(%rsp),%rsi // ADRU src for copy
movq %rdi,%rdx // ADRM
push %rdi; pop %rdx // ADRM
subq %rsi,%rdx // (ADRM - ADRU) == relocation amount
addq %rdx,%rbp // update &decompress
addq %rdx,1*8(%rsp) // update ADRX
addq %rdx,3*8(%rsp) // update ADRU
movq %rbx,%rcx // [&b_info] beyond end of decompressor
push %rbx; pop %rcx // [&b_info] beyond end of decompressor
subq %rsi,%rcx // byte length
shrq $3,%rcx // qwords to copy
cld
rep; movsq
xchgq %rax,%rdi
L80:
/* Decompress the folded part of this stub, then execute it. */
movq %rbx,%arg2 // &b_info
push %rax // ret_addr after decompression
xchgq %rax,%arg3 // %arg3= dst for unfolding
lodsl; push %rax // allocate slot on stack
movq %rsp,%arg4 // &len_dst ==> used by lzma for EOF
push %rbx; pop %arg2 // &b_info
push %rax // ret_addr after decompression
push %rax; pop %arg3 // dst for unfolding
lodsl; push %rax // allocate slot on stack
push %rsp; pop %arg4 // &len_dst ==> used by lzma for EOF
lodsl; xchgl %eax,%arg1l // sz_cpr XXX: 4GB
lodsl; movzbl %al,%arg5l // b_method
xchg %arg1,%arg2
xchg %arg1,%arg2
call *%rbp // decompress
pop %rcx // discard len_dst
pop %rcx // discard len_dst
ret
main:

View File

@ -59,7 +59,7 @@ __NR_readlink= 89
/* In:
cld
%rbp= &decompress
%rsp= &{LENX,ADRX,LENU,ADRU,JMPU,slide,argc,argv...,0,env...,0,auxv...,0...,strings}
%rsp= &{LENX,ADRX,LENU,ADRU,slide,argc,argv...,0,env...,0,auxv...,0...,strings}
*/
fold_begin:
call L90 # push &L90a
@ -72,7 +72,7 @@ L90:
movq %rsp,%rsi
leaq -8 -4 -4 -4096(%rsi),%rdi # 8:ptr, 4:" =", 4:align, 4096:buffer
movq %rdi,%rsp
push $7; pop %rcx; rep movsq # move LENX,ADRX,LENU,ADRU,JMPU,slide,argc
push $6; pop %rcx; rep movsq # move LENX,ADRX,LENU,ADRU,slide,argc
0:
cmpq $0,(%rsi); movsq; jne 0b # move past argv
movq %rdi,%arg3 # remember &new_env[0]
@ -97,7 +97,7 @@ L90:
pop %arg4 # &Elf64_auxv
pop %arg2 # LENX
pop %arg1 # ADRX
mov 3*8(%rsp),%rax // slide
mov 2*8(%rsp),%rax // slide
subq $ OVERHEAD,%rsp
movq %rsp,%arg3 # &ELf64_Ehdr temporary space
@ -112,7 +112,6 @@ L90:
addq $OVERHEAD,%rsp
pop %arg2 # LENU
pop %arg1 # ADRU
pop %rcx # JMPU [unused]
pop %rcx # slide [unused]
push %rax # &entry
push $ __NR_munmap; pop %rax

View File

@ -30,7 +30,6 @@ SYMBOL TABLE:
0000000000000000 l d LZMA_DEC20 0000000000000000 LZMA_DEC20
0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL
0000000000000000 g ELFMAINX 0000000000000000 _start
0000000000000000 *UND* 0000000000000000 JMPU
0000000000000000 *UND* 0000000000000000 LENU
0000000000000000 *UND* 0000000000000000 ADRM
0000000000000000 *UND* 0000000000000000 LENM
@ -65,10 +64,9 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZu]:
OFFSET TYPE VALUE
0000000000000001 R_X86_64_32 JMPU
0000000000000007 R_X86_64_32 LENU
0000000000000011 R_X86_64_32S ADRM
0000000000000019 R_X86_64_32 LENM
0000000000000002 R_X86_64_32 LENU
000000000000000c R_X86_64_32S ADRM
0000000000000014 R_X86_64_32 LENM
0000000000000075 R_X86_64_PC32 ELFMAINZ+0x000000000000000d
0000000000000079 R_X86_64_32 O_BINFO
000000000000002e R_X86_64_PC32 ELFMAINY+0x000000000000000d
0000000000000029 R_X86_64_PC32 ELFMAINY+0x000000000000000d

View File

@ -8,31 +8,30 @@ Linker script and memory map
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0x6c8
.text 0x00000000001000bc 0x6c4
*(.text)
.text 0x00000000001000bc 0x11d tmp/amd64-linux.elf-fold.o
0x00000000001001a6 munmap
0x00000000001001b2 mmap
0x00000000001001c9 read
0x00000000001001d5 exit
0x00000000001001ae brk
0x00000000001001cd open
0x00000000001001aa mprotect
0x00000000001001d1 close
*fill* 0x00000000001001d9 0x3 00
.text 0x00000000001001dc 0x5a8 tmp/amd64-linux.elf-main.o
0x00000000001005ee upx_main
.text 0x00000000001000bc 0x11c tmp/amd64-linux.elf-fold.o
0x00000000001001a5 munmap
0x00000000001001b1 mmap
0x00000000001001c8 read
0x00000000001001d4 exit
0x00000000001001ad brk
0x00000000001001cc open
0x00000000001001a9 mprotect
0x00000000001001d0 close
.text 0x00000000001001d8 0x5a8 tmp/amd64-linux.elf-main.o
0x00000000001005ea upx_main
*(.data)
.data 0x0000000000100784 0x0 tmp/amd64-linux.elf-fold.o
.data 0x0000000000100784 0x0 tmp/amd64-linux.elf-main.o
.data 0x0000000000100780 0x0 tmp/amd64-linux.elf-fold.o
.data 0x0000000000100780 0x0 tmp/amd64-linux.elf-main.o
.data
.bss 0x0000000000100784 0x0
.bss 0x0000000000100784 0x0 tmp/amd64-linux.elf-fold.o
.bss 0x0000000000100784 0x0 tmp/amd64-linux.elf-main.o
.bss 0x0000000000100780 0x0
.bss 0x0000000000100780 0x0 tmp/amd64-linux.elf-fold.o
.bss 0x0000000000100780 0x0 tmp/amd64-linux.elf-main.o
.rela.dyn 0x0000000000100788 0x0
.rela.dyn 0x0000000000100780 0x0
.rela.text 0x0000000000000000 0x0 tmp/amd64-linux.elf-fold.o
LOAD tmp/amd64-linux.elf-fold.o
LOAD tmp/amd64-linux.elf-main.o