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
+12 -40
View File
@@ -1060,8 +1060,6 @@ PackLinuxElf64amd::defineSymbols(Filter const *ft)
{ {
PackLinuxElf64::defineSymbols(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, // 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 // will fit below the uncompressed program in memory. But we don't
// know the final total compressed size yet, so use the uncompressed // 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 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 lo_va_stub = get_te64(&elfout.phdr[0].p_vaddr);
upx_uint64_t adrc;
upx_uint64_t adrm; upx_uint64_t adrm;
upx_uint64_t adru;
upx_uint64_t adrx;
unsigned cntc;
unsigned lenm; unsigned lenm;
unsigned lenu; unsigned lenu;
len += (7&-lsize) + lsize; 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)*/)) { if (is_pie || (is_big /*&& ehdri.ET_EXEC==get_te16(&ehdri.e_type)*/)) {
// .e_entry is set later by PackLinuxElf64::updateLoader // .e_entry is set later by PackLinuxElf64::updateLoader
set_te64( &elfout.ehdr.e_entry, 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_vaddr, lo_va_user);
set_te64(&elfout.phdr[0].p_paddr, lo_va_user); set_te64(&elfout.phdr[0].p_paddr, lo_va_user);
lo_va_stub = lo_va_user; lo_va_stub = lo_va_user;
adrc = lo_va_stub; adrm = getbrk(phdri, e_phnum) - lo_va_user;
adrm = getbrk(phdri, e_phnum); lenm = my_page_size + len;
adru = page_mask & (~page_mask + adrm); // round up to page boundary lenu = my_page_size + len;
adrx = adru + hlen;
lenm = page_size + len;
lenu = page_size + len;
cntc = len >> 3; // over-estimate; corrected at runtime
} }
else { else {
adrm = lo_va_stub + len; adrm = len;
adrc = adrm; lenm = my_page_size;
adru = lo_va_stub; lenu = my_page_size + len;
adrx = lo_va_stub + hlen;
lenm = page_size;
lenu = page_size + len;
cntc = 0;
} }
adrm = page_mask & (~page_mask + adrm); // round up to page boundary adrm = my_page_mask & (~my_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);
linker->defineSymbol("LENU", lenu); // len for unmap 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("LENM", lenm); // len for map
linker->defineSymbol("ADRM", adrm); // addr for map linker->defineSymbol("ADRM", adrm); // offset from &Elf64_Ehdr
//linker->dumpSymbols(); // debug //linker->dumpSymbols(); // debug
} }
@@ -3769,7 +3741,7 @@ void PackLinuxElf64::pack4(OutputFile *fo, Filter &ft)
if (Elf64_Ehdr::ET_DYN==get_te16(&ehdri.e_type)) { if (Elf64_Ehdr::ET_DYN==get_te16(&ehdri.e_type)) {
upx_uint64_t const base= get_te64(&elfout.phdr[0].p_vaddr); 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_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, set_te64( &elfout.ehdr.e_entry,
get_te64(&elfout.ehdr.e_entry) - base); get_te64(&elfout.ehdr.e_entry) - base);
set_te64(&elfout.phdr[0].p_vaddr, get_te64(&elfout.phdr[0].p_vaddr) - base); set_te64(&elfout.phdr[0].p_vaddr, get_te64(&elfout.phdr[0].p_vaddr) - base);
+103 -109
View File
@@ -1,5 +1,5 @@
/* amd64-linux.elf-entry.h /* 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. 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_SIZE 10026
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xb1ef104c #define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xe06ffbe3
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xb46dbf18 #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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 0x1760 */ 80,104, 0, 0, 0, 0, 81, 65, 87, 72,141,184, 0, 0, 0, 0,
/* 0x1770 */ 184, 0, 0, 0, 0,106, 7, 90,190, 0, 0, 0, 0,106, 50, 65, /* 0x1770 */ 106, 7, 90,190, 0, 0, 0, 0,106, 50, 65, 90, 69, 41,192,106,
/* 0x1780 */ 90, 69, 41,192,106, 9, 88, 15, 5, 72, 57,199, 15,133, 0, 0, /* 0x1780 */ 9, 88, 15, 5, 72, 57,199, 15,133, 0, 0, 0, 0, 72,129,254,
/* 0x1790 */ 0, 0, 72,139,116, 36, 24, 72,137,250, 72, 41,242, 72, 1,213, /* 0x1790 */ 0, 16, 0, 0,118, 38, 72,139,116, 36, 24, 87, 90, 72, 41,242,
/* 0x17a0 */ 72, 1, 84, 36, 8, 72, 1, 84, 36, 24, 72,137,217, 72, 41,241, /* 0x17a0 */ 72, 1,213, 72, 1, 84, 36, 8, 72, 1, 84, 36, 24, 83, 89, 72,
/* 0x17b0 */ 72,193,233, 3,252,243, 72,165, 72,151, 72,137,222, 80, 72,146, /* 0x17b0 */ 41,241, 72,193,233, 3,252,243, 72,165, 72,151, 83, 94, 80, 80,
/* 0x17c0 */ 173, 80, 72,137,225,173,151,173, 68, 15,182,192, 72,135,254,255, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 0x21b0 */ 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67,
/* 0x21c0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21c0 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
/* 0x21d0 */ 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21d0 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70,
/* 0x21e0 */ 48, 48, 48, 48, 48, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, /* 0x21e0 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
/* 0x21f0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x21f0 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2200 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x2200 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2210 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, /* 0x2210 */ 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52,
/* 0x2220 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2220 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73,
/* 0x2230 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x2230 */ 78, 90,117, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2240 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, /* 0x2240 */ 48, 48, 48, 48, 54,102, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x2250 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, /* 0x2250 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x2260 */ 76, 70, 77, 65, 73, 78, 90,117, 43, 48,120, 48, 48, 48, 48, 48, /* 0x2260 */ 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 54,102, 10, 10, 82, 69, 76, /* 0x2270 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x2280 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2280 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x2290 */ 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, /* 0x2290 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,
/* 0x22a0 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, /* 0x22a0 */ 101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x22b0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x22b0 */ 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48,
/* 0x22c0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10,
/* 0x22d0 */ 48, 48, 48, 48, 97,101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, /* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98,
/* 0x22e0 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x22e0 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32,
/* 0x22f0 */ 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22f0 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,
/* 0x2300 */ 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2300 */ 102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10,
/* 0x2310 */ 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x2310 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x2320 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2320 */ 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10,
/* 0x2330 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102, /* 0x2330 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2340 */ 102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2340 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2350 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, /* 0x2350 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2360 */ 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, /* 0x2360 */ 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82, 95, 88, 56, 54, 95,
/* 0x2370 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2370 */ 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95,
/* 0x2380 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2380 */ 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2390 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82, /* 0x2390 */ 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23a0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, /* 0x23a0 */ 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54,
/* 0x23b0 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, /* 0x23b0 */ 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
/* 0x23c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, /* 0x23c0 */ 73, 78, 89, 43, 48,120,102,102,102,102,102,102,102,102,102,102,
/* 0x23d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, /* 0x23d0 */ 102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x23e0 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, /* 0x23e0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x23f0 */ 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102, /* 0x23f0 */ 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x2400 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, /* 0x2400 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x2410 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2410 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x2420 */ 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, /* 0x2420 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
/* 0x2430 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, /* 0x2430 */ 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x2440 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2440 */ 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48,
/* 0x2450 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10,
/* 0x2460 */ 48, 48, 48, 48, 56, 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, /* 0x2460 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 50,
/* 0x2470 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x2470 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32,
/* 0x2480 */ 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2480 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,
/* 0x2490 */ 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2490 */ 102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10,
/* 0x24a0 */ 48, 48, 48, 53, 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x24a0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x24b0 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x24b0 */ 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70,
/* 0x24c0 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102, /* 0x24c0 */ 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x24d0 */ 102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x24d0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x24e0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, /* 0x24e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x24f0 */ 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x24f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82,
/* 0x2500 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2500 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
/* 0x2510 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2510 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48,
/* 0x2520 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2520 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10,
/* 0x2530 */ 48, 48, 54, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, /* 0x2530 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x2540 */ 50, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, /* 0x2540 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2550 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2550 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32,
/* 0x2560 */ 48, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2560 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2570 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, /* 0x2570 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
/* 0x2580 */ 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x2580 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 88,
/* 0x2590 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2590 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69,
/* 0x25a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x25a0 */ 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,102,102,
/* 0x25b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, /* 0x25b0 */ 102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79,
/* 0x25c0 */ 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, /* 0x25c0 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x25d0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102, /* 0x25d0 */ 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90,117, 93, 58, 10,
/* 0x25e0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, /* 0x25e0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x25f0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x25f0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2600 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, /* 0x2600 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2610 */ 90,117, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, /* 0x2610 */ 48, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 88, 56, 54, 95,
/* 0x2620 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2620 */ 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85,
/* 0x2630 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2630 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2640 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, /* 0x2640 */ 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 83, 32, 32,
/* 0x2650 */ 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, /* 0x2650 */ 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2660 */ 32, 74, 77, 80, 85, 10, 48, 48, 48, 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 */ 48, 48, 48, 48, 48, 55, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, /* 0x2670 */ 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77,
/* 0x2680 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, /* 0x2680 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55,
/* 0x2690 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 32, 82, /* 0x2690 */ 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x26a0 */ 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 83, 32, 32, 32, 32, 32, /* 0x26a0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48,
/* 0x26b0 */ 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x26b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10,
/* 0x26c0 */ 48, 48, 48, 48, 49, 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, /* 0x26c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 57,
/* 0x26d0 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, /* 0x26d0 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32,
/* 0x26e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 53, 32, 82, /* 0x26e0 */ 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10, 48, 48, 48, 48, 48,
/* 0x26f0 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, /* 0x26f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 57, 32, 82, 95, 88, 56,
/* 0x2700 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, /* 0x2700 */ 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76,
/* 0x2710 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10, 48, 48, 48, /* 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, 48, 48, 48, 55, 57, 32, 82, 95, /* 0x2720 */ 48, 48, 48, 48, 48, 48, 48, 48,100, 10
/* 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
}; };
+105 -106
View File
@@ -1,5 +1,5 @@
/* amd64-linux.elf-fold.h /* 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. 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_SIZE 1920
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x0aead9dc #define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0xc4cbd98b
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0xeee592b2 #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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, 91, /* 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, 89, 80, /* 0x0190 */ 4, 0, 0, 90, 72,129,196, 0, 8, 0, 0, 94, 95, 89, 80,106,
/* 0x01a0 */ 106, 11, 88, 65,255, 39,176, 11,235, 13,176, 10,235, 9,176, 12, /* 0x01a0 */ 11, 88, 65,255, 39,176, 11,235, 13,176, 10,235, 9,176, 12,235,
/* 0x01b0 */ 235, 5,176, 9, 73,137,202, 15,182,192, 15, 5, 72, 61, 0,240, /* 0x01b0 */ 5,176, 9, 73,137,202, 15,182,192, 15, 5, 72, 61, 0,240,255,
/* 0x01c0 */ 255,255,114, 4, 72,131,200,255,195,176, 0,235,234,176, 2,235, /* 0x01c0 */ 255,114, 4, 72,131,200,255,195,176, 0,235,234,176, 2,235,230,
/* 0x01d0 */ 230,176, 3,235,226,176, 60,235,222, 0, 0, 0, 81, 72, 57, 23, /* 0x01d0 */ 176, 3,235,226,176, 60,235,222, 81, 72, 57, 23, 76,139, 71, 8,
/* 0x01e0 */ 76,139, 71, 8, 72,141, 74,255,115, 10,191,127, 0, 0, 0,232, /* 0x01e0 */ 72,141, 74,255,115, 10,191,127, 0, 0, 0,232,228,255,255,255,
/* 0x01f0 */ 225,255,255,255, 72,131,249,255,116, 17, 65, 15,182, 0, 72,255, /* 0x01f0 */ 72,131,249,255,116, 17, 65, 15,182, 0, 72,255,201, 73,255,192,
/* 0x0200 */ 201, 73,255,192,136, 6, 72,255,198,235,233, 72, 1, 87, 8, 72, /* 0x0200 */ 136, 6, 72,255,198,235,233, 72, 1, 87, 8, 72, 41, 23, 88,195,
/* 0x0210 */ 41, 23, 88,195, 65, 85, 73,137,213, 65, 84, 73,137,204, 85, 72, /* 0x0210 */ 65, 85, 73,137,213, 65, 84, 73,137,204, 85, 72,137,253, 83, 72,
/* 0x0220 */ 137,253, 83, 72,137,243, 72,131,236, 40, 72,131, 62, 0, 15,132, /* 0x0220 */ 137,243, 72,131,236, 40, 72,131, 62, 0, 15,132,226, 0, 0, 0,
/* 0x0230 */ 226, 0, 0, 0, 72,141,116, 36, 16,186, 12, 0, 0, 0, 72,137, /* 0x0230 */ 72,141,116, 36, 16,186, 12, 0, 0, 0, 72,137,239,232,150,255,
/* 0x0240 */ 239,232,150,255,255,255,139, 84, 36, 16,139,116, 36, 20,133,210, /* 0x0240 */ 255,255,139, 84, 36, 16,139,116, 36, 20,133,210,117, 21,129,254,
/* 0x0250 */ 117, 21,129,254, 85, 80, 88, 33,117, 17, 72,131,125, 0, 0, 15, /* 0x0250 */ 85, 80, 88, 33,117, 17, 72,131,125, 0, 0, 15,132,177, 0, 0,
/* 0x0260 */ 132,177, 0, 0, 0,235, 4,133,246,117, 10,191,127, 0, 0, 0, /* 0x0260 */ 0,235, 4,133,246,117, 10,191,127, 0, 0, 0,232, 99,255,255,
/* 0x0270 */ 232, 96,255,255,255, 57,214,119,242,137,208, 72, 59, 3,119,235, /* 0x0270 */ 255, 57,214,119,242,137,208, 72, 59, 3,119,235, 57,214, 72,139,
/* 0x0280 */ 57,214, 72,139, 67, 8,115,104,137, 84, 36, 12, 72,139,125, 8, /* 0x0280 */ 67, 8,115,104,137, 84, 36, 12, 72,139,125, 8, 72,141, 76, 36,
/* 0x0290 */ 72,141, 76, 36, 12, 68,139, 68, 36, 24, 72,137,194, 65,255,213, /* 0x0290 */ 12, 68,139, 68, 36, 24, 72,137,194, 65,255,213,133,192,117,199,
/* 0x02a0 */ 133,192,117,199,139,116, 36, 12, 59,116, 36, 16,117,189, 15,182, /* 0x02a0 */ 139,116, 36, 12, 59,116, 36, 16,117,189, 15,182, 76, 36, 25,132,
/* 0x02b0 */ 76, 36, 25,132,201, 15,149,194, 49,192, 77,133,228, 15,149,192, /* 0x02b0 */ 201, 15,149,194, 49,192, 77,133,228, 15,149,192,133,194,116, 30,
/* 0x02c0 */ 133,194,116, 30,129,254, 0, 2, 0, 0,119, 7,137,240, 72, 57, /* 0x02c0 */ 129,254, 0, 2, 0, 0,119, 7,137,240, 72, 57, 3,117, 15, 15,
/* 0x02d0 */ 3,117, 15, 15,182, 84, 36, 26, 15,182,201, 72,139,123, 8, 65, /* 0x02d0 */ 182, 84, 36, 26, 15,182,201, 72,139,123, 8, 65,255,212,139, 68,
/* 0x02e0 */ 255,212,139, 68, 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13, /* 0x02e0 */ 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13,137,242, 72,137,
/* 0x02f0 */ 137,242, 72,137,239, 72,137,198,232,223,254,255,255,139, 84, 36, /* 0x02f0 */ 239, 72,137,198,232,223,254,255,255,139, 84, 36, 16, 72,139, 3,
/* 0x0300 */ 16, 72,139, 3, 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137, /* 0x0300 */ 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137, 3,233, 24,255,
/* 0x0310 */ 3,233, 24,255,255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93, /* 0x0310 */ 255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,195, 72,133,255,
/* 0x0320 */ 195, 72,133,255, 73,137,208,116, 41, 72,139, 7,137,241, 72, 57, /* 0x0320 */ 73,137,208,116, 41, 72,139, 7,137,241, 72, 57,200,116, 17, 72,
/* 0x0330 */ 200,116, 17, 72,255,200, 15,148,194, 49,192,133,246, 15,149,192, /* 0x0330 */ 255,200, 15,148,194, 49,192,133,246, 15,149,192,133,194,116, 8,
/* 0x0340 */ 133,194,116, 8, 72,137, 15, 76,137, 71, 8,195, 72,131,199, 16, /* 0x0340 */ 72,137, 15, 76,137, 71, 8,195, 72,131,199, 16,235,215,195, 65,
/* 0x0350 */ 235,215,195, 65, 87,184, 0, 0, 0, 0, 73,137,255, 65, 86, 65, /* 0x0350 */ 87,184, 0, 0, 0, 0, 73,137,255, 65, 86, 65, 85, 65, 84, 73,
/* 0x0360 */ 85, 65, 84, 73,137,252, 85, 83, 72,131,236,104, 76, 3,103, 32, /* 0x0360 */ 137,252, 85, 83, 72,131,236,104, 76, 3,103, 32,102,131,127, 16,
/* 0x0370 */ 102,131,127, 16, 3,137, 84, 36, 60, 15,183, 87, 56, 72,137, 76, /* 0x0370 */ 3,137, 84, 36, 60, 15,183, 87, 56, 72,137, 76, 36, 48,185, 16,
/* 0x0380 */ 36, 48,185, 16, 0, 0, 0, 72,137,116, 36, 64, 76,137, 68, 36, /* 0x0380 */ 0, 0, 0, 72,137,116, 36, 64, 76,137, 68, 36, 40, 76,137, 76,
/* 0x0390 */ 40, 76,137, 76, 36, 32, 15, 68,200, 76,137,230, 72,131,205,255, /* 0x0390 */ 36, 32, 15, 68,200, 76,137,230, 72,131,205,255, 49,219,131,193,
/* 0x03a0 */ 49,219,131,193, 34,255,202,120, 33,131, 62, 1,117, 22, 72,139, /* 0x03a0 */ 34,255,202,120, 33,131, 62, 1,117, 22, 72,139, 70, 16, 72, 57,
/* 0x03b0 */ 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40, 72, 57,195, /* 0x03b0 */ 232, 72, 15, 66,232, 72, 3, 70, 40, 72, 57,195, 72, 15, 66,216,
/* 0x03c0 */ 72, 15, 66,216, 72,131,198, 56,235,219, 72,129,229, 0,240,255, /* 0x03c0 */ 72,131,198, 56,235,219, 72,129,229, 0,240,255,255, 49,210, 69,
/* 0x03d0 */ 255, 49,210, 69, 49,201, 72, 41,235, 65,131,200,255, 72,137,239, /* 0x03d0 */ 49,201, 72, 41,235, 65,131,200,255, 72,137,239, 72,129,195,255,
/* 0x03e0 */ 72,129,195,255, 15, 0, 0, 72,129,227, 0,240,255,255, 72,137, /* 0x03e0 */ 15, 0, 0, 72,129,227, 0,240,255,255, 72,137,222,232,191,253,
/* 0x03f0 */ 222,232,188,253,255,255, 72,141, 20, 24, 72, 41,232,102, 65,131, /* 0x03f0 */ 255,255, 72,141, 20, 24, 72, 41,232,102, 65,131,127, 56, 0, 72,
/* 0x0400 */ 127, 56, 0, 72,137, 68, 36, 24,199, 68, 36, 20, 0, 0, 0, 0, /* 0x0400 */ 137, 68, 36, 24,199, 68, 36, 20, 0, 0, 0, 0, 72,137, 84, 36,
/* 0x0410 */ 72,137, 84, 36, 72, 15,132,155, 1, 0, 0, 72,131,124, 36, 64, /* 0x0410 */ 72, 15,132,155, 1, 0, 0, 72,131,124, 36, 64, 0,116, 37, 65,
/* 0x0420 */ 0,116, 37, 65,131, 60, 36, 6,117, 30, 72,139, 84, 36, 24, 73, /* 0x0420 */ 131, 60, 36, 6,117, 30, 72,139, 84, 36, 24, 73, 3, 84, 36, 16,
/* 0x0430 */ 3, 84, 36, 16,190, 3, 0, 0, 0, 72,139,124, 36, 48,232,222, /* 0x0430 */ 190, 3, 0, 0, 0, 72,139,124, 36, 48,232,222,254,255,255,233,
/* 0x0440 */ 254,255,255,233, 87, 1, 0, 0, 65,131, 60, 36, 1, 15,133, 76, /* 0x0440 */ 87, 1, 0, 0, 65,131, 60, 36, 1, 15,133, 76, 1, 0, 0, 72,
/* 0x0450 */ 1, 0, 0, 72,139, 68, 36, 24, 73, 3, 68, 36, 16, 65,190, 64, /* 0x0450 */ 139, 68, 36, 24, 73, 3, 68, 36, 16, 65,190, 64, 98, 81,115, 65,
/* 0x0460 */ 98, 81,115, 65,139, 76, 36, 4, 65,131,200,255, 73,139, 84, 36, /* 0x0460 */ 139, 76, 36, 4, 65,131,200,255, 73,139, 84, 36, 32, 72,137,197,
/* 0x0470 */ 32, 72,137,197, 72,137, 68, 36, 88, 73,139, 68, 36, 40,131,225, /* 0x0470 */ 72,137, 68, 36, 88, 73,139, 68, 36, 40,131,225, 7, 72,137,235,
/* 0x0480 */ 7, 72,137,235, 72,137, 84, 36, 80,193,225, 2,129,227,255, 15, /* 0x0480 */ 72,137, 84, 36, 80,193,225, 2,129,227,255, 15, 0, 0, 72, 1,
/* 0x0490 */ 0, 0, 72, 1,232, 65,211,238, 72, 41,221, 72,137, 68, 36, 8, /* 0x0490 */ 232, 65,211,238, 72, 41,221, 72,137, 68, 36, 8, 73,139, 68, 36,
/* 0x04a0 */ 73,139, 68, 36, 8, 65,131,230, 7, 76,141, 44, 26,185, 50, 0, /* 0x04a0 */ 8, 65,131,230, 7, 76,141, 44, 26,185, 50, 0, 0, 0, 72, 41,
/* 0x04b0 */ 0, 0, 72, 41,216, 72,131,124, 36, 64, 0,117, 7, 68,139, 68, /* 0x04b0 */ 216, 72,131,124, 36, 64, 0,117, 7, 68,139, 68, 36, 60,177, 18,
/* 0x04c0 */ 36, 60,177, 18, 68,137,242, 73,137,193, 76,137,238,131,202, 2, /* 0x04c0 */ 68,137,242, 73,137,193, 76,137,238,131,202, 2, 72,131,124, 36,
/* 0x04d0 */ 72,131,124, 36, 64, 0, 72,137,239, 65, 15, 68,214,232,208,252, /* 0x04d0 */ 64, 0, 72,137,239, 65, 15, 68,214,232,211,252,255,255, 72, 57,
/* 0x04e0 */ 255,255, 72, 57,197,117,121, 72,131,124, 36, 64, 0,116, 25, 72, /* 0x04e0 */ 197,117,121, 72,131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32,
/* 0x04f0 */ 139, 76, 36, 32, 72,139, 84, 36, 40, 72,141,116, 36, 80, 72,139, /* 0x04f0 */ 72,139, 84, 36, 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232,
/* 0x0500 */ 124, 36, 64,232, 12,253,255,255, 76,137,235, 72,247,219,129,227, /* 0x0500 */ 12,253,255,255, 76,137,235, 72,247,219,129,227,255, 15, 0, 0,
/* 0x0510 */ 255, 15, 0, 0, 65,246,198, 2,116, 13, 74,141,124, 45, 0, 49, /* 0x0510 */ 65,246,198, 2,116, 13, 74,141,124, 45, 0, 49,192, 72,137,217,
/* 0x0520 */ 192, 72,137,217,252,243,170, 72,131,124, 36, 64, 0,116, 59, 73, /* 0x0520 */ 252,243,170, 72,131,124, 36, 64, 0,116, 59, 73,131,124, 36, 8,
/* 0x0530 */ 131,124, 36, 8, 0,117, 23, 72,139,124, 36, 48, 72,141, 85, 12, /* 0x0530 */ 0,117, 23, 72,139,124, 36, 48, 72,141, 85, 12,199, 69, 12, 15,
/* 0x0540 */ 199, 69, 12, 15, 5,195,144, 49,246,232,211,253,255,255, 68,137, /* 0x0540 */ 5,195,144, 49,246,232,211,253,255,255, 68,137,242, 76,137,238,
/* 0x0550 */ 242, 76,137,238, 72,137,239,232, 78,252,255,255,133,192,116, 10, /* 0x0550 */ 72,137,239,232, 81,252,255,255,133,192,116, 10,191,127, 0, 0,
/* 0x0560 */ 191,127, 0, 0, 0,232,107,252,255,255, 73,141, 68, 29, 0, 72, /* 0x0560 */ 0,232,110,252,255,255, 73,141, 68, 29, 0, 72, 1,197, 72, 59,
/* 0x0570 */ 1,197, 72, 59,108, 36, 8,115, 38, 72, 41,108, 36, 8, 69, 49, /* 0x0570 */ 108, 36, 8,115, 38, 72, 41,108, 36, 8, 69, 49,201, 65,131,200,
/* 0x0580 */ 201, 65,131,200,255, 72,139,116, 36, 8,185, 50, 0, 0, 0, 68, /* 0x0580 */ 255, 72,139,116, 36, 8,185, 50, 0, 0, 0, 68,137,242, 72,137,
/* 0x0590 */ 137,242, 72,137,239,232, 24,252,255,255, 72, 57,197,117,193,255, /* 0x0590 */ 239,232, 27,252,255,255, 72, 57,197,117,193,255, 68, 36, 20, 65,
/* 0x05a0 */ 68, 36, 20, 65, 15,183, 71, 56, 73,131,196, 56, 57, 68, 36, 20, /* 0x05a0 */ 15,183, 71, 56, 73,131,196, 56, 57, 68, 36, 20, 15,140,101,254,
/* 0x05b0 */ 15,140,101,254,255,255, 72,131,188, 36,160, 0, 0, 0, 0,116, /* 0x05b0 */ 255,255, 72,131,188, 36,160, 0, 0, 0, 0,116, 16, 72,139, 68,
/* 0x05c0 */ 16, 72,139, 68, 36, 24, 72,139,148, 36,160, 0, 0, 0, 72,137, /* 0x05c0 */ 36, 24, 72,139,148, 36,160, 0, 0, 0, 72,137, 2, 73,139, 87,
/* 0x05d0 */ 2, 73,139, 87, 24, 72, 1, 84, 36, 24, 72,139, 68, 36, 24, 72, /* 0x05d0 */ 24, 72, 1, 84, 36, 24, 72,139, 68, 36, 24, 72,131,196,104, 91,
/* 0x05e0 */ 131,196,104, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 65, 87, /* 0x05e0 */ 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 65, 87, 77,137,207, 65,
/* 0x05f0 */ 77,137,207, 65, 86, 65, 85, 77,137,197, 65, 84, 73,137,212, 85, /* 0x05f0 */ 86, 65, 85, 77,137,197, 65, 84, 73,137,212, 85, 72,141,106, 64,
/* 0x0600 */ 72,141,106, 64, 83, 72,137,203, 49,201, 72,131,236, 56,139, 7, /* 0x0600 */ 83, 72,137,203, 49,201, 72,131,236, 56,139, 7, 72,137, 52, 36,
/* 0x0610 */ 72,137, 52, 36, 72,137,116, 36, 16, 72,141,116, 36, 32, 72,137, /* 0x0610 */ 72,137,116, 36, 16, 72,141,116, 36, 32, 72,137, 84, 36, 40, 72,
/* 0x0620 */ 84, 36, 40, 72,137,124, 36, 8, 76,137,194, 72,137,124, 36, 24, /* 0x0620 */ 137,124, 36, 8, 76,137,194, 72,137,124, 36, 24, 72,137,231, 72,
/* 0x0630 */ 72,137,231, 72,137, 68, 36, 32,232,215,251,255,255, 72,139, 85, /* 0x0630 */ 137, 68, 36, 32,232,215,251,255,255, 72,139, 85, 16,190, 3, 0,
/* 0x0640 */ 16,190, 3, 0, 0, 0, 72,137,223, 72,131,194, 64,232,207,252, /* 0x0640 */ 0, 0, 72,137,223, 72,131,194, 64,232,207,252,255,255, 73, 15,
/* 0x0650 */ 255,255, 73, 15,183, 84, 36, 56,190, 5, 0, 0, 0, 72,137,223, /* 0x0650 */ 183, 84, 36, 56,190, 5, 0, 0, 0, 72,137,223,232,188,252,255,
/* 0x0660 */ 232,188,252,255,255, 69, 15,183,116, 36, 16, 65,131,254, 3,117, /* 0x0660 */ 255, 69, 15,183,116, 36, 16, 65,131,254, 3,117, 62, 72,139, 84,
/* 0x0670 */ 62, 72,139, 84, 36,112, 73, 3, 84, 36, 24,190, 9, 0, 0, 0, /* 0x0670 */ 36,112, 73, 3, 84, 36, 24,190, 9, 0, 0, 0,102, 65,199, 68,
/* 0x0680 */ 102, 65,199, 68, 36, 16, 2, 0, 72,137,223,232,145,252,255,255, /* 0x0680 */ 36, 16, 2, 0, 72,137,223,232,145,252,255,255, 65, 15,183, 68,
/* 0x0690 */ 65, 15,183, 68, 36, 56,133,192,116, 21, 72,139, 84, 36,112, 72, /* 0x0690 */ 36, 56,133,192,116, 21, 72,139, 84, 36,112, 72, 1, 85, 16, 72,
/* 0x06a0 */ 1, 85, 16, 72, 1, 85, 24, 72,131,197, 56,255,200,117,240, 65, /* 0x06a0 */ 1, 85, 24, 72,131,197, 56,255,200,117,240, 65, 83, 77,137,249,
/* 0x06b0 */ 83, 77,137,249, 77,137,232, 49,210, 72,137,217, 72,141, 68, 36, /* 0x06b0 */ 77,137,232, 49,210, 72,137,217, 72,141, 68, 36,120, 72,141,116,
/* 0x06c0 */ 120, 72,141,116, 36, 24, 76,137,231, 80,232,132,252,255,255, 65, /* 0x06c0 */ 36, 24, 76,137,231, 80,232,132,252,255,255, 65, 89, 65,131,254,
/* 0x06d0 */ 89, 65,131,254, 3, 73,137,197, 65, 90,116, 16, 72,137,194,190, /* 0x06d0 */ 3, 73,137,197, 65, 90,116, 16, 72,137,194,190, 9, 0, 0, 0,
/* 0x06e0 */ 9, 0, 0, 0, 72,137,223,232, 53,252,255,255, 69, 49,246,102, /* 0x06e0 */ 72,137,223,232, 53,252,255,255, 69, 49,246,102, 65,131,124, 36,
/* 0x06f0 */ 65,131,124, 36, 56, 0, 73,141,108, 36, 64,116,117,131,125, 0, /* 0x06f0 */ 56, 0, 73,141,108, 36, 64,116,117,131,125, 0, 3,117, 93, 72,
/* 0x0700 */ 3,117, 93, 72,139,124, 36,112, 72, 3,125, 16, 49,210, 49,246, /* 0x0700 */ 139,124, 36,112, 72, 3,125, 16, 49,210, 49,246,232,187,250,255,
/* 0x0710 */ 232,184,250,255,255,133,192,137,195,120, 23,186, 0, 4, 0, 0, /* 0x0710 */ 255,133,192,137,195,120, 23,186, 0, 4, 0, 0, 76,137,230,137,
/* 0x0720 */ 76,137,230,137,199,232,159,250,255,255, 72, 61, 0, 4, 0, 0, /* 0x0720 */ 199,232,162,250,255,255, 72, 61, 0, 4, 0, 0,116, 10,191,127,
/* 0x0730 */ 116, 10,191,127, 0, 0, 0,232,153,250,255,255, 65, 80, 49,246, /* 0x0730 */ 0, 0, 0,232,156,250,255,255, 65, 80, 49,246, 69, 49,201, 69,
/* 0x0740 */ 69, 49,201, 69, 49,192, 49,201,106, 0,137,218, 76,137,231,232, /* 0x0740 */ 49,192, 49,201,106, 0,137,218, 76,137,231,232,255,251,255,255,
/* 0x0750 */ 255,251,255,255,137,223, 73,137,197,232,115,250,255,255, 94, 95, /* 0x0750 */ 137,223, 73,137,197,232,118,250,255,255, 94, 95, 65, 15,183, 68,
/* 0x0760 */ 65, 15,183, 68, 36, 56, 65,255,198, 72,131,197, 56, 65, 57,198, /* 0x0760 */ 36, 56, 65,255,198, 72,131,197, 56, 65, 57,198,114,139, 72,131,
/* 0x0770 */ 114,139, 72,131,196, 56, 76,137,232, 91, 93, 65, 92, 65, 93, 65, /* 0x0770 */ 196, 56, 76,137,232, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195
/* 0x0780 */ 94, 65, 95,195
}; };
+7 -8
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. a R_X86_64_32S instead of R_X86_64_32 relocation type.
Avoid that until tested. Avoid that until tested.
*/ */
.byte 0x68; .int JMPU // push $ JMPU (R_X86_64_32)
push %rax // ADRU for unmap in fold; updated later push %rax // ADRU for unmap in fold; updated later
.byte 0x68; .int LENU // push $ LENU (R_X86_64_32) .byte 0x68; .int LENU // push $ LENU (R_X86_64_32)
#else #else
push $ JMPU // for unmap in fold
push %rax // ADRU for unmap in fold; updated later push %rax // ADRU for unmap in fold; updated later
push $ LENU // for unmap in fold push $ LENU // for unmap in fold
#endif #endif
@@ -271,26 +269,27 @@ unfold: // enter: %rbp= &decompress === &ret_main
push $ SYS_mmap; pop %rax push $ SYS_mmap; pop %rax
syscall // %rax= result; trashes %rcx,%r11 only syscall // %rax= result; trashes %rcx,%r11 only
cmpq %rax,%rdi; jne msg_SELinux 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 3*8(%rsp),%rsi // ADRU src for copy
movq %rdi,%rdx // ADRM push %rdi; pop %rdx // ADRM
subq %rsi,%rdx // (ADRM - ADRU) == relocation amount subq %rsi,%rdx // (ADRM - ADRU) == relocation amount
addq %rdx,%rbp // update &decompress addq %rdx,%rbp // update &decompress
addq %rdx,1*8(%rsp) // update ADRX addq %rdx,1*8(%rsp) // update ADRX
addq %rdx,3*8(%rsp) // update ADRU 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 subq %rsi,%rcx // byte length
shrq $3,%rcx // qwords to copy shrq $3,%rcx // qwords to copy
cld cld
rep; movsq rep; movsq
xchgq %rax,%rdi xchgq %rax,%rdi
L80:
/* Decompress the folded part of this stub, then execute it. */ /* Decompress the folded part of this stub, then execute it. */
movq %rbx,%arg2 // &b_info push %rbx; pop %arg2 // &b_info
push %rax // ret_addr after decompression push %rax // ret_addr after decompression
xchgq %rax,%arg3 // %arg3= dst for unfolding push %rax; pop %arg3 // dst for unfolding
lodsl; push %rax // allocate slot on stack lodsl; push %rax // allocate slot on stack
movq %rsp,%arg4 // &len_dst ==> used by lzma for EOF push %rsp; pop %arg4 // &len_dst ==> used by lzma for EOF
lodsl; xchgl %eax,%arg1l // sz_cpr XXX: 4GB lodsl; xchgl %eax,%arg1l // sz_cpr XXX: 4GB
lodsl; movzbl %al,%arg5l // b_method lodsl; movzbl %al,%arg5l // b_method
xchg %arg1,%arg2 xchg %arg1,%arg2
+3 -4
View File
@@ -59,7 +59,7 @@ __NR_readlink= 89
/* In: /* In:
cld cld
%rbp= &decompress %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: fold_begin:
call L90 # push &L90a call L90 # push &L90a
@@ -72,7 +72,7 @@ L90:
movq %rsp,%rsi movq %rsp,%rsi
leaq -8 -4 -4 -4096(%rsi),%rdi # 8:ptr, 4:" =", 4:align, 4096:buffer leaq -8 -4 -4 -4096(%rsi),%rdi # 8:ptr, 4:" =", 4:align, 4096:buffer
movq %rdi,%rsp 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: 0:
cmpq $0,(%rsi); movsq; jne 0b # move past argv cmpq $0,(%rsi); movsq; jne 0b # move past argv
movq %rdi,%arg3 # remember &new_env[0] movq %rdi,%arg3 # remember &new_env[0]
@@ -97,7 +97,7 @@ L90:
pop %arg4 # &Elf64_auxv pop %arg4 # &Elf64_auxv
pop %arg2 # LENX pop %arg2 # LENX
pop %arg1 # ADRX pop %arg1 # ADRX
mov 3*8(%rsp),%rax // slide mov 2*8(%rsp),%rax // slide
subq $ OVERHEAD,%rsp subq $ OVERHEAD,%rsp
movq %rsp,%arg3 # &ELf64_Ehdr temporary space movq %rsp,%arg3 # &ELf64_Ehdr temporary space
@@ -112,7 +112,6 @@ L90:
addq $OVERHEAD,%rsp addq $OVERHEAD,%rsp
pop %arg2 # LENU pop %arg2 # LENU
pop %arg1 # ADRU pop %arg1 # ADRU
pop %rcx # JMPU [unused]
pop %rcx # slide [unused] pop %rcx # slide [unused]
push %rax # &entry push %rax # &entry
push $ __NR_munmap; pop %rax push $ __NR_munmap; pop %rax
+4 -6
View File
@@ -30,7 +30,6 @@ SYMBOL TABLE:
0000000000000000 l d LZMA_DEC20 0000000000000000 LZMA_DEC20 0000000000000000 l d LZMA_DEC20 0000000000000000 LZMA_DEC20
0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL 0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL
0000000000000000 g ELFMAINX 0000000000000000 _start 0000000000000000 g ELFMAINX 0000000000000000 _start
0000000000000000 *UND* 0000000000000000 JMPU
0000000000000000 *UND* 0000000000000000 LENU 0000000000000000 *UND* 0000000000000000 LENU
0000000000000000 *UND* 0000000000000000 ADRM 0000000000000000 *UND* 0000000000000000 ADRM
0000000000000000 *UND* 0000000000000000 LENM 0000000000000000 *UND* 0000000000000000 LENM
@@ -65,10 +64,9 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZu]: RELOCATION RECORDS FOR [ELFMAINZu]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000001 R_X86_64_32 JMPU 0000000000000002 R_X86_64_32 LENU
0000000000000007 R_X86_64_32 LENU 000000000000000c R_X86_64_32S ADRM
0000000000000011 R_X86_64_32S ADRM 0000000000000014 R_X86_64_32 LENM
0000000000000019 R_X86_64_32 LENM
0000000000000075 R_X86_64_PC32 ELFMAINZ+0x000000000000000d 0000000000000075 R_X86_64_PC32 ELFMAINZ+0x000000000000000d
0000000000000079 R_X86_64_32 O_BINFO 0000000000000079 R_X86_64_32 O_BINFO
000000000000002e R_X86_64_PC32 ELFMAINY+0x000000000000000d 0000000000000029 R_X86_64_PC32 ELFMAINY+0x000000000000000d
+18 -19
View File
@@ -8,31 +8,30 @@ Linker script and memory map
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0x6c8 .text 0x00000000001000bc 0x6c4
*(.text) *(.text)
.text 0x00000000001000bc 0x11d tmp/amd64-linux.elf-fold.o .text 0x00000000001000bc 0x11c tmp/amd64-linux.elf-fold.o
0x00000000001001a6 munmap 0x00000000001001a5 munmap
0x00000000001001b2 mmap 0x00000000001001b1 mmap
0x00000000001001c9 read 0x00000000001001c8 read
0x00000000001001d5 exit 0x00000000001001d4 exit
0x00000000001001ae brk 0x00000000001001ad brk
0x00000000001001cd open 0x00000000001001cc open
0x00000000001001aa mprotect 0x00000000001001a9 mprotect
0x00000000001001d1 close 0x00000000001001d0 close
*fill* 0x00000000001001d9 0x3 00 .text 0x00000000001001d8 0x5a8 tmp/amd64-linux.elf-main.o
.text 0x00000000001001dc 0x5a8 tmp/amd64-linux.elf-main.o 0x00000000001005ea upx_main
0x00000000001005ee upx_main
*(.data) *(.data)
.data 0x0000000000100784 0x0 tmp/amd64-linux.elf-fold.o .data 0x0000000000100780 0x0 tmp/amd64-linux.elf-fold.o
.data 0x0000000000100784 0x0 tmp/amd64-linux.elf-main.o .data 0x0000000000100780 0x0 tmp/amd64-linux.elf-main.o
.data .data
.bss 0x0000000000100784 0x0 .bss 0x0000000000100780 0x0
.bss 0x0000000000100784 0x0 tmp/amd64-linux.elf-fold.o .bss 0x0000000000100780 0x0 tmp/amd64-linux.elf-fold.o
.bss 0x0000000000100784 0x0 tmp/amd64-linux.elf-main.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 .rela.text 0x0000000000000000 0x0 tmp/amd64-linux.elf-fold.o
LOAD tmp/amd64-linux.elf-fold.o LOAD tmp/amd64-linux.elf-fold.o
LOAD tmp/amd64-linux.elf-main.o LOAD tmp/amd64-linux.elf-main.o