Bug in unfilter on x86* when region ends in 32-bit displacement.

https://github.com/upx/upx/issues/43
	modified:   stub/src/arch/amd64/bxx.S
	modified:   stub/src/arch/i386/macros.S
	plus all the stubs that use them
This commit is contained in:
John Reiser
2016-12-31 09:51:40 -08:00
committed by Markus F.X.J. Oberhumer
parent fdce705e55
commit ba9118aa58
44 changed files with 8782 additions and 8672 deletions
+35 -31
View File
@@ -1,5 +1,5 @@
/* i386-linux.elf.interp-entry.h
created from i386-linux.elf.interp-entry.bin, 45254 (0xb0c6) bytes
created from i386-linux.elf.interp-entry.bin, 45328 (0xb110) bytes
This file is part of the UPX executable compressor.
@@ -31,11 +31,11 @@
*/
#define STUB_I386_LINUX_ELF_INTERP_ENTRY_SIZE 45254
#define STUB_I386_LINUX_ELF_INTERP_ENTRY_ADLER32 0xacaf1e35
#define STUB_I386_LINUX_ELF_INTERP_ENTRY_CRC32 0xf51468b4
#define STUB_I386_LINUX_ELF_INTERP_ENTRY_SIZE 45328
#define STUB_I386_LINUX_ELF_INTERP_ENTRY_ADLER32 0xaf0b2ee6
#define STUB_I386_LINUX_ELF_INTERP_ENTRY_CRC32 0xcca87543
unsigned char stub_i386_linux_elf_interp_entry[45254] = {
unsigned char stub_i386_linux_elf_interp_entry[45328] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 224, 36, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
@@ -479,11 +479,11 @@ unsigned char stub_i386_linux_elf_interp_entry[45254] = {
/* 0x1b80 */ 0,123, 0,248,235,255,131,233, 1,127,255,137,231,185, 4, 1,
/* 0x1b90 */ 0, 0,139, 14,131,193, 5,139, 14,131,193, 4, 49,192,243,171,
/* 0x1ba0 */ 137,252, 86, 97,151, 81, 80, 82,195, 96,139,124, 36, 36,139, 76,
/* 0x1bb0 */ 36, 40,139, 84, 36, 44,137,254,235, 29,138, 7,131,199, 1, 60,
/* 0x1bc0 */ 128,114, 10, 60,143,119, 6,128,127,254, 15,116, 5, 44,232, 60,
/* 0x1bd0 */ 1,119,255, 56, 23,117,255,139, 7,102,193,232, 8,193,192, 16,
/* 0x1be0 */ 134,196, 41,248, 1,240,137, 7,131,199, 4,131,233, 4,138, 7,
/* 0x1bf0 */ 131,199, 1,226, 13,131,233, 1,127, 3, 97,195,102,105,108,101,
/* 0x1bb0 */ 36, 40,139, 84, 36, 44,137,254,235, 31,138, 7, 71, 60,128,114,
/* 0x1bc0 */ 10, 60,143,119, 6,128,127,254, 15,116, 5, 44,232, 60, 1,119,
/* 0x1bd0 */ 255,131,249, 4,114, 4,139, 7, 40,208,117,255,134,196,193,192,
/* 0x1be0 */ 16,134,196, 41,248, 1,240,131,233, 4,171,131,233, 1,114, 4,
/* 0x1bf0 */ 138, 7, 71,235, 13,131,233, 1,127, 3, 97,195,102,105,108,101,
/* 0x1c00 */ 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45,105, 51,
/* 0x1c10 */ 56, 54, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,
/* 0x1c20 */ 120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
@@ -1576,25 +1576,25 @@ unsigned char stub_i386_linux_elf_interp_entry[45254] = {
/* 0x6010 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x6020 */ 65, 68, 79, 78, 76, 89, 10, 50, 48, 50, 32, 99,116,111,107, 51,
/* 0x6030 */ 50, 46, 48, 48, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x6040 */ 57, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x6040 */ 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x6050 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 98, 98, 54, 32,
/* 0x6060 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x6070 */ 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x6080 */ 10, 50, 48, 51, 32, 99,116,111,107, 51, 50, 46, 49, 48, 32, 32,
/* 0x6090 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,101, 32, 32, 48, 48, 48,
/* 0x60a0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x60b0 */ 32, 48, 48, 48, 48, 49, 98, 98,102, 32, 32, 50, 42, 42, 48, 32,
/* 0x60b0 */ 32, 48, 48, 48, 48, 49, 98, 98,100, 32, 32, 50, 42, 42, 48, 32,
/* 0x60c0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67,
/* 0x60d0 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 50, 48, 52, 32, 99,
/* 0x60e0 */ 116,111,107, 51, 50, 46, 50, 48, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x60f0 */ 48, 48, 48, 50, 49, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x60f0 */ 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x6100 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49,
/* 0x6110 */ 98, 99,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x6110 */ 98, 99, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x6120 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68,
/* 0x6130 */ 79, 78, 76, 89, 10, 50, 48, 53, 32, 99,116,111,107, 51, 50, 46,
/* 0x6140 */ 51, 48, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 55, 32,
/* 0x6140 */ 51, 48, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 97, 32,
/* 0x6150 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x6160 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 98,101,101, 32, 32, 50,
/* 0x6160 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 98,101, 98, 32, 32, 50,
/* 0x6170 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x6180 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 50,
/* 0x6190 */ 48, 54, 32, 99,116,111,107, 51, 50, 46, 52, 48, 32, 32, 32, 32,
@@ -2849,20 +2849,24 @@ unsigned char stub_i386_linux_elf_interp_entry[45254] = {
/* 0xafa0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 53, 32, 82,
/* 0xafb0 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0xafc0 */ 32, 99,116,111,107, 51, 50, 46, 52, 48, 10, 48, 48, 48, 48, 48,
/* 0xafd0 */ 48, 48, 57, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32,
/* 0xafd0 */ 48, 48, 97, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32,
/* 0xafe0 */ 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 52, 48, 10,
/* 0xaff0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
/* 0xb000 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 99,116,111,107, 51, 50, 46,
/* 0xb010 */ 51, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89,
/* 0xb020 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0xb030 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82,
/* 0xb040 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0xb050 */ 32, 99,116,111,107, 51, 50, 46, 49, 48, 10, 10, 82, 69, 76, 79,
/* 0xb060 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0xb070 */ 79, 82, 32, 91, 99,116,111,107, 51, 50, 46, 52, 48, 93, 58, 10,
/* 0xb080 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0xb090 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0xb0a0 */ 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, 95,
/* 0xb0b0 */ 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,116,111,107,
/* 0xb0c0 */ 51, 50, 46, 48, 48, 10
/* 0xaff0 */ 48, 48, 48, 48, 48, 48, 49, 48, 32, 82, 95, 51, 56, 54, 95, 80,
/* 0xb000 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51,
/* 0xb010 */ 50, 46, 52, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
/* 0xb020 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 99,116,
/* 0xb030 */ 111,107, 51, 50, 46, 51, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84,
/* 0xb040 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0xb050 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
/* 0xb060 */ 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32,
/* 0xb070 */ 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 52, 48, 10,
/* 0xb080 */ 48, 48, 48, 48, 48, 48, 48, 57, 32, 82, 95, 51, 56, 54, 95, 80,
/* 0xb090 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51,
/* 0xb0a0 */ 50, 46, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
/* 0xb0b0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 99,116,
/* 0xb0c0 */ 111,107, 51, 50, 46, 52, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84,
/* 0xb0d0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0xb0e0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
/* 0xb0f0 */ 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32,
/* 0xb100 */ 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 48, 48, 10
};