32-bit ELF escape hatch when no fit on last executable page

... about 1/1000 (4/PAGE_SIZE) chance
	modified:   src/stub/src/i386-linux.elf-main.c
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
   plus all 32-bit elf-fold.h, elf-fold.map
This commit is contained in:
John Reiser
2024-05-06 09:42:13 -07:00
parent 6fc0a00ac8
commit e5546bc8b0
17 changed files with 1047 additions and 1053 deletions
+78 -79
View File
@@ -1,5 +1,5 @@
/* i386-linux.elf-fold.h
created from i386-linux.elf-fold.bin, 2072 (0x818) bytes
created from i386-linux.elf-fold.bin, 2062 (0x80e) bytes
This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */
#define STUB_I386_LINUX_ELF_FOLD_SIZE 2072
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0xde277fa3
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0xce57936c
#define STUB_I386_LINUX_ELF_FOLD_SIZE 2062
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0xc62579f8
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0x37c0a1a9
unsigned char stub_i386_linux_elf_fold[2072] = {
unsigned char stub_i386_linux_elf_fold[2062] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0,
/* 0x0040 */ 0, 16,192, 0, 24, 8, 0, 0, 24, 8, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 24, 8, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 16,192, 0, 14, 8, 0, 0, 16, 8, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 87, 81, 80,137,230,129,236, 0, 16, 0, 0,137,231,106, 8, 89,
@@ -57,7 +57,7 @@ unsigned char stub_i386_linux_elf_fold[2072] = {
/* 0x0110 */ 49,248,131,224, 4, 41,199, 90, 1,250,175,173,193,233, 2, 73,
/* 0x0120 */ 243,165,252,141, 79, 4, 49,192, 41,225,137,231,193,233, 2,243,
/* 0x0130 */ 171,137,252,137,215, 88, 93, 88, 94, 89,129,236, 0, 10, 0, 0,
/* 0x0140 */ 137,226, 81,139, 24,139, 72, 4,131,193, 12, 96, 71,232,188, 5,
/* 0x0140 */ 137,226, 81,139, 24,139, 72, 4,131,193, 12, 96, 71,232,178, 5,
/* 0x0150 */ 0, 0, 79,137,198,139,108, 36, 32,139, 77,104,137,235,102,131,
/* 0x0160 */ 125, 16, 2,117, 5,106, 45, 88,205,128,106, 91, 88,205,128,137,
/* 0x0170 */ 250,137,231,185,137, 2, 0, 0, 49,192,243,171,137,252, 88, 89,
@@ -96,75 +96,74 @@ unsigned char stub_i386_linux_elf_fold[2072] = {
/* 0x0380 */ 228,137, 85,224,139, 69, 8,139, 85, 12,139, 77, 16,137, 69,220,
/* 0x0390 */ 139,117, 20,137, 85,216,137, 77,212,137,117,208,232,206,255,255,
/* 0x03a0 */ 255,139, 85,224,137,198,247,208, 3, 82, 28,137, 69,204,131,125,
/* 0x03b0 */ 220, 0,137, 85,200,116, 51,139, 77,212,139, 1,102,131,120, 16,
/* 0x03c0 */ 2,141, 80, 52,117, 12,139, 90, 8,199, 69,196, 0, 0, 0, 0,
/* 0x03d0 */ 235, 8,137,195, 43, 90, 40,137, 93,196,139, 74, 20,141, 4, 25,
/* 0x03e0 */ 137, 69,240,106, 91, 88,205,128,235,127,139, 69,224,139, 85,224,
/* 0x03f0 */ 102,131,120, 16, 3, 15,183, 82, 44,139, 93,200, 15,149,192, 15,
/* 0x0400 */ 182,248,137, 85,192,232,101,255,255,255,139, 77,192,193,231, 4,
/* 0x0410 */ 137,240, 49,246, 73,199, 69,188,255,255,255,255,120, 33,139, 77,
/* 0x0420 */ 192,131, 59, 1,117, 20,139, 83, 8, 59, 85,188,115, 3,137, 85,
/* 0x0430 */ 188, 3, 83, 20, 57,214,115, 2,137,214,131,195, 32,226,226,139,
/* 0x0440 */ 93,188,106, 0,106,255,131,207, 34, 33,195, 87, 41,222,106, 0,
/* 0x0450 */ 41,198, 78, 33,198, 86, 83,232,140,253,255,255,131,196, 24, 1,
/* 0x0460 */ 198, 41,216,137,117,240,137, 69,196,139,117,224,199, 69,184, 0,
/* 0x0470 */ 0, 0, 0,102,131,126, 44, 0, 15,132,110, 2, 0, 0,131,125,
/* 0x0480 */ 220, 0,116, 32,139, 69,200,131, 56, 6,117, 24,139, 77,196,186,
/* 0x0490 */ 3, 0, 0, 0, 3, 72, 8,139, 69,216,232,130,254,255,255,233,
/* 0x04a0 */ 49, 2, 0, 0,139, 85,200,131, 58, 1, 15,133, 37, 2, 0, 0,
/* 0x04b0 */ 131,122, 20, 0, 15,132, 27, 2, 0, 0,131,125,220, 0,116, 65,
/* 0x04c0 */ 131,122, 4, 0,117, 59,139,117,224,139, 77,196, 3, 74, 8,186,
/* 0x04d0 */ 3, 0, 0, 0, 3, 78, 28,139, 69,216,232, 66,254,255,255, 15,
/* 0x04e0 */ 183, 78, 44,139, 69,216,186, 5, 0, 0, 0,232, 49,254,255,255,
/* 0x04f0 */ 15,183, 78, 42,139, 69,216,186, 4, 0, 0, 0,232, 32,254,255,
/* 0x0500 */ 255,139, 69,200,187, 64, 98, 81,115,139, 72, 24,131,225, 7,193,
/* 0x0510 */ 225, 2,211,235,139, 77,200,137,218,131,226, 7,139,113, 20,137,
/* 0x0520 */ 85,180,139, 80, 16,139, 69,196, 3, 65, 8,137, 85,232,139, 77,
/* 0x0530 */ 204, 1,198, 33,193,137,117,176,137,198, 41,206,131,125,220, 0,
/* 0x0540 */ 137, 69,236,141, 60, 10,116, 58,106, 0,106,255,106, 50,141, 71,
/* 0x0550 */ 3,106, 3, 80, 86,232,142,252,255,255,131,196, 24, 57,198, 15,
/* 0x0560 */ 133, 36, 1, 0, 0,128,227, 4,139, 69,208,117, 2, 49,192, 80,
/* 0x0570 */ 139, 69,220,255,117,228,141, 85,232,232,195,252,255,255, 88, 90,
/* 0x0580 */ 235, 35,139, 85,200,139, 66, 4, 41,200, 80,255,117,228,106, 18,
/* 0x0590 */ 255,117,180, 87, 86,232, 78,252,255,255,131,196, 24, 57,198, 15,
/* 0x05a0 */ 133,228, 0, 0, 0,137,249,139, 69,204,247,217, 33,193,246, 69,
/* 0x05b0 */ 180, 2,137, 77,168,116, 13,133,201,141, 4, 62,116, 6,198, 0,
/* 0x05c0 */ 0, 64,226,250,131,125,220, 0, 15,132,197, 0, 0, 0,139, 85,
/* 0x05d0 */ 200,199, 69,172, 0, 0, 0, 0,131, 58, 1, 15,133,151, 0, 0,
/* 0x05e0 */ 0,246, 66, 24, 1, 15,132,141, 0, 0, 0,137,209,139, 82, 20,
/* 0x05f0 */ 137,200,139, 73, 8,141, 28, 10, 3, 93,196, 59, 80, 16,117, 14,
/* 0x0600 */ 137,216,247,216, 37,255, 15, 0, 0,131,248, 3,119, 53,139, 85,
/* 0x0610 */ 200,107, 69,196, 52,131,122, 4, 0,141, 92, 1, 12,116, 36,106,
/* 0x0620 */ 0,106,255,106, 34,106, 3,104, 0, 16, 0, 0,106, 0,199, 69,
/* 0x0630 */ 172, 1, 0, 0, 0,232,174,251,255,255,131,196, 24,133,192,137,
/* 0x0640 */ 195,116, 53,139, 3, 61,205,128, 97,195,116, 6,199, 3,205,128,
/* 0x0650 */ 97,195,131,125,172, 0,116, 13,106, 5,106, 4, 83,232, 94,251,
/* 0x0660 */ 255,255,131,196, 12,133,219,116, 15,139, 69,216,137,217, 49,210,
/* 0x0670 */ 131,224,254,232,169,252,255,255,255,117,180, 87, 86,232, 62,251,
/* 0x0680 */ 255,255,131,196, 12,133,192,116, 10,106,127, 91,106, 1, 88,205,
/* 0x0690 */ 128,235,254,139, 77,168,141, 4, 15,141, 28, 6, 59, 93,176,115,
/* 0x06a0 */ 30,106, 0,106,255,106, 50,255,117,180, 41, 93,176,255,117,176,
/* 0x06b0 */ 83,232, 50,251,255,255,131,196, 24, 57,195,116, 24,235,254,131,
/* 0x06c0 */ 125,220, 0,116, 16,141, 79, 3, 35, 77,204,131,249, 3,119, 5,
/* 0x06d0 */ 106, 91, 88,205,128,139,117,224,255, 69,184, 15,183, 70, 44,131,
/* 0x06e0 */ 69,200, 32, 57, 69,184, 15,140,146,253,255,255,131,125,212, 0,
/* 0x06f0 */ 116, 8,139, 85,196,139, 69,212,137, 16,139, 77,224,139, 73, 24,
/* 0x0700 */ 1, 77,196,139, 69,196,141,101,244, 91, 94, 95,201,195, 85,137,
/* 0x0710 */ 229, 87, 86, 83,131,236, 32,199, 69,232, 0, 0, 0, 0,139, 69,
/* 0x0720 */ 8,139,117, 16,137, 69,236,128, 62,235,117, 6,141, 86, 2,137,
/* 0x0730 */ 85,232,106, 0,139,125, 28,141, 85, 24,139, 93, 32,141, 69, 32,
/* 0x0740 */ 86,232,251,250,255,255,139, 69, 12, 41, 93, 36,137,250,141, 93,
/* 0x0750 */ 240,255,117,232,137, 69, 32,139, 69, 40, 83,255,117,236,137, 69,
/* 0x0760 */ 240,141, 69, 32,141, 79, 52, 80,137,240,137, 77,228,232, 3,252,
/* 0x0770 */ 255,255,137,193,137, 69,224,139, 69,236,186, 9, 0, 0, 0,232,
/* 0x0780 */ 157,251,255,255,102,139, 79, 44,131,196, 24, 49,210,102,133,201,
/* 0x0790 */ 116,123,139, 69,228,131, 56, 3,117,103,139, 93,240, 49,201, 3,
/* 0x07a0 */ 88, 8,137,202,106, 5, 88,205,128,133,192,137,198,120, 21,186,
/* 0x07b0 */ 0, 2, 0, 0,137,195,137,249,106, 3, 88,205,128, 61, 0, 2,
/* 0x07c0 */ 0, 0,116, 10,106,127, 91,106, 1, 88,205,128,235,254,141, 69,
/* 0x07d0 */ 240,137,250,106, 0,137,243, 80,137,240,255,117,236,106, 0,232,
/* 0x07e0 */ 145,251,255,255,139, 77,240,137, 69,224,139, 69,236,186, 7, 0,
/* 0x07f0 */ 0, 0,232, 42,251,255,255,131,196, 16,106, 6, 88,205,128,235,
/* 0x0800 */ 12, 66, 15,183,193,131, 69,228, 32, 57,194,124,133,139, 69,224,
/* 0x0810 */ 141,101,244, 91, 94, 95,201,195
/* 0x03b0 */ 220, 0,137, 85,200,116, 41,139, 77,212,139, 1,102,131,120, 16,
/* 0x03c0 */ 2,141, 80, 52,117, 12,139, 66, 8,199, 69,196, 0, 0, 0, 0,
/* 0x03d0 */ 235, 6, 43, 66, 40,137, 69,196, 3, 66, 20,137, 69,240,235,127,
/* 0x03e0 */ 139, 69,224,139, 85,224,102,131,120, 16, 3, 15,183, 82, 44,139,
/* 0x03f0 */ 93,200, 15,149,192, 15,182,248,137, 85,192,232,111,255,255,255,
/* 0x0400 */ 139, 77,192,193,231, 4,137,240, 49,246, 73,199, 69,188,255,255,
/* 0x0410 */ 255,255,120, 33,139, 77,192,131, 59, 1,117, 20,139, 83, 8, 59,
/* 0x0420 */ 85,188,115, 3,137, 85,188, 3, 83, 20, 57,214,115, 2,137,214,
/* 0x0430 */ 131,195, 32,226,226,139, 93,188,106, 0,106,255,131,207, 34, 33,
/* 0x0440 */ 195, 87, 41,222,106, 0, 41,198, 78, 33,198, 86, 83,232,150,253,
/* 0x0450 */ 255,255,131,196, 24, 1,198, 41,216,137,117,240,137, 69,196,139,
/* 0x0460 */ 117,224,199, 69,184, 0, 0, 0, 0,102,131,126, 44, 0, 15,132,
/* 0x0470 */ 110, 2, 0, 0,131,125,220, 0,116, 32,139, 69,200,131, 56, 6,
/* 0x0480 */ 117, 24,139, 77,196,186, 3, 0, 0, 0, 3, 72, 8,139, 69,216,
/* 0x0490 */ 232,140,254,255,255,233, 49, 2, 0, 0,139, 85,200,131, 58, 1,
/* 0x04a0 */ 15,133, 37, 2, 0, 0,131,122, 20, 0, 15,132, 27, 2, 0, 0,
/* 0x04b0 */ 131,125,220, 0,116, 65,131,122, 4, 0,117, 59,139,117,224,139,
/* 0x04c0 */ 77,196, 3, 74, 8,186, 3, 0, 0, 0, 3, 78, 28,139, 69,216,
/* 0x04d0 */ 232, 76,254,255,255, 15,183, 78, 44,139, 69,216,186, 5, 0, 0,
/* 0x04e0 */ 0,232, 59,254,255,255, 15,183, 78, 42,139, 69,216,186, 4, 0,
/* 0x04f0 */ 0, 0,232, 42,254,255,255,139, 69,200,187, 64, 98, 81,115,139,
/* 0x0500 */ 72, 24,131,225, 7,193,225, 2,211,235,139, 77,200,137,218,131,
/* 0x0510 */ 226, 7,139,113, 20,137, 85,180,139, 80, 16,139, 69,196, 3, 65,
/* 0x0520 */ 8,137, 85,232,139, 77,204, 1,198, 33,193,137,117,176,137,198,
/* 0x0530 */ 41,206,131,125,220, 0,137, 69,236,141, 60, 10,116, 58,106, 0,
/* 0x0540 */ 106,255,106, 50,141, 71, 3,106, 3, 80, 86,232,152,252,255,255,
/* 0x0550 */ 131,196, 24, 57,198, 15,133, 36, 1, 0, 0,128,227, 4,139, 69,
/* 0x0560 */ 208,117, 2, 49,192, 80,139, 69,220,255,117,228,141, 85,232,232,
/* 0x0570 */ 205,252,255,255, 88, 90,235, 35,139, 85,200,139, 66, 4, 41,200,
/* 0x0580 */ 80,255,117,228,106, 18,255,117,180, 87, 86,232, 88,252,255,255,
/* 0x0590 */ 131,196, 24, 57,198, 15,133,228, 0, 0, 0,137,249,139, 69,204,
/* 0x05a0 */ 247,217, 33,193,246, 69,180, 2,137, 77,168,116, 13,133,201,141,
/* 0x05b0 */ 4, 62,116, 6,198, 0, 0, 64,226,250,131,125,220, 0, 15,132,
/* 0x05c0 */ 197, 0, 0, 0,139, 85,200,199, 69,172, 0, 0, 0, 0,131, 58,
/* 0x05d0 */ 1, 15,133,151, 0, 0, 0,246, 66, 24, 1, 15,132,141, 0, 0,
/* 0x05e0 */ 0,137,209,139, 82, 20,137,200,139, 73, 8,141, 28, 10, 3, 93,
/* 0x05f0 */ 196, 59, 80, 16,117, 14,137,216,247,216, 37,255, 15, 0, 0,131,
/* 0x0600 */ 248, 3,119, 53,139, 85,200,107, 69,196, 52,131,122, 4, 0,141,
/* 0x0610 */ 92, 1, 12,116, 36,106, 0,106,255,106, 34,106, 3,104, 0, 16,
/* 0x0620 */ 0, 0,106, 0,199, 69,172, 1, 0, 0, 0,232,184,251,255,255,
/* 0x0630 */ 131,196, 24,133,192,137,195,116, 53,139, 3, 61,205,128, 97,195,
/* 0x0640 */ 116, 6,199, 3,205,128, 97,195,131,125,172, 0,116, 13,106, 5,
/* 0x0650 */ 106, 4, 83,232,104,251,255,255,131,196, 12,133,219,116, 15,139,
/* 0x0660 */ 69,216,137,217, 49,210,131,224,254,232,179,252,255,255,255,117,
/* 0x0670 */ 180, 87, 86,232, 72,251,255,255,131,196, 12,133,192,116, 10,106,
/* 0x0680 */ 127, 91,106, 1, 88,205,128,235,254,139, 77,168,141, 4, 15,141,
/* 0x0690 */ 28, 6, 59, 93,176,115, 30,106, 0,106,255,106, 50,255,117,180,
/* 0x06a0 */ 41, 93,176,255,117,176, 83,232, 60,251,255,255,131,196, 24, 57,
/* 0x06b0 */ 195,116, 24,235,254,131,125,220, 0,116, 16,141, 79, 3, 35, 77,
/* 0x06c0 */ 204,131,249, 3,119, 5,106, 91, 88,205,128,139,117,224,255, 69,
/* 0x06d0 */ 184, 15,183, 70, 44,131, 69,200, 32, 57, 69,184, 15,140,146,253,
/* 0x06e0 */ 255,255,131,125,212, 0,116, 8,139, 85,196,139, 69,212,137, 16,
/* 0x06f0 */ 139, 77,224,139, 73, 24, 1, 77,196,139, 69,196,141,101,244, 91,
/* 0x0700 */ 94, 95,201,195, 85,137,229, 87, 86, 83,131,236, 32,199, 69,232,
/* 0x0710 */ 0, 0, 0, 0,139, 69, 8,139,117, 16,137, 69,236,128, 62,235,
/* 0x0720 */ 117, 6,141, 86, 2,137, 85,232,106, 0,139,125, 28,141, 85, 24,
/* 0x0730 */ 139, 93, 32,141, 69, 32, 86,232, 5,251,255,255,139, 69, 12, 41,
/* 0x0740 */ 93, 36,137,250,141, 93,240,255,117,232,137, 69, 32,139, 69, 40,
/* 0x0750 */ 83,255,117,236,137, 69,240,141, 69, 32,141, 79, 52, 80,137,240,
/* 0x0760 */ 137, 77,228,232, 13,252,255,255,137,193,137, 69,224,139, 69,236,
/* 0x0770 */ 186, 9, 0, 0, 0,232,167,251,255,255,102,139, 79, 44,131,196,
/* 0x0780 */ 24, 49,210,102,133,201,116,123,139, 69,228,131, 56, 3,117,103,
/* 0x0790 */ 139, 93,240, 49,201, 3, 88, 8,137,202,106, 5, 88,205,128,133,
/* 0x07a0 */ 192,137,198,120, 21,186, 0, 2, 0, 0,137,195,137,249,106, 3,
/* 0x07b0 */ 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91,106, 1, 88,
/* 0x07c0 */ 205,128,235,254,141, 69,240,137,250,106, 0,137,243, 80,137,240,
/* 0x07d0 */ 255,117,236,106, 0,232,155,251,255,255,139, 77,240,137, 69,224,
/* 0x07e0 */ 139, 69,236,186, 7, 0, 0, 0,232, 52,251,255,255,131,196, 16,
/* 0x07f0 */ 106, 6, 88,205,128,235, 12, 66, 15,183,193,131, 69,228, 32, 57,
/* 0x0800 */ 194,124,133,139, 69,224,141,101,244, 91, 94, 95,201,195
};