Skip to content

Commit

Permalink
Decompression escape hatch for ELF can require a new page.
Browse files Browse the repository at this point in the history
If not enough room on last page of .text, and ElfXX_Ehdr not PF_X,
then the escape hatch must use a new page.
upx#308
	modified:   ../.github/travis_testsuite_1-expected_sha256sums.sh
	modified:   stub/src/amd64-linux.elf-main.c
	modified:   stub/src/i386-linux.elf-main.c
    Plus stub/*-linux.elf-fold.h and stub/tmp/*-linux.elf-fold.map
  • Loading branch information
jreiser committed Jan 19, 2020
1 parent fdf2edd commit 936013f
Show file tree
Hide file tree
Showing 25 changed files with 1,494 additions and 1,366 deletions.
197 changes: 99 additions & 98 deletions .github/travis_testsuite_1-expected_sha256sums.sh

Large diffs are not rendered by default.

156 changes: 81 additions & 75 deletions src/stub/amd64-linux.elf-fold.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* amd64-linux.elf-fold.h
created from amd64-linux.elf-fold.bin, 2159 (0x86f) bytes
created from amd64-linux.elf-fold.bin, 2251 (0x8cb) bytes
This file is part of the UPX executable compressor.
Expand Down Expand Up @@ -31,20 +31,20 @@
*/


#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2159
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0xcb832856
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x2624f091
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2251
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x50e34b76
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0xba67b7de

