Decompression escape hatch for ELF can require a new page.

If not enough room on last page of .text, and ElfXX_Ehdr not PF_X,
then the escape hatch must use a new page.
https://github.com/upx/upx/issues/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
This commit is contained in:
John Reiser
2020-01-19 13:25:55 -08:00
parent fdf2eddc73
commit 936013f60c
25 changed files with 1494 additions and 1366 deletions
+75 -68
View File
@@ -1,5 +1,5 @@
/* armeb.v4a-linux.elf-fold.h
created from armeb.v4a-linux.elf-fold.bin, 2652 (0xa5c) bytes
created from armeb.v4a-linux.elf-fold.bin, 2756 (0xac4) bytes
This file is part of the UPX executable compressor.
@@ -31,17 +31,17 @@
*/
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_SIZE 2652
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0xf22b46e8
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0x292bb231
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_SIZE 2756
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0x2e627849
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0x39f2519d
unsigned char stub_armeb_v4a_linux_elf_fold[2652] = {
unsigned char stub_armeb_v4a_linux_elf_fold[2756] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 2, 0, 40, 0, 0, 0, 1, 0, 0,128,128, 0, 0, 0, 52,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 2, 0, 52, 0, 32, 0, 2, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,128, 0,
/* 0x0040 */ 0, 0,128, 0, 0, 0, 10, 92, 0, 0, 10, 92, 0, 0, 0, 5,
/* 0x0050 */ 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 10, 92, 0, 0, 0, 0,
/* 0x0040 */ 0, 0,128, 0, 0, 0, 10,196, 0, 0, 10,196, 0, 0, 0, 5,
/* 0x0050 */ 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 10,196, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 0, 0, 0, 34,232,189, 31,192,225,160, 16, 13,226, 77,218, 1,
@@ -61,7 +61,7 @@ unsigned char stub_armeb_v4a_linux_elf_fold[2652] = {
/* 0x0160 */ 229,141, 0, 24,229, 49, 32, 4,225, 81, 0, 13,229, 32, 32, 4,
/* 0x0170 */ 26,255,255,251,225,160,208, 0,232,189, 12, 16,226, 77,220, 10,
/* 0x0180 */ 229,154,144, 4,225,160,128, 13,229,154,112, 0,226,143, 96,156,
/* 0x0190 */ 226,137,144, 12,233, 45, 15,248,232,189, 0, 15,235, 0, 1,225,
/* 0x0190 */ 226,137,144, 12,233, 45, 15,248,232,189, 0, 15,235, 0, 1,251,
/* 0x01a0 */ 226,141,208, 20,226,141,220, 10,229,141, 0, 16,228,157, 64, 4,
/* 0x01b0 */ 227,160, 80, 0,233, 45, 0, 48,227,160, 48, 2,227,160, 32, 1,
/* 0x01c0 */ 227,160, 26, 1,227,160, 0, 0,235, 0, 0, 69,232,189, 0, 3,
@@ -121,8 +121,8 @@ unsigned char stub_armeb_v4a_linux_elf_fold[2652] = {
/* 0x0520 */ 229,157, 48, 4,232,148, 0, 6,224,130, 32, 3,224, 99, 16, 1,
/* 0x0530 */ 232,132, 0, 6,229,148, 48, 0,227, 83, 0, 0, 26,255,255,183,
/* 0x0540 */ 226,141,208, 20,232,189,128,240, 33, 88, 80, 85,233, 45, 79,240,
/* 0x0550 */ 225,160,160, 1,225,218,193,176,229,145, 16, 28,225,218,226,188,
/* 0x0560 */ 226, 77,208, 52,227, 92, 0, 2,224,138, 80, 1,229,141, 0, 16,
/* 0x0550 */ 225,160,128, 1,225,216,193,176,229,145, 16, 28,225,216,226,188,
/* 0x0560 */ 226, 77,208, 56,227, 92, 0, 2,224,136, 80, 1,229,141, 0, 16,
/* 0x0570 */ 3,160,192, 16, 19,160,192, 0,226, 78,224, 1,225,160, 16, 5,
/* 0x0580 */ 227,224, 64, 0,227,160, 0, 0,229,141, 32, 12,229,141, 48, 8,
/* 0x0590 */ 234, 0, 0, 13,229,145, 48, 0,227, 83, 0, 1, 26, 0, 0, 8,
@@ -131,75 +131,82 @@ unsigned char stub_armeb_v4a_linux_elf_fold[2652] = {
/* 0x05c0 */ 33,160, 64, 2,226,129, 16, 32,226, 78,224, 1,227, 94, 0, 0,
/* 0x05d0 */ 170,255,255,239,227,196, 78,255,227,196, 64, 15,224,100, 48, 0,
/* 0x05e0 */ 226,131, 62,255,226,131, 48, 15,227,195, 62,255,227,195, 48, 15,
/* 0x05f0 */ 229,141, 48, 36,225,160, 0, 4,225,160, 48, 12,229,157, 16, 36,
/* 0x05f0 */ 229,141, 48, 40,225,160, 0, 4,225,160, 48, 12,229,157, 16, 40,
/* 0x0600 */ 227,160, 32, 0,235,255,255, 62,227,160, 48, 52,224,100,144, 0,
/* 0x0610 */ 224, 3, 3,153,229,141, 0, 28,226,133, 80, 32,227,160, 0, 0,
/* 0x0620 */ 229,141, 48, 32,229,141, 0, 24,234, 0, 0,161,229,157, 16, 12,
/* 0x0620 */ 229,141, 48, 36,229,141, 0, 24,234, 0, 0,171,229,157, 16, 12,
/* 0x0630 */ 227, 81, 0, 0, 10, 0, 0, 8,229, 21, 48, 32,227, 83, 0, 6,
/* 0x0640 */ 26, 0, 0, 5,229, 21, 32, 24,229,157, 0, 8,224,137, 32, 2,
/* 0x0650 */ 227,160, 16, 3,235,255,255, 71,234, 0, 0,145,229, 21, 48, 32,
/* 0x0660 */ 227, 83, 0, 1, 26, 0, 0,142,229, 21, 48, 12,227, 83, 0, 0,
/* 0x0670 */ 10, 0, 0,139,229,157, 32, 12,227, 82, 0, 0, 10, 0, 0, 17,
/* 0x0680 */ 229, 21, 48, 28,227, 83, 0, 0, 26, 0, 0, 14,229,154, 48, 28,
/* 0x0650 */ 227,160, 16, 3,235,255,255, 71,234, 0, 0,155,229, 21, 48, 32,
/* 0x0660 */ 227, 83, 0, 1, 26, 0, 0,152,229, 21, 48, 12,227, 83, 0, 0,
/* 0x0670 */ 10, 0, 0,149,229,157, 32, 12,227, 82, 0, 0, 10, 0, 0, 17,
/* 0x0680 */ 229, 21, 48, 28,227, 83, 0, 0, 26, 0, 0, 14,229,152, 48, 28,
/* 0x0690 */ 229, 21, 32, 24,224,130, 32, 3,224,137, 32, 2,227,160, 16, 3,
/* 0x06a0 */ 229,157, 0, 8,235,255,255, 51,229,157, 0, 8,227,160, 16, 5,
/* 0x06b0 */ 225,218, 34,188,235,255,255, 47,229,157, 0, 8,227,160, 16, 4,
/* 0x06c0 */ 225,218, 34,186,235,255,255, 43,229, 21, 48, 8,229,159, 34, 76,
/* 0x06b0 */ 225,216, 34,188,235,255,255, 47,229,157, 0, 8,227,160, 16, 4,
/* 0x06c0 */ 225,216, 34,186,235,255,255, 43,229, 21, 48, 8,229,159, 34,180,
/* 0x06d0 */ 226, 3, 48, 7,225,160, 49, 3,225,160, 67, 50,229, 21, 48, 24,
/* 0x06e0 */ 224,137, 48, 3,229,141, 48, 20,229,157,192, 20,229,157, 0, 12,
/* 0x06f0 */ 229, 21, 48, 16,225,160, 42, 12,229, 21, 16, 12,225,160, 42, 34,
/* 0x0700 */ 227, 80, 0, 0,229,141, 48, 44,229,141,192, 48,224,131,128, 2,
/* 0x0710 */ 226, 4,176, 7,229,141, 16, 40,224, 98, 96, 12, 10, 0, 0, 14,
/* 0x0720 */ 225,160, 0, 6,225,160, 16, 8,227,160, 32, 3,227,160, 48, 16,
/* 0x0730 */ 235,255,254,243,225, 86, 0, 0, 26, 0, 0, 72,229,157, 32, 92,
/* 0x0740 */ 226, 20, 48, 4, 17,160, 48, 2,229,157, 0, 12,226,141, 16, 44,
/* 0x0700 */ 227, 80, 0, 0,229,141, 48, 48,229,141,192, 52,224,131,160, 2,
/* 0x0710 */ 226, 4,176, 7,229,141, 16, 44,224, 98, 96, 12, 10, 0, 0, 14,
/* 0x0720 */ 225,160, 0, 6,225,160, 16, 10,227,160, 32, 3,227,160, 48, 16,
/* 0x0730 */ 235,255,254,243,225, 86, 0, 0, 26, 0, 0, 82,229,157, 32, 96,
/* 0x0740 */ 226, 20, 48, 4, 17,160, 48, 2,229,157, 0, 12,226,141, 16, 48,
/* 0x0750 */ 229,157, 32, 16,235,255,255, 42,234, 0, 0, 11,229, 21,192, 28,
/* 0x0760 */ 224, 98,192, 12,229,141,192, 4,229,157,192, 16,225,160, 0, 6,
/* 0x0770 */ 225,160, 16, 8,225,160, 32, 11,227,160, 48, 18,229,141,192, 0,
/* 0x0780 */ 235,255,254,215,225, 86, 0, 0, 26, 0, 0, 52,226,104, 48, 0,
/* 0x0770 */ 225,160, 16, 10,225,160, 32, 11,227,160, 48, 18,229,141,192, 0,
/* 0x0780 */ 235,255,254,215,225, 86, 0, 0, 26, 0, 0, 62,226,106, 48, 0,
/* 0x0790 */ 225,160,122, 3,227, 27, 0, 2,225,160,122, 39, 10, 0, 0, 7,
/* 0x07a0 */ 227, 87, 0, 0, 10, 0, 0, 5,224,134, 16, 8,225,160, 32, 7,
/* 0x07a0 */ 227, 87, 0, 0, 10, 0, 0, 5,224,134, 16, 10,225,160, 32, 7,
/* 0x07b0 */ 227,160, 48, 0,226, 82, 32, 1,228,193, 48, 1, 26,255,255,251,
/* 0x07c0 */ 229,157, 0, 12,227, 80, 0, 0, 10, 0, 0, 38,235,255,254,202,
/* 0x07d0 */ 229, 21, 48, 32,227, 83, 0, 1, 26, 0, 0, 26,229, 21, 48, 8,
/* 0x07e0 */ 227, 19, 0, 1, 10, 0, 0, 23,229, 21, 32, 12,229, 21, 48, 16,
/* 0x07f0 */ 225, 82, 0, 3,229, 21, 16, 24, 26, 0, 0, 65,224,130, 48, 1,
/* 0x0800 */ 226,131, 48, 3,224,137, 48, 3,227,195, 64, 3,226,100, 48, 0,
/* 0x0810 */ 225,160, 58, 3,225,160, 58, 35,227, 83, 0, 7,154, 0, 0, 56,
/* 0x0820 */ 229,159, 48,252,229,132, 0, 0,226,132, 16, 8,225,160, 0, 4,
/* 0x0830 */ 229,132, 48, 4,235,255,254,167,229,157, 0, 8,225,160, 32, 4,
/* 0x0840 */ 227,160, 16, 0,235,255,254,203,225,160, 0, 6,225,160, 16, 8,
/* 0x0850 */ 225,160, 32, 11,235,255,254,157,227, 80, 0, 0, 10, 0, 0, 1,
/* 0x0860 */ 227,160, 0,127,235,255,254,134,229,157, 32, 20,229,157,192, 40,
/* 0x0870 */ 224,136, 48, 7,224,130, 16, 12,224,134, 64, 3,225, 84, 0, 1,
/* 0x0880 */ 42, 0, 0, 7,224,100, 16, 1,225,160, 32, 11,225,160, 0, 4,
/* 0x0890 */ 227,160, 48, 16,235,255,254,154,225, 84, 0, 0, 10, 0, 0, 0,
/* 0x08a0 */ 234,255,255,254,229,157, 0, 24,226,128, 0, 1,229,141, 0, 24,
/* 0x08b0 */ 226,133, 80, 32,225,218, 50,188,229,157, 16, 24,225, 81, 0, 3,
/* 0x08c0 */ 186,255,255, 89,229,157, 32, 12,227, 82, 0, 0, 10, 0, 0, 5,
/* 0x08d0 */ 225,218, 49,176,227, 83, 0, 3, 21,157, 48, 36, 21,157,192, 28,
/* 0x08e0 */ 16,131, 0, 12, 27,255,254,115,229,157, 0, 88,227, 80, 0, 0,
/* 0x08f0 */ 21,128,144, 0,229,154, 0, 24,224,137, 0, 0,226,141,208, 52,
/* 0x0900 */ 232,189,143,240,229, 21, 48, 28,227, 83, 0, 0, 5,157, 32, 32,
/* 0x0910 */ 0,129, 48, 2, 2,131, 64, 8, 10,255,255,192,234,255,255,201,
/* 0x0920 */ 115, 81, 98, 64,225,160,240, 14,233, 45, 71,240,226, 77,208, 12,
/* 0x0930 */ 226,141, 96, 52,225,160,144, 0,225,160,112, 1,225,160,128, 3,
/* 0x0940 */ 225,160, 0, 6,226,141, 16, 44,227,160, 48, 0,229,157,160, 48,
/* 0x0950 */ 225,160, 80, 2,229,157, 64, 52,235,255,254,169,229,157, 48, 60,
/* 0x0960 */ 226,141,224, 12,229,157,192, 56,229, 46, 48, 4,224,100,192, 12,
/* 0x0970 */ 225,160, 32, 6,225,160, 16, 10,225,160, 48, 9,225,160, 0, 5,
/* 0x0980 */ 229,141,192, 56,229,141,224, 0,229,141,112, 52,229,141,128, 4,
/* 0x0990 */ 235,255,254,237,225,160, 64, 0,227,160, 16, 9,225,160, 0, 9,
/* 0x09a0 */ 225,160, 32, 4,235,255,254,115,225,218, 2,188,226,138, 32, 52,
/* 0x09b0 */ 227,160, 16, 0,234, 0, 0, 35,229,146, 48, 0,227, 83, 0, 3,
/* 0x09c0 */ 26, 0, 0, 30,229,146, 48, 8,229,157, 0, 8,227,160, 16, 0,
/* 0x09d0 */ 224,131, 0, 0,225,160, 32, 1,235,255,254, 46,226, 80, 80, 0,
/* 0x09e0 */ 186, 0, 0, 4,225,160, 16, 10,227,160, 44, 2,235,255,254, 37,
/* 0x09f0 */ 227, 80, 12, 2, 10, 0, 0, 1,227,160, 0,127,235,255,254, 32,
/* 0x0a00 */ 227,160,224, 0,225,160, 32, 14,226,141,192, 8,225,160, 16, 10,
/* 0x0a10 */ 225,160, 48, 9,225,160, 0, 5,232,141, 80, 0,235,255,254,202,
/* 0x0a20 */ 227,160, 16, 7,225,160, 64, 0,229,157, 32, 8,225,160, 0, 9,
/* 0x0a30 */ 235,255,254, 80,225,160, 0, 5,235,255,254, 24,234, 0, 0, 3,
/* 0x0a40 */ 226,130, 32, 32,226,129, 16, 1,225, 81, 0, 0,186,255,255,217,
/* 0x0a50 */ 225,160, 0, 4,226,141,208, 12,232,189,135,240
/* 0x07c0 */ 229,157, 0, 12,227, 80, 0, 0, 10, 0, 0, 48,235,255,254,202,
/* 0x07d0 */ 229, 21, 48, 32,227, 83, 0, 1,229,141, 0, 32, 26, 0, 0, 35,
/* 0x07e0 */ 229, 21, 48, 8,227, 19, 0, 1, 10, 0, 0, 32,229, 21, 32, 12,
/* 0x07f0 */ 229, 21, 48, 16,225, 82, 0, 3,229, 21, 16, 24, 26, 0, 0, 74,
/* 0x0800 */ 224,130, 48, 1,226,131, 48, 3,224,137, 48, 3,227,195, 64, 3,
/* 0x0810 */ 226,100, 48, 0,225,160, 58, 3,225,160, 58, 35,227, 83, 0, 7,
/* 0x0820 */ 154, 0, 0, 65,234, 0, 0, 10,227,160,224, 0,227,160, 32, 3,
/* 0x0830 */ 227,224,192, 0,225,160, 0, 14,227,160, 26, 1,227,160, 48, 34,
/* 0x0840 */ 232,141, 80, 0,235,255,254,166,226, 80, 32, 0, 26, 0, 0, 61,
/* 0x0850 */ 234, 0, 0, 6,229,157, 16, 32,229,159, 49, 44,232,132, 0, 10,
/* 0x0860 */ 225,160, 0, 4,226,132, 16, 8,235,255,254,154,234, 0, 0, 64,
/* 0x0870 */ 225,160, 0, 6,225,160, 16, 10,225,160, 32, 11,235,255,254,147,
/* 0x0880 */ 227, 80, 0, 0, 10, 0, 0, 1,227,160, 0,127,235,255,254,124,
/* 0x0890 */ 229,157, 32, 20,229,157,192, 44,224,138, 48, 7,224,130, 16, 12,
/* 0x08a0 */ 224,134, 64, 3,225, 84, 0, 1, 42, 0, 0, 7,224,100, 16, 1,
/* 0x08b0 */ 225,160, 32, 11,225,160, 0, 4,227,160, 48, 16,235,255,254,144,
/* 0x08c0 */ 225, 84, 0, 0, 10, 0, 0, 0,234,255,255,254,229,157, 0, 24,
/* 0x08d0 */ 226,128, 0, 1,229,141, 0, 24,226,133, 80, 32,225,216, 50,188,
/* 0x08e0 */ 229,157, 16, 24,225, 81, 0, 3,186,255,255, 79,229,157, 32, 12,
/* 0x08f0 */ 227, 82, 0, 0, 10, 0, 0, 5,225,216, 49,176,227, 83, 0, 3,
/* 0x0900 */ 21,157, 48, 40, 21,157,192, 28, 16,131, 0, 12, 27,255,254,105,
/* 0x0910 */ 229,157, 0, 92,227, 80, 0, 0, 21,128,144, 0,229,152, 0, 24,
/* 0x0920 */ 224,137, 0, 0,226,141,208, 56,232,189,143,240,229, 21, 48, 28,
/* 0x0930 */ 227, 83, 0, 0, 5,157, 32, 36, 0,129, 48, 2, 2,131, 64, 8,
/* 0x0940 */ 10,255,255,195,234,255,255,183,229,157, 48, 32,229,130, 48, 0,
/* 0x0950 */ 229,159, 48, 52,225,160, 64, 2,226,130, 16, 8,229,130, 48, 4,
/* 0x0960 */ 235,255,254, 92,225,160, 0, 4,227,160, 16, 8,227,160, 32, 5,
/* 0x0970 */ 235,255,254, 86,225,160, 32, 4,229,157, 0, 8,227,160, 16, 0,
/* 0x0980 */ 235,255,254,124,234,255,255,185,115, 81, 98, 64,225,160,240, 14,
/* 0x0990 */ 233, 45, 71,240,226, 77,208, 12,226,141, 96, 52,225,160,144, 0,
/* 0x09a0 */ 225,160,112, 1,225,160,128, 3,225,160, 0, 6,226,141, 16, 44,
/* 0x09b0 */ 227,160, 48, 0,229,157,160, 48,225,160, 80, 2,229,157, 64, 52,
/* 0x09c0 */ 235,255,254,143,229,157, 48, 60,226,141,224, 12,229,157,192, 56,
/* 0x09d0 */ 229, 46, 48, 4,224,100,192, 12,225,160, 32, 6,225,160, 16, 10,
/* 0x09e0 */ 225,160, 48, 9,225,160, 0, 5,229,141,192, 56,229,141,224, 0,
/* 0x09f0 */ 229,141,112, 52,229,141,128, 4,235,255,254,211,225,160, 64, 0,
/* 0x0a00 */ 227,160, 16, 9,225,160, 0, 9,225,160, 32, 4,235,255,254, 89,
/* 0x0a10 */ 225,218, 2,188,226,138, 32, 52,227,160, 16, 0,234, 0, 0, 35,
/* 0x0a20 */ 229,146, 48, 0,227, 83, 0, 3, 26, 0, 0, 30,229,146, 48, 8,
/* 0x0a30 */ 229,157, 0, 8,227,160, 16, 0,224,131, 0, 0,225,160, 32, 1,
/* 0x0a40 */ 235,255,254, 20,226, 80, 80, 0,186, 0, 0, 4,225,160, 16, 10,
/* 0x0a50 */ 227,160, 44, 2,235,255,254, 11,227, 80, 12, 2, 10, 0, 0, 1,
/* 0x0a60 */ 227,160, 0,127,235,255,254, 6,227,160,224, 0,225,160, 32, 14,
/* 0x0a70 */ 226,141,192, 8,225,160, 16, 10,225,160, 48, 9,225,160, 0, 5,
/* 0x0a80 */ 232,141, 80, 0,235,255,254,176,227,160, 16, 7,225,160, 64, 0,
/* 0x0a90 */ 229,157, 32, 8,225,160, 0, 9,235,255,254, 54,225,160, 0, 5,
/* 0x0aa0 */ 235,255,253,254,234, 0, 0, 3,226,130, 32, 32,226,129, 16, 1,
/* 0x0ab0 */ 225, 81, 0, 0,186,255,255,217,225,160, 0, 4,226,141,208, 12,
/* 0x0ac0 */ 232,189,135,240
};