MAP_PRIVATE to capture memfd pages before closing the fd
https://github.com/upx/upx/issues/710 modified: stub/src/amd64-linux.elf-so_main.c modified: stub/src/i386-linux.elf-so_main.c modified: stub/amd64-linux.elf-so_fold.h modified: stub/arm.v4a-linux.elf-so_fold.h modified: stub/arm.v5a-linux.elf-so_fold.h modified: stub/arm64-linux.elf-so_fold.h modified: stub/i386-linux.elf-so_fold.h
This commit is contained in:
parent
d11fc71e79
commit
bfeed2ab9a
10
src/stub/amd64-linux.elf-so_fold.h
generated
10
src/stub/amd64-linux.elf-so_fold.h
generated
@ -32,8 +32,8 @@
|
||||
|
||||
|
||||
#define STUB_AMD64_LINUX_ELF_SO_FOLD_SIZE 17413
|
||||
#define STUB_AMD64_LINUX_ELF_SO_FOLD_ADLER32 0xfe8ef6c4
|
||||
#define STUB_AMD64_LINUX_ELF_SO_FOLD_CRC32 0xbf9bb8fd
|
||||
#define STUB_AMD64_LINUX_ELF_SO_FOLD_ADLER32 0xbbc8f6c7
|
||||
#define STUB_AMD64_LINUX_ELF_SO_FOLD_CRC32 0xa1aa114b
|
||||
|
||||
unsigned char stub_amd64_linux_elf_so_fold[17413] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -71,7 +71,7 @@ unsigned char stub_amd64_linux_elf_so_fold[17413] = {
|
||||
/* 0x0200 */ 235, 91,232, 4, 0, 0, 0,117,112,120, 0, 95,190, 0, 0, 0,
|
||||
/* 0x0210 */ 0,232, 0, 0, 0, 0,137,195,232, 7, 0, 0, 0, 15, 5, 95,
|
||||
/* 0x0220 */ 94, 90,195, 0, 94,186, 6, 0, 0, 0,137,199,232, 0, 0, 0,
|
||||
/* 0x0230 */ 0, 65,185, 0, 0, 0, 0, 65,137,216,185, 1, 0, 0, 0,186,
|
||||
/* 0x0230 */ 0, 65,185, 0, 0, 0, 0, 65,137,216,185, 2, 0, 0, 0,186,
|
||||
/* 0x0240 */ 5, 0, 0, 0,190, 6, 0, 0, 0,191, 0, 0, 0, 0,232, 0,
|
||||
/* 0x0250 */ 0, 0, 0, 72,137,197,137,223,232, 0, 0, 0, 0, 72,137,232,
|
||||
/* 0x0260 */ 72,139, 92, 36, 8, 72,139,108, 36, 16, 72,131,196, 24,195, 72,
|
||||
@ -121,7 +121,7 @@ unsigned char stub_amd64_linux_elf_so_fold[17413] = {
|
||||
/* 0x0520 */ 199,232, 0, 0, 0, 0,139, 84, 36, 28, 43, 85, 0,139,117, 0,
|
||||
/* 0x0530 */ 76, 1,254,137,223,232, 0, 0, 0, 0,139,108, 36, 28, 72,137,
|
||||
/* 0x0540 */ 238, 76,137,255,232, 0, 0, 0, 0, 76,137,231,232, 0, 0, 0,
|
||||
/* 0x0550 */ 0, 65,185, 0, 0, 0, 0, 65,137,216,185, 17, 0, 0, 0,137,
|
||||
/* 0x0550 */ 0, 65,185, 0, 0, 0, 0, 65,137,216,185, 18, 0, 0, 0,137,
|
||||
/* 0x0560 */ 194, 72,137,238, 76,137,255,232, 0, 0, 0, 0,137,223,232, 0,
|
||||
/* 0x0570 */ 0, 0, 0, 72,199, 68, 36, 16, 0, 0, 0, 0, 77, 57,244, 15,
|
||||
/* 0x0580 */ 131, 9, 2, 0, 0, 65,131, 60, 36, 1, 15,133,241, 1, 0, 0,
|
||||
@ -152,7 +152,7 @@ unsigned char stub_amd64_linux_elf_so_fold[17413] = {
|
||||
/* 0x0710 */ 68, 36, 16, 65,246, 68, 36, 4, 1,116, 72,137,238, 3,116, 36,
|
||||
/* 0x0720 */ 80, 72,139,124, 36, 8,232, 0, 0, 0, 0, 76,137,231,232, 0,
|
||||
/* 0x0730 */ 0, 0, 0,139,116, 36, 80, 72,139,124, 36, 32, 73, 3,124, 36,
|
||||
/* 0x0740 */ 16, 76, 1,239, 65,185, 0, 0, 0, 0, 69,137,248,185, 17, 0,
|
||||
/* 0x0740 */ 16, 76, 1,239, 65,185, 0, 0, 0, 0, 69,137,248,185, 18, 0,
|
||||
/* 0x0750 */ 0, 0,137,194,232, 0, 0, 0, 0, 68,137,255,232, 0, 0, 0,
|
||||
/* 0x0760 */ 0,235, 30, 76,137,231,232, 0, 0, 0, 0, 73,139,116, 36, 40,
|
||||
/* 0x0770 */ 72,139,124, 36, 32, 73, 3,124, 36, 16,137,194,232, 0, 0, 0,
|
||||
|
||||
10
src/stub/arm.v4a-linux.elf-so_fold.h
generated
10
src/stub/arm.v4a-linux.elf-so_fold.h
generated
@ -32,8 +32,8 @@
|
||||
|
||||
|
||||
#define STUB_ARM_V4A_LINUX_ELF_SO_FOLD_SIZE 26593
|
||||
#define STUB_ARM_V4A_LINUX_ELF_SO_FOLD_ADLER32 0x75ea1b23
|
||||
#define STUB_ARM_V4A_LINUX_ELF_SO_FOLD_CRC32 0x0c2466af
|
||||
#define STUB_ARM_V4A_LINUX_ELF_SO_FOLD_ADLER32 0x933c1b26
|
||||
#define STUB_ARM_V4A_LINUX_ELF_SO_FOLD_CRC32 0x06e48264
|
||||
|
||||
unsigned char stub_arm_v4a_linux_elf_so_fold[26593] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -147,7 +147,7 @@ unsigned char stub_arm_v4a_linux_elf_so_fold[26593] = {
|
||||
/* 0x06c0 */ 254,255,255,235, 9, 0,160,225, 4, 16,160,225,254,255,255,235,
|
||||
/* 0x06d0 */ 6, 0,160,225,254,255,255,235, 0, 32,160,225, 0, 80,141,229,
|
||||
/* 0x06e0 */ 0, 48,160,227, 4, 48,141,229, 9, 0,160,225, 4, 16,160,225,
|
||||
/* 0x06f0 */ 17, 48,131,226,254,255,255,235, 5, 0,160,225,254,255,255,235,
|
||||
/* 0x06f0 */ 18, 48,131,226,254,255,255,235, 5, 0,160,225,254,255,255,235,
|
||||
/* 0x0700 */ 6, 0, 90,225, 0, 32,160,147, 40, 32,141,149,193, 1, 0,154,
|
||||
/* 0x0710 */ 0, 48,160,227, 40, 48,141,229, 16,192,157,229, 12,192,224,225,
|
||||
/* 0x0720 */ 8,192,141,229, 6, 80,160,225, 0, 48,150,229, 1, 0, 83,227,
|
||||
@ -187,7 +187,7 @@ unsigned char stub_arm_v4a_linux_elf_so_fold[26593] = {
|
||||
/* 0x0940 */ 52, 0,157,229, 8, 16,130,226,254,255,255,235,153, 1, 0,234,
|
||||
/* 0x0950 */ 254,255,255,235, 0, 64,160,225, 56, 16,141,226, 8, 32,160,227,
|
||||
/* 0x0960 */ 254,255,255,235, 0, 64,141,229, 0, 48,160,227, 4, 48,141,229,
|
||||
/* 0x0970 */ 3, 0,160,225, 8, 16,160,227, 5, 32,160,227, 1, 48,131,226,
|
||||
/* 0x0970 */ 3, 0,160,225, 8, 16,160,227, 5, 32,160,227, 2, 48,131,226,
|
||||
/* 0x0980 */ 254,255,255,235, 52, 0,141,229, 4, 0,160,225,254,255,255,235,
|
||||
/* 0x0990 */ 153, 1, 0,234, 0,192,160,227, 52,192,141,229, 52, 0,157,229,
|
||||
/* 0x09a0 */ 40, 0,141,229, 24, 48,149,229, 1, 0, 19,227,180, 1, 0, 10,
|
||||
@ -195,7 +195,7 @@ unsigned char stub_arm_v4a_linux_elf_so_fold[26593] = {
|
||||
/* 0x09c0 */ 8, 64,149,229, 36, 16,157,229, 4, 64,129,224, 44, 32,157,229,
|
||||
/* 0x09d0 */ 4, 64,130,224, 6, 0,160,225,254,255,255,235, 0, 32,160,225,
|
||||
/* 0x09e0 */ 0,112,141,229, 0, 48,160,227, 4, 48,141,229, 4, 0,160,225,
|
||||
/* 0x09f0 */ 64, 16,157,229, 17, 48,131,226,254,255,255,235, 7, 0,160,225,
|
||||
/* 0x09f0 */ 64, 16,157,229, 18, 48,131,226,254,255,255,235, 7, 0,160,225,
|
||||
/* 0x0a00 */ 254,255,255,235,190, 1, 0,234, 8, 64,149,229, 36,192,157,229,
|
||||
/* 0x0a10 */ 4, 64,140,224, 20, 80,149,229, 6, 0,160,225,254,255,255,235,
|
||||
/* 0x0a20 */ 0, 32,160,225, 4, 0,160,225, 5, 16,160,225,254,255,255,235,
|
||||
|
||||
10
src/stub/arm.v5a-linux.elf-so_fold.h
generated
10
src/stub/arm.v5a-linux.elf-so_fold.h
generated
@ -32,8 +32,8 @@
|
||||
|
||||
|
||||
#define STUB_ARM_V5A_LINUX_ELF_SO_FOLD_SIZE 26950
|
||||
#define STUB_ARM_V5A_LINUX_ELF_SO_FOLD_ADLER32 0x1210a7cc
|
||||
#define STUB_ARM_V5A_LINUX_ELF_SO_FOLD_CRC32 0xa132c1a4
|
||||
#define STUB_ARM_V5A_LINUX_ELF_SO_FOLD_ADLER32 0x30dda7cf
|
||||
#define STUB_ARM_V5A_LINUX_ELF_SO_FOLD_CRC32 0x338f4247
|
||||
|
||||
unsigned char stub_arm_v5a_linux_elf_so_fold[26950] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -161,7 +161,7 @@ unsigned char stub_arm_v5a_linux_elf_so_fold[26950] = {
|
||||
/* 0x07a0 */ 5, 0,160,225, 2, 16,137,224, 4, 32, 98,224,254,255,255,235,
|
||||
/* 0x07b0 */ 9, 0,160,225, 4, 16,160,225,254,255,255,235, 6, 0,160,225,
|
||||
/* 0x07c0 */ 254,255,255,235, 0, 32,160,225, 0, 80,141,229, 0, 48,160,227,
|
||||
/* 0x07d0 */ 4, 48,141,229, 9, 0,160,225, 4, 16,160,225, 17, 48,131,226,
|
||||
/* 0x07d0 */ 4, 48,141,229, 9, 0,160,225, 4, 16,160,225, 18, 48,131,226,
|
||||
/* 0x07e0 */ 254,255,255,235, 5, 0,160,225,254,255,255,235, 6, 0, 90,225,
|
||||
/* 0x07f0 */ 0, 32,160,147, 40, 32,141,149,194, 1, 0,154, 0, 48,160,227,
|
||||
/* 0x0800 */ 40, 48,141,229, 16,192,157,229, 12,192,224,225, 8,192,141,229,
|
||||
@ -202,14 +202,14 @@ unsigned char stub_arm_v5a_linux_elf_so_fold[26950] = {
|
||||
/* 0x0a30 */ 154, 1, 0,234,254,255,255,235, 0, 64,160,225, 56, 16,141,226,
|
||||
/* 0x0a40 */ 8, 32,160,227,254,255,255,235, 0, 64,141,229, 0, 16,160,227,
|
||||
/* 0x0a50 */ 4, 16,141,229, 1, 0,160,225, 8, 16,129,226, 5, 32,160,227,
|
||||
/* 0x0a60 */ 1, 48,160,227,254,255,255,235, 52, 0,141,229, 4, 0,160,225,
|
||||
/* 0x0a60 */ 2, 48,160,227,254,255,255,235, 52, 0,141,229, 4, 0,160,225,
|
||||
/* 0x0a70 */ 254,255,255,235,154, 1, 0,234, 0, 32,160,227, 52, 32,141,229,
|
||||
/* 0x0a80 */ 52, 48,157,229, 40, 48,141,229, 24, 48,149,229, 1, 0, 19,227,
|
||||
/* 0x0a90 */ 181, 1, 0, 10, 48, 0,157,229, 64, 16,157,229, 1, 16,136,224,
|
||||
/* 0x0aa0 */ 254,255,255,235, 8, 64,149,229, 36,192,157,229, 4, 64,140,224,
|
||||
/* 0x0ab0 */ 44, 0,157,229, 4, 64,128,224, 6, 0,160,225,254,255,255,235,
|
||||
/* 0x0ac0 */ 0, 32,160,225, 0,112,141,229, 0, 16,160,227, 4, 16,141,229,
|
||||
/* 0x0ad0 */ 4, 0,160,225, 64, 16,157,229, 17, 48,160,227,254,255,255,235,
|
||||
/* 0x0ad0 */ 4, 0,160,225, 64, 16,157,229, 18, 48,160,227,254,255,255,235,
|
||||
/* 0x0ae0 */ 7, 0,160,225,254,255,255,235,191, 1, 0,234, 8, 64,149,229,
|
||||
/* 0x0af0 */ 36, 32,157,229, 4, 64,130,224, 20, 80,149,229, 6, 0,160,225,
|
||||
/* 0x0b00 */ 254,255,255,235, 0, 32,160,225, 4, 0,160,225, 5, 16,160,225,
|
||||
|
||||
10
src/stub/arm64-linux.elf-so_fold.h
generated
10
src/stub/arm64-linux.elf-so_fold.h
generated
@ -32,8 +32,8 @@
|
||||
|
||||
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_SIZE 16470
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_ADLER32 0xa29e5eb2
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_CRC32 0x8140b020
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_ADLER32 0x5ca85f12
|
||||
#define STUB_ARM64_LINUX_ELF_SO_FOLD_CRC32 0xc23c6836
|
||||
|
||||
unsigned char stub_arm64_linux_elf_so_fold[16470] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -112,7 +112,7 @@ unsigned char stub_arm64_linux_elf_so_fold[16470] = {
|
||||
/* 0x0490 */ 129, 66, 34,139, 2, 3, 2, 75, 0, 0, 0,148,248, 3, 24, 42,
|
||||
/* 0x04a0 */ 224, 3, 20,170,225, 3, 24,170, 0, 0, 0,148,224, 3, 19,170,
|
||||
/* 0x04b0 */ 0, 0, 0,148,226, 3, 0, 42,224, 3, 20,170,225, 3, 24,170,
|
||||
/* 0x04c0 */ 35, 2,128, 82,228, 3, 26, 42, 5, 0,128,210, 0, 0, 0,148,
|
||||
/* 0x04c0 */ 67, 2,128, 82,228, 3, 26, 42, 5, 0,128,210, 0, 0, 0,148,
|
||||
/* 0x04d0 */ 224, 3, 26, 42, 0, 0, 0,148,191, 2, 19,235,233, 22, 0, 84,
|
||||
/* 0x04e0 */ 191, 75, 0,249,244,255,255,146, 24, 0,128,210, 97, 2, 64,249,
|
||||
/* 0x04f0 */ 224, 3, 20,170, 64, 0,192,242, 32, 0, 0,138, 31, 4, 0,241,
|
||||
@ -149,12 +149,12 @@ unsigned char stub_arm64_linux_elf_so_fold[16470] = {
|
||||
/* 0x06e0 */ 20, 0, 0, 20, 2, 0, 0,148,117,112,120, 0,224, 3, 30,170,
|
||||
/* 0x06f0 */ 1, 0,128, 82, 0, 0, 0,148,246, 3, 0, 42,161,131, 2,145,
|
||||
/* 0x0700 */ 2, 2,128,210, 0, 0, 0,148,224, 3, 24,170, 1, 2,128,210,
|
||||
/* 0x0710 */ 162, 0,128, 82, 35, 0,128, 82,228, 3, 22, 42,229, 3, 24,170,
|
||||
/* 0x0710 */ 162, 0,128, 82, 67, 0,128, 82,228, 3, 22, 42,229, 3, 24,170,
|
||||
/* 0x0720 */ 0, 0, 0,148,160, 75, 0,249,224, 3, 22, 42, 0, 0, 0,148,
|
||||
/* 0x0730 */ 96, 6, 64,185,160, 2, 0, 54,161,179, 64,185,160, 67, 64,249,
|
||||
/* 0x0740 */ 129, 3, 1, 11, 0, 0, 0,148,224, 3, 19,170, 0, 0, 0,148,
|
||||
/* 0x0750 */ 226, 3, 0, 42, 97, 10, 64,249, 96, 1,102,158, 0, 0, 1,139,
|
||||
/* 0x0760 */ 0, 0, 27,139,161,179, 64,185, 35, 2,128, 82,182,159, 64,185,
|
||||
/* 0x0760 */ 0, 0, 27,139,161,179, 64,185, 67, 2,128, 82,182,159, 64,185,
|
||||
/* 0x0770 */ 228, 3, 22, 42,229, 3, 24,170, 0, 0, 0,148,224, 3, 22, 42,
|
||||
/* 0x0780 */ 0, 0, 0,148, 9, 0, 0, 20,224, 3, 19,170, 0, 0, 0,148,
|
||||
/* 0x0790 */ 226, 3, 0, 42, 96, 10, 64,249, 97, 1,102,158, 32, 0, 0,139,
|
||||
|
||||
10
src/stub/i386-linux.elf-so_fold.h
generated
10
src/stub/i386-linux.elf-so_fold.h
generated
@ -32,8 +32,8 @@
|
||||
|
||||
|
||||
#define STUB_I386_LINUX_ELF_SO_FOLD_SIZE 14071
|
||||
#define STUB_I386_LINUX_ELF_SO_FOLD_ADLER32 0x9c4f8203
|
||||
#define STUB_I386_LINUX_ELF_SO_FOLD_CRC32 0xa260ec75
|
||||
#define STUB_I386_LINUX_ELF_SO_FOLD_ADLER32 0x36648206
|
||||
#define STUB_I386_LINUX_ELF_SO_FOLD_CRC32 0x31597947
|
||||
|
||||
unsigned char stub_i386_linux_elf_so_fold[14071] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -68,7 +68,7 @@ unsigned char stub_i386_linux_elf_so_fold[14071] = {
|
||||
/* 0x01d0 */ 235, 71,232, 4, 0, 0, 0,117,112,120, 0, 90,185, 0, 0, 0,
|
||||
/* 0x01e0 */ 0,190,100, 1, 0, 0,137,240,137,211,205,128,137,198,141, 77,
|
||||
/* 0x01f0 */ 244,186, 4, 0, 0, 0,137,195,106, 4, 88,205,128,106, 0, 86,
|
||||
/* 0x0200 */ 106, 1,106, 5,106, 4,106, 0,232,252,255,255,255,137,193,131,
|
||||
/* 0x0200 */ 106, 2,106, 5,106, 4,106, 0,232,252,255,255,255,137,193,131,
|
||||
/* 0x0210 */ 196, 24,137,243,106, 6, 88,205,128,137,200,141,101,248, 91, 94,
|
||||
/* 0x0220 */ 201,195,184, 0,240,255,255,195, 85,137,229, 87, 86, 83,129,236,
|
||||
/* 0x0230 */ 0, 16, 0, 0,139, 93, 12,139,117, 16,141,189,244,239,255,255,
|
||||
@ -94,7 +94,7 @@ unsigned char stub_i386_linux_elf_so_fold[14071] = {
|
||||
/* 0x0370 */ 140,139,117,192,247,222,139, 69,172,255, 48,255,117, 16,255,117,
|
||||
/* 0x0380 */ 140,232,252,255,255,255,137,240,139, 85,172, 43, 2, 80,139, 69,
|
||||
/* 0x0390 */ 188, 3, 2, 80,255,117,140,232,252,255,255,255, 86,255,117,188,
|
||||
/* 0x03a0 */ 232,252,255,255,255,131,196, 32,106, 0,255,117,140,106, 17, 87,
|
||||
/* 0x03a0 */ 232,252,255,255,255,131,196, 32,106, 0,255,117,140,106, 18, 87,
|
||||
/* 0x03b0 */ 232,252,255,255,255,137, 4, 36, 86,255,117,188,232,252,255,255,
|
||||
/* 0x03c0 */ 255,131,196, 24,139, 93,140,106, 6, 88,205,128,199, 69,160, 0,
|
||||
/* 0x03d0 */ 0, 0, 0, 59,125,148, 15,131,163, 1, 0, 0,131, 63, 1, 15,
|
||||
@ -119,7 +119,7 @@ unsigned char stub_i386_linux_elf_so_fold[14071] = {
|
||||
/* 0x0500 */ 116, 21,139, 69,192,247,208, 80,255,115, 4, 87,232,125,252,255,
|
||||
/* 0x0510 */ 255,137, 69,160,131,196, 12,246, 71, 24, 1,116, 59,139, 69,144,
|
||||
/* 0x0520 */ 3, 69,212, 80,255,117,152,232,252,255,255,255,106, 0, 86,106,
|
||||
/* 0x0530 */ 17, 87,232,252,255,255,255,137, 4, 36,255,117,212,139, 69,168,
|
||||
/* 0x0530 */ 18, 87,232,252,255,255,255,137, 4, 36,255,117,212,139, 69,168,
|
||||
/* 0x0540 */ 3, 71, 8, 3, 69,156, 80,232,252,255,255,255,131,196, 32,137,
|
||||
/* 0x0550 */ 243,106, 6, 88,205,128,235, 27, 87,232,252,255,255,255,137, 4,
|
||||
/* 0x0560 */ 36,255,119, 20,139, 69,168, 3, 71, 8, 80,232,252,255,255,255,
|
||||
|
||||
@ -264,7 +264,7 @@ make_hatch_x86_64(
|
||||
else { // Does not fit at hi end of .text, so must use a new page "permanently"
|
||||
int mfd = memfd_create(addr_string("upx"), 0); // the directory entry
|
||||
Pwrite(mfd, addr_string("\x0f\x05\x5f\x5e\x5a\xc3"), 6);
|
||||
hatch = Pmap(0, 6, PROT_READ|PROT_EXEC, MAP_SHARED, mfd, 0);
|
||||
hatch = Pmap(0, 6, PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
}
|
||||
}
|
||||
@ -306,7 +306,7 @@ make_hatch_ppc64(
|
||||
else { // Does not fit at hi end of .text, so must use a new page "permanently"
|
||||
int mfd = memfd_create(addr_string("upx"), 0); // the directory entry
|
||||
Pwrite(mfd, code, sizeof(code));
|
||||
hatch = Pmap(0, sizeof(code), PROT_READ|PROT_EXEC, MAP_SHARED, mfd, 0);
|
||||
hatch = Pmap(0, sizeof(code), PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
}
|
||||
}
|
||||
@ -344,7 +344,7 @@ make_hatch_arm64(
|
||||
else { // Does not fit at hi end of .text, so must use a new page "permanently"
|
||||
int mfd = memfd_create(addr_string("upx"), 0); // the directory entry
|
||||
Pwrite(mfd, code, sizeof(code));
|
||||
void *mfd_addr = Pmap(0, sizeof(code), PROT_READ|PROT_EXEC, MAP_SHARED, mfd, 0);
|
||||
void *mfd_addr = Pmap(0, sizeof(code), PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
hatch = (unsigned *)mfd_addr;
|
||||
}
|
||||
@ -500,7 +500,7 @@ upx_so_main( // returns &escape_hatch
|
||||
|
||||
Punmap(va_load, mfd_len); // make SELinux forget any previous protection
|
||||
Elf64_Addr va_mfd = (Elf64_Addr)Pmap(va_load, mfd_len, PF_to_PROT(phdr),
|
||||
MAP_FIXED|MAP_SHARED, mfd, 0); (void)va_mfd;
|
||||
MAP_FIXED|MAP_PRIVATE, mfd, 0); (void)va_mfd;
|
||||
close(mfd);
|
||||
}
|
||||
|
||||
@ -576,7 +576,7 @@ upx_so_main( // returns &escape_hatch
|
||||
DPRINTF("mfd mmap addr=%%p len=%%p\\n", (phdr->p_vaddr + base + pfx), al_bi.sz_unc);
|
||||
Punmap(mfd_addr, frag + al_bi.sz_unc); // Discard RW mapping; mfd has the bytes
|
||||
Pmap((char *)(phdr->p_vaddr + base + pfx), al_bi.sz_unc, PF_to_PROT(phdr),
|
||||
MAP_FIXED|MAP_SHARED, mfd, 0);
|
||||
MAP_FIXED|MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
}
|
||||
else { // easy
|
||||
|
||||
@ -288,7 +288,7 @@ make_hatch_i386(
|
||||
else { // Does not fit at hi end of .text, so must use a new page "permanently"
|
||||
int mfd = memfd_create(addr_string("upx"), 0); // the directory entry
|
||||
write(mfd, &escape, 4);
|
||||
hatch = mmap(0, 4, PROT_READ|PROT_EXEC, MAP_SHARED, mfd, 0);
|
||||
hatch = mmap(0, 4, PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
}
|
||||
}
|
||||
@ -328,7 +328,7 @@ make_hatch_arm32(
|
||||
else { // Does not fit at hi end of .text, so must use a new page "permanently"
|
||||
int mfd = upxfd_create(); // the directory entry
|
||||
write(mfd, &code, 2*4);
|
||||
hatch = Pmap(0, 2*4, PROT_READ|PROT_EXEC, MAP_SHARED, mfd, 0);
|
||||
hatch = Pmap(0, 2*4, PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
}
|
||||
}
|
||||
@ -565,7 +565,7 @@ upx_so_main( // returns &escape_hatch
|
||||
|
||||
Punmap(va_load, mfd_len); // make SELinux forget any previous protection
|
||||
Elf32_Addr va_mfd = (Elf32_Addr)Pmap(va_load, mfd_len, PF_to_PROT(phdr),
|
||||
MAP_FIXED|MAP_SHARED, mfd, 0); (void)va_mfd;
|
||||
MAP_FIXED|MAP_PRIVATE, mfd, 0); (void)va_mfd;
|
||||
|
||||
close(mfd);
|
||||
}
|
||||
@ -657,7 +657,7 @@ upx_so_main( // returns &escape_hatch
|
||||
DPRINTF("mfd mmap addr=%%p len=%%p\\n", (phdr->p_vaddr + base + pfx), al_bi.sz_unc);
|
||||
Punmap(mfd_addr, frag + al_bi.sz_unc); // Discard RW mapping; mfd has the bytes
|
||||
Pmap((char *)(phdr->p_vaddr + base + pfx), al_bi.sz_unc, PF_to_PROT(phdr),
|
||||
MAP_FIXED|MAP_SHARED, mfd, 0);
|
||||
MAP_FIXED|MAP_PRIVATE, mfd, 0);
|
||||
close(mfd);
|
||||
}
|
||||
else { // easy
|
||||
|
||||
Loading…
Reference in New Issue
Block a user