unsigned char stub_amd64_linux_elf_fold[2159] = {
unsigned char stub_amd64_linux_elf_fold[2251] = {
/* 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 */ 111, 8, 0, 0, 0, 0, 0, 0,112, 8, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 203, 8, 0, 0, 0, 0, 0, 0,204, 8, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 111, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 203, 8, 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, 74, 0, 0,
Expand All @@ -65,7 +65,7 @@ unsigned char stub_amd64_linux_elf_fold[2159] = {
/* 0x01a0 */ 239, 8, 73,141,119,248, 72,193,233, 3,243, 72,165, 72,141,103,
/* 0x01b0 */ 8,252, 75,141, 12, 38,139, 67,252,131,224, 1, 72, 1,193, 65,
/* 0x01c0 */ 89, 94, 95, 88, 72,129,236, 0, 8, 0, 0, 72,137,226, 80, 73,
/* 0x01d0 */ 137,232,232, 80, 5, 0, 0, 72,129,196, 8, 8, 0, 0, 72,137,
/* 0x01d0 */ 137,232,232,172, 5, 0, 0, 72,129,196, 8, 8, 0, 0, 72,137,
/* 0x01e0 */ 68, 36, 32, 91, 69, 41,201, 65,137,216,106, 2, 65, 90,106, 1,
/* 0x01f0 */ 90,190, 0, 16, 0, 0,106, 0, 95,106, 9, 88, 15, 5,137,223,
/* 0x0200 */ 106, 3, 88, 15, 5, 95, 94,106, 11, 88, 65,255,102,248,176, 9,
Expand Down Expand Up @@ -97,78 +97,84 @@ unsigned char stub_amd64_linux_elf_fold[2159] = {
/* 0x03a0 */ 139, 15, 65,137,240, 76, 57,193,116, 18, 72,131,249, 1, 15,148,
/* 0x03b0 */ 194, 49,192,133,246, 15,149,192,133,194,116, 8, 76,137, 7, 76,
/* 0x03c0 */ 137, 79, 8,195, 72,133,201,116, 6, 72,131,199, 16,235,208,195,
/* 0x03d0 */ 65, 87,184, 0, 0, 0, 0, 65, 86, 73,137,254, 65, 85, 65, 84,
/* 0x03e0 */ 73,137,252, 85, 83, 72,131,236, 88, 76, 3,103, 32,102,131,127,
/* 0x03f0 */ 16, 3, 72,137, 76, 36, 32,185, 16, 0, 0, 0, 76,137, 68, 36,
/* 0x0400 */ 24, 72,137,116, 36, 48,137, 84, 36, 44, 76,137, 76, 36, 16, 15,
/* 0x0410 */ 183, 87, 56, 15, 68,200, 72,139,132, 36,144, 0, 0, 0, 76,137,
/* 0x0420 */ 230, 72,131,205,255, 49,219, 49,255,131,193, 34, 76,139, 0,255,
/* 0x03d0 */ 65, 87,184, 0, 0, 0, 0, 73,137,255, 65, 86, 65, 85, 73,137,
/* 0x03e0 */ 253, 65, 84, 85, 83, 72,131,236,104, 76, 3,111, 32,102,131,127,
/* 0x03f0 */ 16, 3, 72,137, 76, 36, 48,185, 16, 0, 0, 0, 76,137, 68, 36,
/* 0x0400 */ 40, 72,137,116, 36, 64,137, 84, 36, 60, 76,137, 76, 36, 32, 15,
/* 0x0410 */ 183, 87, 56, 15, 68,200, 72,139,132, 36,160, 0, 0, 0, 76,137,
/* 0x0420 */ 238, 72,131,205,255, 49,219, 49,255,131,193, 34, 76,139, 0,255,
/* 0x0430 */ 202,120, 33,131, 62, 1,117, 22, 72,139, 70, 16, 72, 57,232, 72,
/* 0x0440 */ 15, 66,232, 72, 3, 70, 40, 72, 57,195, 72, 15, 66,216, 72,131,
/* 0x0450 */ 198, 56,235,219, 72,129,229, 0,240,255,255, 72, 41,235, 72,129,
/* 0x0460 */ 195,255, 15, 0, 0, 72,129,227, 0,240,255,255,246,193, 16,116,
/* 0x0470 */ 5, 72,137,239,235, 19, 72,133,237,117, 14,137,200, 76,137,199,
/* 0x0480 */ 131,200, 16, 77,133,192, 15, 69,200, 69, 49,201, 65,131,200,255,
/* 0x0490 */ 49,210, 72,137,222,232,116,253,255,255, 72,137,199, 72,141, 4,
/* 0x04a0 */ 3,199, 68, 36, 12, 0, 0, 0, 0, 73,137,253, 73, 41,237,102,
/* 0x04b0 */ 65,131,126, 56, 0, 72,137, 68, 36, 56, 15,132, 70, 2, 0, 0,
/* 0x04c0 */ 72,131,124, 36, 48, 0,116, 35, 65,131, 60, 36, 6,117, 28, 73,
/* 0x04d0 */ 139, 84, 36, 16, 72,139,124, 36, 32,190, 3, 0, 0, 0, 76, 1,
/* 0x04e0 */ 234,232,171,254,255,255,233, 4, 2, 0, 0, 65,131, 60, 36, 1,
/* 0x04f0 */ 15,133,249, 1, 0, 0, 72,131,124, 36, 48, 0,116, 75, 73,131,
/* 0x0500 */ 124, 36, 8, 0,117, 67, 73,139, 84, 36, 16, 72,139,124, 36, 32,
/* 0x0510 */ 190, 3, 0, 0, 0, 76, 1,234, 73, 3, 86, 32,232,112,254,255,
/* 0x0520 */ 255, 73, 15,183, 86, 56, 72,139,124, 36, 32,190, 5, 0, 0, 0,
/* 0x0530 */ 232, 92,254,255,255, 73, 15,183, 86, 54, 72,139,124, 36, 32,190,
/* 0x0540 */ 4, 0, 0, 0,232, 72,254,255,255, 73,139, 68, 36, 16, 65,139,
/* 0x0550 */ 76, 36, 4, 65,131,200,255,199, 68, 36, 8, 64, 98, 81,115, 73,
/* 0x0560 */ 139, 84, 36, 32, 76, 1,232,131,225, 7, 72,137,197, 72,137, 68,
/* 0x0570 */ 36, 72, 73,139, 68, 36, 40, 72,137,235,193,225, 2,211,108, 36,
/* 0x0580 */ 8,129,227,255, 15, 0, 0,131,100, 36, 8, 7, 72,137, 84, 36,
/* 0x0590 */ 64, 72, 1,232, 72, 41,221, 76,141, 60, 26, 72,137, 4, 36,185,
/* 0x05a0 */ 50, 0, 0, 0, 73,139, 68, 36, 8, 72, 41,216, 72,131,124, 36,
/* 0x05b0 */ 48, 0,117, 7, 68,139, 68, 36, 44,177, 18,139, 84, 36, 8, 73,
/* 0x05c0 */ 137,193, 76,137,254, 72,137,239,131,202, 2, 72,131,124, 36, 48,
/* 0x05d0 */ 0, 15, 68, 84, 36, 8,232, 51,252,255,255, 72, 57,197, 15,133,
/* 0x05e0 */ 207, 0, 0, 0, 72,131,124, 36, 48, 0,116, 25, 72,139, 76, 36,
/* 0x05f0 */ 16, 72,139, 84, 36, 24, 72,141,116, 36, 64, 72,139,124, 36, 48,
/* 0x0600 */ 232,123,252,255,255, 76,137,251, 72,247,219,129,227,255, 15, 0,
/* 0x0610 */ 0,246, 68, 36, 8, 2,116, 13, 74,141,124, 61, 0, 49,192, 72,
/* 0x0620 */ 137,217,252,243,170, 72,131,124, 36, 48, 0, 15,132,140, 0, 0,
/* 0x0630 */ 0, 72,184,255,255,255,255, 1, 0, 0, 0, 73, 35, 4, 36, 72,
/* 0x0640 */ 186, 1, 0, 0, 0, 1, 0, 0, 0, 72, 57,208,117, 82, 73,139,
/* 0x0650 */ 84, 36, 40, 73,139,116, 36, 16, 73, 59, 84, 36, 32, 72,141, 4,
/* 0x0660 */ 50, 74,141, 12, 40,117, 14,137,200,247,216, 37,255, 15, 0, 0,
/* 0x0670 */ 131,248, 3,119, 13, 73,131,124, 36, 8, 0, 74,141, 76, 46, 12,
/* 0x0680 */ 117, 30, 72,133,201,199, 1, 15, 5, 90,195,116, 19, 72,139,124,
/* 0x0690 */ 36, 32, 72,137,202, 49,246, 72,131,231,254,232,241,252,255,255,
/* 0x06a0 */ 139, 84, 36, 8, 76,137,254, 72,137,239,232,138,251,255,255,133,
/* 0x06b0 */ 192,116, 10,191,127, 0, 0, 0,232,104,251,255,255, 73,141, 4,
/* 0x06c0 */ 31, 72, 1,197, 72, 59, 44, 36,115, 37, 72, 41, 44, 36,139, 84,
/* 0x06d0 */ 36, 8, 69, 49,201, 72,139, 52, 36, 65,131,200,255,185, 50, 0,
/* 0x06e0 */ 0, 0, 72,137,239,232, 36,251,255,255, 72, 57,197,117,196,255,
/* 0x06f0 */ 68, 36, 12, 65, 15,183, 70, 56, 73,131,196, 56, 57, 68, 36, 12,
/* 0x0700 */ 15,140,186,253,255,255, 72,139,132, 36,144, 0, 0, 0, 76,137,
/* 0x0710 */ 40, 77, 3,110, 24, 72,131,196, 88, 91, 93, 65, 92, 76,137,232,
/* 0x0720 */ 65, 93, 65, 94, 65, 95,195, 65, 87, 65, 86, 73,137,206, 49,201,
/* 0x0730 */ 65, 85, 65, 84, 77,137,204, 85, 72,137,213, 76,141,109, 64, 83,
/* 0x0740 */ 76,137,195, 72,131,236, 72,139, 7, 72,137,124, 36, 24, 72,137,
/* 0x0750 */ 124, 36, 40, 76,141,188, 36,128, 0, 0, 0, 72,137,116, 36, 32,
/* 0x0760 */ 72,141,116, 36, 48, 72,137, 84, 36, 56, 76,137,194, 72,137, 68,
/* 0x0770 */ 36, 48,139, 71, 4, 72,141,124, 36, 16, 72,131,192, 12, 72,137,
/* 0x0780 */ 68, 36, 16,232,248,250,255,255, 65, 83, 77,137,225, 49,210, 73,
/* 0x0790 */ 137,216, 76,137,241, 72,137,239, 72,141,116, 36, 40, 65, 87,232,
/* 0x07a0 */ 44,252,255,255,190, 9, 0, 0, 0, 72,137,194, 76,137,247, 73,
/* 0x07b0 */ 137,196,232,218,251,255,255, 65, 89, 65, 90,102,131,125, 56, 0,
/* 0x07c0 */ 199, 68, 36, 12, 0, 0, 0, 0, 15,132,143, 0, 0, 0, 65,131,
/* 0x07d0 */ 125, 0, 3,117,114, 73,139, 63, 73, 3,125, 16, 49,210, 49,246,
/* 0x07e0 */ 232, 76,250,255,255,133,192,137,195,120, 23,186, 0, 4, 0, 0,
/* 0x07f0 */ 72,137,238,137,199,232, 71,250,255,255, 72, 61, 0, 4, 0, 0,
/* 0x0800 */ 116, 10,191,127, 0, 0, 0,232, 25,250,255,255, 73,199, 7, 0,
/* 0x0810 */ 0, 0, 0, 65, 80, 69, 49,201, 69, 49,192, 49,201, 65, 87,137,
/* 0x0820 */ 218, 49,246, 72,137,239,232,165,251,255,255, 73,139, 23,190, 7,
/* 0x0830 */ 0, 0, 0, 76,137,247, 73,137,196,232, 83,251,255,255,137,223,
/* 0x0840 */ 232,232,249,255,255, 94, 95,255, 68, 36, 12, 15,183, 69, 56, 73,
/* 0x0850 */ 131,197, 56, 57, 68, 36, 12, 15,130,113,255,255,255, 72,131,196,
/* 0x0860 */ 72, 76,137,224, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195
/* 0x04a0 */ 3,199, 68, 36, 28, 0, 0, 0, 0, 73,137,254, 73, 41,238,102,
/* 0x04b0 */ 65,131,127, 56, 0, 72,137, 68, 36, 72, 15,132,162, 2, 0, 0,
/* 0x04c0 */ 72,131,124, 36, 64, 0,116, 34, 65,131,125, 0, 6,117, 27, 73,
/* 0x04d0 */ 139, 85, 16, 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, 1,242,
/* 0x04e0 */ 232,172,254,255,255,233, 97, 2, 0, 0, 65,131,125, 0, 1, 15,
/* 0x04f0 */ 133, 86, 2, 0, 0, 72,131,124, 36, 64, 0,116, 73, 73,131,125,
/* 0x0500 */ 8, 0,117, 66, 73,139, 85, 16, 72,139,124, 36, 48,190, 3, 0,
/* 0x0510 */ 0, 0, 76, 1,242, 73, 3, 87, 32,232,115,254,255,255, 73, 15,
/* 0x0520 */ 183, 87, 56, 72,139,124, 36, 48,190, 5, 0, 0, 0,232, 95,254,
/* 0x0530 */ 255,255, 73, 15,183, 87, 54, 72,139,124, 36, 48,190, 4, 0, 0,
/* 0x0540 */ 0,232, 75,254,255,255, 73,139, 69, 16, 65,139, 77, 4, 65,131,
/* 0x0550 */ 200,255, 73,139, 85, 32,199, 68, 36, 24, 64, 98, 81,115, 76, 1,
/* 0x0560 */ 240,131,225, 7, 73,137,196, 72,137, 68, 36, 88, 73,139, 69, 40,
/* 0x0570 */ 76,137,229,193,225, 2,211,108, 36, 24,129,229,255, 15, 0, 0,
/* 0x0580 */ 131,100, 36, 24, 7, 72,137, 84, 36, 80, 76, 1,224, 72, 1,234,
/* 0x0590 */ 73, 41,236, 72,137, 68, 36, 8,185, 50, 0, 0, 0, 73,139, 69,
/* 0x05a0 */ 8, 72,137, 84, 36, 16, 72, 41,232, 72,131,124, 36, 64, 0,117,
/* 0x05b0 */ 7, 68,139, 68, 36, 60,177, 18,139, 84, 36, 24, 72,139,116, 36,
/* 0x05c0 */ 16, 73,137,193, 76,137,231,131,202, 2, 72,131,124, 36, 64, 0,
/* 0x05d0 */ 15, 68, 84, 36, 24,232, 52,252,255,255, 73, 57,196, 15,133, 37,
/* 0x05e0 */ 1, 0, 0, 72,131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32,
/* 0x05f0 */ 72,139, 84, 36, 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232,
/* 0x0600 */ 124,252,255,255, 72,139,108, 36, 16, 72,247,221,129,229,255, 15,
/* 0x0610 */ 0, 0,246, 68, 36, 24, 2,116, 17, 72,139, 68, 36, 16, 72,137,
/* 0x0620 */ 233,252, 73,141, 60, 4, 49,192,243,170, 72,131,124, 36, 64, 0,
/* 0x0630 */ 15,132,220, 0, 0, 0,199, 68, 36, 4, 0, 0, 0, 0, 72,184,
/* 0x0640 */ 255,255,255,255, 1, 0, 0, 0, 73, 35, 69, 0, 72,186, 1, 0,
/* 0x0650 */ 0, 0, 1, 0, 0, 0, 72, 57,208, 15,133,148, 0, 0, 0, 73,
/* 0x0660 */ 139, 85, 40, 73,139, 77, 16, 73, 59, 85, 32, 72,141, 4, 10, 74,
/* 0x0670 */ 141, 28, 48,117, 14,137,216,247,216, 37,255, 15, 0, 0,131,248,
/* 0x0680 */ 3,119, 57, 73,131,125, 8, 0, 74,141, 92, 49, 12,116, 45, 69,
/* 0x0690 */ 49,201, 65,131,200,255, 49,255,185, 34, 0, 0, 0,186, 3, 0,
/* 0x06a0 */ 0, 0,190, 0, 16, 0, 0,199, 68, 36, 4, 1, 0, 0, 0,232,
/* 0x06b0 */ 90,251,255,255, 72,133,192, 72,137,195,116, 55,131,124, 36, 4,
/* 0x06c0 */ 0,199, 3, 15, 5, 90,195,116, 18,186, 5, 0, 0, 0,190, 4,
/* 0x06d0 */ 0, 0, 0, 72,137,223,232, 94,251,255,255, 72,133,219,116, 19,
/* 0x06e0 */ 72,139,124, 36, 48, 72,137,218, 49,246, 72,131,231,254,232,158,
/* 0x06f0 */ 252,255,255,139, 84, 36, 24, 72,139,116, 36, 16, 76,137,231,232,
/* 0x0700 */ 53,251,255,255,133,192,116, 10,191,127, 0, 0, 0,232, 19,251,
/* 0x0710 */ 255,255, 72,139, 68, 36, 16, 72, 1,232, 73, 1,196, 76, 59,100,
/* 0x0720 */ 36, 8,115, 39, 76, 41,100, 36, 8,139, 84, 36, 24, 69, 49,201,
/* 0x0730 */ 72,139,116, 36, 8, 65,131,200,255,185, 50, 0, 0, 0, 76,137,
/* 0x0740 */ 231,232,200,250,255,255, 73, 57,196,117,189,255, 68, 36, 28, 65,
/* 0x0750 */ 15,183, 71, 56, 73,131,197, 56, 57, 68, 36, 28, 15,140, 94,253,
/* 0x0760 */ 255,255, 72,139,132, 36,160, 0, 0, 0, 76,137, 48, 77, 3,119,
/* 0x0770 */ 24, 72,131,196,104, 91, 93, 65, 92, 65, 93, 76,137,240, 65, 94,
/* 0x0780 */ 65, 95,195, 65, 87, 65, 86, 73,137,206, 49,201, 65, 85, 65, 84,
/* 0x0790 */ 77,137,204, 85, 72,137,213, 76,141,109, 64, 83, 76,137,195, 72,
/* 0x07a0 */ 131,236, 72,139, 7, 72,137,124, 36, 24, 72,137,124, 36, 40, 76,
/* 0x07b0 */ 141,188, 36,128, 0, 0, 0, 72,137,116, 36, 32, 72,141,116, 36,
/* 0x07c0 */ 48, 72,137, 84, 36, 56, 76,137,194, 72,137, 68, 36, 48,139, 71,
/* 0x07d0 */ 4, 72,141,124, 36, 16, 72,131,192, 12, 72,137, 68, 36, 16,232,
/* 0x07e0 */ 156,250,255,255, 65, 83, 77,137,225, 49,210, 73,137,216, 76,137,
/* 0x07f0 */ 241, 72,137,239, 72,141,116, 36, 40, 65, 87,232,208,251,255,255,
/* 0x0800 */ 190, 9, 0, 0, 0, 72,137,194, 76,137,247, 73,137,196,232,126,
/* 0x0810 */ 251,255,255, 65, 89, 65, 90,102,131,125, 56, 0,199, 68, 36, 12,
/* 0x0820 */ 0, 0, 0, 0, 15,132,143, 0, 0, 0, 65,131,125, 0, 3,117,
/* 0x0830 */ 114, 73,139, 63, 73, 3,125, 16, 49,210, 49,246,232,240,249,255,
/* 0x0840 */ 255,133,192,137,195,120, 23,186, 0, 4, 0, 0, 72,137,238,137,
/* 0x0850 */ 199,232,235,249,255,255, 72, 61, 0, 4, 0, 0,116, 10,191,127,
/* 0x0860 */ 0, 0, 0,232,189,249,255,255, 73,199, 7, 0, 0, 0, 0, 65,
/* 0x0870 */ 80, 69, 49,201, 69, 49,192, 49,201, 65, 87,137,218, 49,246, 72,
/* 0x0880 */ 137,239,232, 73,251,255,255, 73,139, 23,190, 7, 0, 0, 0, 76,
/* 0x0890 */ 137,247, 73,137,196,232,247,250,255,255,137,223,232,140,249,255,
/* 0x08a0 */ 255, 94, 95,255, 68, 36, 12, 15,183, 69, 56, 73,131,197, 56, 57,
/* 0x08b0 */ 68, 36, 12, 15,130,113,255,255,255, 72,131,196, 72, 76,137,224,
/* 0x08c0 */ 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195
};
Loading

0 comments on commit 936013f

Please sign in to comment.