More Control Flow Integrity (Intel)

More ENDBRxx for CALL *%RDX for 'getbit'.
amd64: LEA xxx(%rip),%reg and STRCON section,
    instead of CALL; .asciz "..."; POP %reg
(Not for PE due to WINDOWS_BACK binary compatibility.)
i386 string constants still use call-.asciz-pop because no (%rip)
	modified:   ../misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
	modified:   p_lx_elf.cpp
	modified:   stub/src/amd64-linux.elf-entry.S
	modified:   stub/src/amd64-linux.elf-main2.c
	modified:   stub/src/amd64-linux.elf-so_entry.S
	modified:   stub/src/amd64-linux.shlib-init.S
	modified:   stub/src/amd64-win64.pe.S
	modified:   stub/src/i386-linux.elf-entry.S
	modified:   stub/src/i386-linux.elf-so_entry.S
	modified:   stub/src/upxfd_android.c
           plus generated *.h *.map *.dump
This commit is contained in:
John Reiser
2024-09-20 13:41:43 -07:00
parent d55fdf2205
commit 3403b87cb7
19 changed files with 2258 additions and 2223 deletions
+6 -3
View File
@@ -8,13 +8,13 @@ Linker script and memory map
0x000000000010004c . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000000000 0x9a8
.text 0x0000000000000000 0x9a2
.text 0x0000000000000000 0x164 tmp/amd64-linux.elf-fold.o
0x000000000000015c get_page_mask
.text 0x0000000000000164 0x0 tmp/amd64-expand.o
.text 0x0000000000000164 0x844 tmp/amd64-linux.elf-main2.o
.text 0x0000000000000164 0x83e tmp/amd64-linux.elf-main2.o
0x00000000000002b9 underlay
0x0000000000000873 upx_main
0x000000000000086d upx_main
.data 0x0000000000000000 0x0
.data 0x0000000000000000 0x0 tmp/amd64-linux.elf-fold.o
@@ -79,3 +79,6 @@ LZMA_DEC30 0x0000000000000000 0x19
EXP_TAIL 0x0000000000000000 0x14
EXP_TAIL 0x0000000000000000 0x14 tmp/amd64-expand.o
STRCON 0x0000000000000000 0x8
STRCON 0x0000000000000000 0x8 tmp/amd64-linux.elf-main2.o
+3 -3
View File
@@ -2,8 +2,8 @@ file format elf64-x86-64
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 ELFMAINX 0fd 0 0 040 2**0 CONTENTS
1 ELFMAINZ 06 0 0 013d 2**0 CONTENTS
0 ELFMAINX 0101 0 0 040 2**0 CONTENTS
1 ELFMAINZ 06 0 0 0141 2**0 CONTENTS
SYMBOL TABLE:
0000000000000000 l d ELFMAINX 0 ELFMAINX
0000000000000000 l ELFMAINX 0 _start
@@ -15,4 +15,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE
0000000000000002 R_X86_64_PC32 ELFMAINX+0x0000000000000019
0000000000000002 R_X86_64_PC32 ELFMAINX+0x000000000000001d
+14 -14
View File
@@ -3,17 +3,17 @@ file format elf64-x86-64
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 ELFMAINX 01c 0 0 040 2**0 CONTENTS
1 NRV_HEAD 06a 0 0 05c 2**0 CONTENTS
2 NRV2E 0ba 0 0 0c6 2**0 CONTENTS
3 NRV2D 0a1 0 0 0180 2**0 CONTENTS
4 NRV2B 093 0 0 0221 2**0 CONTENTS
5 LZMA_ELF00 065 0 0 02b4 2**0 CONTENTS
6 LZMA_DEC10 09f7 0 0 0319 2**0 CONTENTS
7 LZMA_DEC20 09f7 0 0 0d10 2**0 CONTENTS
8 LZMA_DEC30 01b 0 0 01707 2**0 CONTENTS
9 NRV_TAIL 0 0 0 01722 2**0 CONTENTS
10 ELFMAINY 03a 0 0 01722 2**0 CONTENTS
11 ELFMAINZ 01b5 0 0 0175c 2**0 CONTENTS
1 NRV_HEAD 06e 0 0 05c 2**0 CONTENTS
2 NRV2E 0ba 0 0 0ca 2**0 CONTENTS
3 NRV2D 0a1 0 0 0184 2**0 CONTENTS
4 NRV2B 093 0 0 0225 2**0 CONTENTS
5 LZMA_ELF00 065 0 0 02b8 2**0 CONTENTS
6 LZMA_DEC10 09f7 0 0 031d 2**0 CONTENTS
7 LZMA_DEC20 09f7 0 0 0d14 2**0 CONTENTS
8 LZMA_DEC30 01b 0 0 0170b 2**0 CONTENTS
9 NRV_TAIL 0 0 0 01726 2**0 CONTENTS
10 ELFMAINY 03a 0 0 01726 2**0 CONTENTS
11 ELFMAINZ 01b5 0 0 01760 2**0 CONTENTS
SYMBOL TABLE:
0000000000000000 l d NRV_HEAD 0 NRV_HEAD
0000000000000000 l d LZMA_DEC30 0 LZMA_DEC30
@@ -39,17 +39,17 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE
00000000000000af R_X86_64_PC32 NRV_HEAD+0x0000000000000022
00000000000000af R_X86_64_PC32 NRV_HEAD+0x0000000000000026
000000000000005c R_X86_64_PC32 eof_n2e+0xfffffffffffffffc
RELOCATION RECORDS FOR [NRV2D]:
OFFSET TYPE VALUE
0000000000000096 R_X86_64_PC32 NRV_HEAD+0x0000000000000022
0000000000000096 R_X86_64_PC32 NRV_HEAD+0x0000000000000026
000000000000005c R_X86_64_PC32 eof_n2d+0xfffffffffffffffc
RELOCATION RECORDS FOR [NRV2B]:
OFFSET TYPE VALUE
000000000000008b R_X86_64_PC32 NRV_HEAD+0x0000000000000022
000000000000008b R_X86_64_PC32 NRV_HEAD+0x0000000000000026
0000000000000053 R_X86_64_PC32 eof_n2b+0xfffffffffffffffc
RELOCATION RECORDS FOR [LZMA_ELF00]:
+22 -22
View File
@@ -2,37 +2,37 @@ file format elf32-i386
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 ELFMAINX 06da 0 0 034 2**2 CONTENTS
1 ELFMAINZ 0a 0 0 070e 2**0 CONTENTS
0 ELFMAINX 06de 0 0 034 2**2 CONTENTS
1 ELFMAINZ 0a 0 0 0712 2**0 CONTENTS
SYMBOL TABLE:
00000000 l d ELFMAINX 0 ELFMAINX
00000000 l d ELFMAINZ 0 ELFMAINZ
00000482 g F ELFMAINX 0258 upx_mmap_and_fd
00000486 g F ELFMAINX 0258 upx_mmap_and_fd
00000000 *UND* 0 O_BINFO
000001d4 g ELFMAINX 0 mempcpy
0000017a g ELFMAINX 0 mmap
0000019d g ELFMAINX 0 uname
00000188 g ELFMAINX 0 get_upxfn_path
000001d8 g ELFMAINX 0 mempcpy
0000017e g ELFMAINX 0 mmap
000001a1 g ELFMAINX 0 uname
0000018c g ELFMAINX 0 get_upxfn_path
00000000 g ELFMAINX 0 _start
000001c2 g ELFMAINX 0 memset
000001f4 g ELFMAINX 0 my_bkpt
0000018b g ELFMAINX 0 stat
000001ac g ELFMAINX 0 mkdir
000001c6 g ELFMAINX 0 memset
000001f8 g ELFMAINX 0 my_bkpt
0000018f g ELFMAINX 0 stat
000001b0 g ELFMAINX 0 mkdir
RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE
00000005 R_386_PC32 ELFMAINZ
000000a5 R_386_PC32 upx_mmap_and_fd
00000152 R_386_PC32 mmap
0000020c R_386_PC32 memset
0000025b R_386_PC32 my_bkpt
00000321 R_386_PC32 my_bkpt
00000355 R_386_PC32 mempcpy
000003b1 R_386_PC32 mempcpy
00000500 R_386_PC32 my_bkpt
00000579 R_386_PC32 get_upxfn_path
0000062a R_386_PC32 memset
000006ae R_386_PC32 mmap
000000a9 R_386_PC32 upx_mmap_and_fd
00000156 R_386_PC32 mmap
00000210 R_386_PC32 memset
0000025f R_386_PC32 my_bkpt
00000325 R_386_PC32 my_bkpt
00000359 R_386_PC32 mempcpy
000003b5 R_386_PC32 mempcpy
00000504 R_386_PC32 my_bkpt
0000057d R_386_PC32 get_upxfn_path
0000062e R_386_PC32 memset
000006b2 R_386_PC32 mmap
RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE