Variable page size: spread the word by using 'page_' instead of 'PAGE_'

modified:   stub/src/arm.v4a-linux.elf-fold.S
	modified:   stub/src/arm64-linux.elf-entry.S
	modified:   stub/src/i386-linux.elf-entry.S
	modified:   stub/src/i386-linux.elf-fold.S
	modified:   stub/src/i386-linux.elf-main2.c
	modified:   stub/src/mipsel.r3000-linux.elf-entry.S
	modified:   stub/src/mipsel.r3000-linux.elf-fold.S
	modified:   stub/src/powerpc-linux.elf-entry.S
	modified:   stub/src/powerpc-linux.elf-fold.S
	modified:   stub/src/powerpc64-linux.elf-entry.S
           plus genereated *.h *.map
This commit is contained in:
John Reiser 2024-08-19 14:18:55 -07:00
parent 0adad4a053
commit 7f062c7ca5
24 changed files with 10514 additions and 10384 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -53,8 +53,6 @@ PROT_READ= 0x1
O_RDONLY= 0
PAGE_SHIFT= 12
PAGE_SIZE = -(~0<<PAGE_SHIFT)
PATHMAX= 4096
PATH_MAX= 4096
@ -69,7 +67,7 @@ PATH_MAX= 4096
#include "MAX_ELF_HDR.S"
ZERO= . - 3*NBPW
PAGE_MASK= . - 3*NBPW; .globl PAGE_MASK
page_mask= . - 3*NBPW; .globl page_mask
qflg_data = . - 2*NBPW // QNX vs Linux: MAP_PRIVATE | MAP_ANONYMOUS
upxfn_path= . - 1*NBPW // displacement from "zero"
@ -81,10 +79,10 @@ arg5 .req r4
arg6 .req r5
fold_begin: // enter here
b L05 // put PAGE_MASK and qflg_data within short-displacement of uses
b L05 // put page_mask and qflg_data within short-displacement of uses
get_page_mask: .globl get_page_mask
ldr r0,PAGE_MASK
ldr r0,page_mask
ret
get_upxfn_path: .globl get_upxfn_path // char * (*)(void)
@ -98,7 +96,7 @@ get_upxfn_path: .globl get_upxfn_path // char * (*)(void)
// Sometimes Linux enforces page-aligned address
Pprotect: .globl Pprotect
mprotect: .globl mprotect
ldr r12,PAGE_MASK
ldr r12,page_mask
bic r12,arg1,r12 // lo frag
sub arg1,arg1,r12 // page align lo end
add arg2,arg2,r12
@ -120,7 +118,7 @@ mmap: .globl mmap
ldr arg5,[sp,#3*NBPW]
mov arg6,arg6,lsr #12 @ FIXME? convert to page offset in file
mmap_do: // sp: saved r4,r5,lr
ldr r12,PAGE_MASK
ldr r12,page_mask
bic r12,arg1,r12 // lo frag
sub arg1,arg1,r12 // page align lo end
add arg2,arg2,r12
@ -250,8 +248,9 @@ r_elfa .req r9
stmdb sp!,{arg5,arg6} @ arg5,arg6 C-lang calling convention
mov arg4,#MAP_PRIVATE
mov arg3,#PROT_READ
mov arg2,#PAGE_SIZE
ldr arg2,page_mask
mov arg1,#0 @ any address
sub arg2,arg1,arg2 // page_size
call mmap @ no error check: cannot recover
ldmia sp!,{arg1,r1} @ fd, offset
call close

View File

@ -185,7 +185,7 @@ L00:
do_sys __NR_memfd_create
tbz w0,#31,ok_memfd // success
cbz w1,no_memfd // already failed twice
mov w1,wzr; b 0b // try atain without MFD_EXEC
mov w1,wzr; b 0b // try again without MFD_EXEC
no_memfd: // so try /dev/shm
O_RDWR= 2
O_DIRECTORY= 0200000 // 0x010000

View File

@ -72,10 +72,6 @@ __NR_mprotect= 125
ENOSYS= 38 /* Invalid system call number */
NAME_MAX= 255 // # chars in file name; linux/include/uapi/linux/limits.h
PAGE_SHIFT= 12
PAGE_SIZE= ( 1 << PAGE_SHIFT)
PAGE_MASK= (~0 << PAGE_SHIFT)
M_NRV2B_LE32= 2
/*************************************************************************
@ -156,10 +152,10 @@ AT_PAGESZ= 6 // /usr/include/elf.h
mov (%edi),%eax
mov NBPW(%edi),%ecx; add $2*NBPW,%edi
cmp $AT_PAGESZ,%eax; je 5f
mov $1<<12,%ecx // default PAGE_SIZE
mov $1<<12,%ecx // default page_size
test %eax,%eax; jne 0b
5:
neg %ecx // PAGE_MASK
neg %ecx // page_mask
mov %esp,old_sp
mov %ecx,F_PMASK(old_sp)
@ -323,7 +319,7 @@ eof_n2b:
mov $__NR_close,%al; call sys_check_al
mov F_ADRU(%ebp),%eax
add $D_FOLD,%eax // PAGE_MASK, upxfd_path, mflg_data
add $D_FOLD,%eax // page_mask, upxfd_path, mflg_data
/*notrack*/ jmp *%eax
// %esp:
// MATCH_13 ptr unfolded_code; for escape hatch

View File

@ -36,8 +36,6 @@ NBPW= 4
# Memory operands use square brackets: [displ + %reg]
# Literal operands lack square brackets.
PAGE_SIZE= ( 1<<12)
PAGE_MASK= -PAGE_SIZE
PATH_MAX= 4096
ET_DYN= 3
@ -97,7 +95,7 @@ F_LENX= 1*NBPW
F_ADRX= 0*NBPW
ZERO= . - 3*NBPW
PAGE_MASK= . - 3*NBPW
page_mask= . - 3*NBPW
upxfn_path= . - 2*NBPW // displacement to filename string
mflg_data= . - 1*NBPW // QNZ vs Linux
@ -108,8 +106,8 @@ fold_begin:
jmp L10
get_page_mask: .globl get_page_mask
call 0f; 0: pop %ecx
mov %eax,[PAGE_MASK - 0b + %ecx]
call 0f; 0: pop %eax
mov %eax,[page_mask - 0b + %eax]
ret
get_upxfn_path: .globl get_upxfn_path
@ -258,7 +256,7 @@ no_env_pse:
// edi has fd
push MAP_PRIVATE; pop esi
push PROT_READ; pop edx
mov ecx,PAGE_SIZE
call get_page_mask; xor ecx,ecx; sub ecx,eax // page size
sub ebx,ebx // 0 ==> Linux chooses page frame
mov al,__NR_newmmap; call sys_check_al
@ -294,7 +292,7 @@ L60:
Pprotect: .globl Pprotect
xchg ebx,[1*NBPW + esp] // save reg, %ebx= address
mov ecx,ebx // copy address
and ebx, ~0<<12 // page align
call get_page_mask; and ebx,eax // round down to page
sub ecx,%ebx // extra length
add ecx,[2*NBPW + esp] // length
mov edx,[3*NBPW + esp] // bits

View File

@ -1,4 +1,4 @@
/* amd64-linux.elf-main.c -- stub loader for Linux 64-bit ELF executable
/* i386-linux.elf-main.c -- stub loader for Linux 32-bit ELF executable
This file is part of the UPX executable compressor.
@ -522,44 +522,68 @@ unsigned PF_TO_PROT(unsigned flags)
// Find convex hull of PT_LOAD (the minimal interval which covers all PT_LOAD),
// and mmap that much, to be sure that a kernel using exec-shield-randomize
// won't place the first piece in a way that leaves no room for the rest.
static ElfW(Addr) // returns relocation constant
static ptrdiff_t // returns relocation constant
#if defined(__i386__) /*{*/
__attribute__((regparm(3), stdcall))
#endif /*}*/
xfind_pages(unsigned mflags, ElfW(Phdr) const *phdr, int phnum,
ElfW(Addr) *const p_brk
, ElfW(Addr) const elfaddr
)
{
ElfW(Addr) lo= ~0, hi= 0, addr= 0;
mflags += MAP_PRIVATE | MAP_ANONYMOUS; // '+' can optimize better than '|'
size_t PMASK = get_page_mask();
DPRINTF("xfind_pages %%x phdr=%%p %%d elfaddr=%%p %%p PMASK=%%p\\n",
mflags, phdr, phnum, elfaddr, p_brk, PMASK);
for (; --phnum>=0; ++phdr) if (PT_LOAD==phdr->p_type) {
DPRINTF(" p_vaddr=%%p p_memsz=%%p\\n", phdr->p_vaddr, phdr->p_memsz);
ElfW(Addr) lo= ~0, hi= 0, addr = 0, p_align = 0x1000;
DPRINTF("xfind_pages %%x %%p %%d %%p %%p\\n", mflags, phdr, phnum, p_brk, page_mask);
for (; --phnum>=0; ++phdr) if (PT_LOAD==phdr->p_type
#if defined(__arm__) /*{*/
&& phdr->p_memsz
// Android < 4.1 (kernel < 3.0.31) often has PT_INTERP of /system/bin/linker
// with bad PT_LOAD[0]. https://sourceforge.net/p/upx/bugs/221
// Type: EXEC (Executable file)
//
// Program Headers:
// Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
// LOAD 0x0000d4 0x00000000 0xb0000000 0x00000 0x00000 R 0x1000
// LOAD 0x001000 0xb0001000 0xb0001000 0x07614 0x07614 R E 0x1000
// LOAD 0x009000 0xb0009000 0xb0009000 0x006f8 0x0ccdc RW 0x1000
#endif /*}*/
) {
if (phdr->p_vaddr < lo) {
lo = phdr->p_vaddr;
}
if (hi < (phdr->p_memsz + phdr->p_vaddr)) {
hi = phdr->p_memsz + phdr->p_vaddr;
}
}
lo -= ~PMASK & lo; // round down to page boundary
hi = PMASK & (hi - lo - PMASK -1); // page length
if (MAP_FIXED & mflags) {
addr = lo;
}
else if (0==lo) { // -pie ET_DYN
addr = elfaddr;
if (addr) {
mflags |= MAP_FIXED;
if (p_align < phdr->p_align) {
p_align = phdr->p_align;
}
} // end scan of PT_LOADs
size_t const page_mask = get_page_mask();
size_t page_size = 0u - page_mask;
lo &= page_mask; // round down to page boundary
size_t len1 = page_mask & (hi - lo + page_size -1); // desired length
// Linux lacks mmap_aligned(), so allocate a larger space, then trim the ends.
// Avoid division (p_align / page_size); both are powers of 2
unsigned q = 1;
while ((q * page_size) < p_align) q <<= 1;
--q; // number of extra pages
unsigned len2 = len1 + (q * page_size); // get enough space to align
addr = (ElfW(Addr))mmap_privanon((void *)lo, len2, PROT_NONE, mflags);
DPRINTF(" addr=%%p lo=%%p hi=%%p align=%%p q=%%p len1=%%p len2=%%p\\n",
addr, lo, hi, p_align, q, len1, len2, p_align);
if (q) {
size_t len3 = (-1 + p_align) & -addr; // up to p_align boundary
if (len3) {
munmap((void *)addr, len3); // trim the low end
addr += len3;
len2 -= len3;
}
if (len2 -= len1) {
munmap((void *)(addr + len1), len2); // trim the high end
}
}
DPRINTF(" addr=%%p lo=%%p hi=%%p\\n", addr, lo, hi);
// PROT_WRITE allows testing of 64k pages on 4k Linux
addr = (ElfW(Addr))mmap((void *)addr, hi, (DEBUG ? PROT_WRITE : PROT_NONE), // FIXME XXX EVIL
mflags, -1, 0);
DPRINTF(" addr=%%p\\n", addr);
*p_brk = hi + addr; // the logical value of brk(0)
return (ElfW(Addr))(addr - lo);
*p_brk = len1 + addr; // the logical value of brk(0)
return (ptrdiff_t)addr - lo;
}
static ElfW(Addr) // entry address
@ -592,9 +616,8 @@ do_xmap(
}
else { // PT_INTERP
DPRINTF("INTERP ehdr=%%p av=%%p\\n", ehdr, av);
reloc = xfind_pages(
((ET_DYN!=ehdr->e_type) ? MAP_FIXED : 0), phdr, ehdr->e_phnum, &v_brk, *p_reloc
);
reloc = xfind_pages( ((ET_DYN!=ehdr->e_type) ? MAP_FIXED : 0),
phdr, ehdr->e_phnum, &v_brk);
}
DPRINTF("do_xmap ehdr=%%p xi=%%p(%%x %%p) fdi=%%x\\n"
" av=%%p reloc=%%p p_reloc=%%p/%%p\\n",

View File

@ -106,9 +106,6 @@ MAP_PRIVATE= 2
MAP_FIXED= 0x10
MAP_ANONYMOUS= 0x800
PAGE_SHIFT= 12 # default only
PAGE_SIZE = -(~0<<PAGE_SHIFT)
M_NRV2B_LE32=2 # ../conf.h
M_NRV2D_LE32=5
M_NRV2E_LE32=8
@ -279,7 +276,7 @@ main:
beq v1,t0,2f # AT_PAGESZ
lw v0,a_val - sz_auxv(a0)
bnez v1,1b # AT_NULL
li v0,PAGE_SIZE
li v0,1<<12
2:
nop # delay slot if AT_PAGESZ found
neg $r_PMASK,v0

View File

@ -122,7 +122,7 @@ unmap_all_pages= (1<<1)
#define r_LENX 17 /* s1 */
#define r_ADRX 16 /* s0 */
PAGE_MASK: .word 0 # set by elf-entry.S
page_mask: .word 0 # set by elf-entry.S
upxfn_path: .word 0 # set by elf-entry.S
// KNOWN OFFSET == 2*NBPW == 8
@ -191,7 +191,7 @@ Lget_page_mask:
bal 5f // ra= 0f
lw v0,(ra)
0:
.word PAGE_MASK - 0b
.word page_mask - 0b
5:
nop
addu v0,ra

View File

@ -63,12 +63,6 @@ MAP_FIXED= 0x10
MAP_ANONYMOUS= 0x20
MFD_EXEC= 0x10
PAGE_SHIFT= 12
PAGE_SIZE = -(~0<<PAGE_SHIFT)
PAGE_SHIFT64= 16
PAGE_SIZE64 = -(~0<<PAGE_SHIFT64)
/* /usr/include/asm-ppc/unistd.h */
__NR_exit = 1
__NR_memfd_create= 360
@ -189,7 +183,7 @@ SYS_memfd_create= __NR_memfd_create
lwz lsrc,sz_cpr + LBINFO - LrFLD(r_FLD)
la src,sz_b_info + LBINFO - LrFLD(r_FLD) // folded code
bl decompress
stw r_PMASK,0(sp) // forward the actual PAGE_MASK
stw r_PMASK,0(sp) // forward the actual page_mask
mr a0,r_fd
mr a1,sp
@ -252,7 +246,7 @@ main:
lwz r0,a_type(a0); lwz a1,a_val(a0); addi a0,a0,sz_auxv
cmpi cr7,r0,AT_PAGESZ; beq- cr7,2f
cmpi cr0,r0,AT_NULL; bne+ cr0,1b
li a1,PAGE_SIZE // not found; use default
li a1,1<<12 // not found; use default
2:
neg r_PMASK,a1 // save for folded code

View File

@ -237,7 +237,7 @@ p_memsz= 5*NBPW
cmpwi a4,0; blt no_map_pse
li a3,MAP_PRIVATE
li a2,PROT_READ
neg a1,r_PMASK // PAGE_SIZE
neg a1,r_PMASK // page_size
li a0,0 // kernel chooses where
call mmap
// close /proc/self/exe

View File

@ -59,9 +59,6 @@ MAP_FIXED= 0x10
MAP_ANONYMOUS= 0x20
MFD_EXEC= 0x10
PAGE_SHIFT= 16 // 64KiB PAGE_SIZE
PAGE_SIZE = -(~0<<PAGE_SHIFT)
CACHELINE=32
/* /usr/include/asm-ppc/unistd.h */
@ -195,7 +192,7 @@ SYS_memfd_create= __NR_memfd_create
lwz lsrc,sz_cpr + LBINFO - LrFLD(r_FLD)
la src,sz_b_info + LBINFO - LrFLD(r_FLD) // folded code
bctrl // f_exp (decompress)
std r_PMASK,0(sp) // forward the actual PAGE_MASK
std r_PMASK,0(sp) // forward the actual page_mask
mr a0,r_fd
mr a1,sp
@ -278,7 +275,7 @@ main:
ld r0,a_type(a0); ld a1,a_val(a0); addi a0,a0,sz_auxv
cmpdi cr7,r0,AT_PAGESZ; beq- cr7,2f
cmpdi cr0,r0,AT_NULL; bne+ cr0,1b
lis a1,PAGE_SIZE>>16 // not found; use default
lis a1,1 // not found; use default (1<<16)
2:
neg r_PMASK,a1 // save for folded code

View File

@ -7,24 +7,24 @@ Name Origin Length Attributes
Linker script and memory map
.text 0x0000000000000000 0x1078
.text 0x0000000000000000 0x344 tmp/arm.v4a-linux.elf-fold.o
.text 0x0000000000000000 0x10cc
.text 0x0000000000000000 0x348 tmp/arm.v4a-linux.elf-fold.o
0x0000000000000004 get_page_mask
0x00000000000002e4 memcpy
0x0000000000000328 mempcpy
0x00000000000002e8 memcpy
0x000000000000032c mempcpy
0x0000000000000060 mmap
0x0000000000000048 mmap_privanon
0x000000000000000c get_upxfn_path
0x0000000000000308 memset
0x000000000000030c memset
0x00000000fffffff4 page_mask
0x0000000000000024 Pprotect
0x00000000fffffff4 PAGE_MASK
0x0000000000000024 mprotect
.text 0x0000000000000344 0x498 tmp/arm.v4a-linux.elf-upxfd_android.o
0x0000000000000594 upx_mmap_and_fd
.text 0x00000000000007dc 0x0 tmp/arm.v4a-expand.o
.text 0x00000000000007dc 0x89c tmp/arm.v4a-linux.elf-main2.o
0x0000000000001014 underlay
0x0000000000000ee4 upx_main
.text 0x0000000000000348 0x498 tmp/arm.v4a-linux.elf-upxfd_android.o
0x0000000000000598 upx_mmap_and_fd
.text 0x00000000000007e0 0x0 tmp/arm.v4a-expand.o
.text 0x00000000000007e0 0x8ec tmp/arm.v4a-linux.elf-main2.o
0x0000000000001068 underlay
0x0000000000000f38 upx_main
SYSCALLS 0x0000000000000000 0x214
SYSCALLS 0x0000000000000000 0x214 tmp/arm.v4a-linux.elf-fold.o

View File

@ -8,30 +8,30 @@ Linker script and memory map
TARGET(elf32-littlearm)
.text 0x0000000000000000 0x1078
.text 0x0000000000000000 0x10d0
*(.text)
.text 0x0000000000000000 0x344 tmp/arm.v5a-linux.elf-fold.o
.text 0x0000000000000000 0x348 tmp/arm.v5a-linux.elf-fold.o
0x0000000000000004 get_page_mask
0x00000000000002e4 memcpy
0x0000000000000328 mempcpy
0x00000000000002e8 memcpy
0x000000000000032c mempcpy
0x0000000000000060 mmap
0x0000000000000048 mmap_privanon
0x000000000000000c get_upxfn_path
0x0000000000000308 memset
0x000000000000030c memset
0x00000000fffffff4 page_mask
0x0000000000000024 Pprotect
0x00000000fffffff4 PAGE_MASK
0x0000000000000024 mprotect
.text 0x0000000000000344 0x49c tmp/arm.v5a-linux.elf-upxfd_android.o
0x0000000000000594 upx_mmap_and_fd
.text 0x00000000000007e0 0x0 tmp/arm.v5a-expand.o
.text 0x00000000000007e0 0x898 tmp/arm.v5a-linux.elf-main2.o
0x0000000000001014 underlay
0x0000000000000ee4 upx_main
.text 0x0000000000000348 0x49c tmp/arm.v5a-linux.elf-upxfd_android.o
0x0000000000000598 upx_mmap_and_fd
.text 0x00000000000007e4 0x0 tmp/arm.v5a-expand.o
.text 0x00000000000007e4 0x8ec tmp/arm.v5a-linux.elf-main2.o
0x000000000000106c underlay
0x0000000000000f3c upx_main
*(.data)
.data 0x0000000000001078 0x0 tmp/arm.v5a-linux.elf-fold.o
.data 0x0000000000001078 0x0 tmp/arm.v5a-linux.elf-upxfd_android.o
.data 0x0000000000001078 0x0 tmp/arm.v5a-expand.o
.data 0x0000000000001078 0x0 tmp/arm.v5a-linux.elf-main2.o
.data 0x00000000000010d0 0x0 tmp/arm.v5a-linux.elf-fold.o
.data 0x00000000000010d0 0x0 tmp/arm.v5a-linux.elf-upxfd_android.o
.data 0x00000000000010d0 0x0 tmp/arm.v5a-expand.o
.data 0x00000000000010d0 0x0 tmp/arm.v5a-linux.elf-main2.o
SYSCALLS 0x0000000000000000 0x214
SYSCALLS 0x0000000000000000 0x214 tmp/arm.v5a-linux.elf-fold.o

View File

@ -7,24 +7,24 @@ Name Origin Length Attributes
Linker script and memory map
.text 0x0000000000000000 0x108c
.text 0x0000000000000000 0x344 tmp/armeb.v4a-linux.elf-fold.o
.text 0x0000000000000000 0x10e0
.text 0x0000000000000000 0x348 tmp/armeb.v4a-linux.elf-fold.o
0x0000000000000004 get_page_mask
0x00000000000002e4 memcpy
0x0000000000000328 mempcpy
0x00000000000002e8 memcpy
0x000000000000032c mempcpy
0x0000000000000060 mmap
0x0000000000000048 mmap_privanon
0x000000000000000c get_upxfn_path
0x0000000000000308 memset
0x000000000000030c memset
0x00000000fffffff4 page_mask
0x0000000000000024 Pprotect
0x00000000fffffff4 PAGE_MASK
0x0000000000000024 mprotect
.text 0x0000000000000344 0x498 tmp/armeb.v4a-linux.elf-upxfd_android.o
0x0000000000000594 upx_mmap_and_fd
.text 0x00000000000007dc 0x0 tmp/armeb.v4a-expand.o
.text 0x00000000000007dc 0x8b0 tmp/armeb.v4a-linux.elf-main2.o
0x0000000000001028 underlay
0x0000000000000ef4 upx_main
.text 0x0000000000000348 0x498 tmp/armeb.v4a-linux.elf-upxfd_android.o
0x0000000000000598 upx_mmap_and_fd
.text 0x00000000000007e0 0x0 tmp/armeb.v4a-expand.o
.text 0x00000000000007e0 0x900 tmp/armeb.v4a-linux.elf-main2.o
0x000000000000107c underlay
0x0000000000000f48 upx_main
SYSCALLS 0x0000000000000000 0x214
SYSCALLS 0x0000000000000000 0x214 tmp/armeb.v4a-linux.elf-fold.o

34
src/stub/tmp/i386-linux.elf-fold.map generated vendored
View File

@ -7,17 +7,17 @@ Name Origin Length Attributes
Linker script and memory map
.text 0x0000000000000000 0xdbc
.text 0x0000000000000000 0x18c tmp/i386-linux.elf-fold.o
.text 0x0000000000000000 0xdf6
.text 0x0000000000000000 0x190 tmp/i386-linux.elf-fold.o
0x0000000000000008 get_page_mask
0x0000000000000015 get_upxfn_path
.text 0x000000000000018c 0x46f tmp/i386-linux.elf-upxfd_android.o
0x00000000000003a3 upx_mmap_and_fd
*fill* 0x00000000000005fb 0x1 00
.text 0x00000000000005fc 0x0 tmp/i386-expand.o
.text 0x00000000000005fc 0x7c0 tmp/i386-linux.elf-main2.o
0x0000000000000751 underlay
0x0000000000000c68 upx_main
.text 0x0000000000000190 0x46f tmp/i386-linux.elf-upxfd_android.o
0x00000000000003a7 upx_mmap_and_fd
*fill* 0x00000000000005ff 0x1 00
.text 0x0000000000000600 0x0 tmp/i386-expand.o
.text 0x0000000000000600 0x7f6 tmp/i386-linux.elf-main2.o
0x0000000000000755 underlay
0x0000000000000ca2 upx_main
.data 0x0000000000000000 0x0
.data 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o
@ -40,15 +40,15 @@ OUTPUT(tmp/i386-linux.elf-fold.bin elf32-i386)
SYSCALLS 0x0000000000000000 0xc0
SYSCALLS 0x0000000000000000 0xc0 tmp/i386-linux.elf-fold.o
0x000000000000008f memcpy
0x00000000000000a5 mempcpy
0x000000000000002a mmap
0x000000000000005a uname
0x000000000000007b memset
0x00000000000000bb my_bkpt
0x0000000000000090 memcpy
0x00000000000000a6 mempcpy
0x000000000000002b mmap
0x000000000000005b uname
0x000000000000007c memset
0x00000000000000bc my_bkpt
0x0000000000000000 Pprotect
0x0000000000000048 stat
0x0000000000000069 mkdir
0x0000000000000049 stat
0x000000000000006a mkdir
.note.GNU-stack
0x0000000000000000 0x0

View File

@ -8,18 +8,18 @@ Linker script and memory map
TARGET(elf32-bigmips)
.text 0x0000000000000000 0xdcc
.text 0x0000000000000000 0xe68
*(.text)
.text 0x0000000000000000 0xdcc tmp/mips.r3000-linux.elf-fold.o
.text 0x0000000000000000 0xe68 tmp/mips.r3000-linux.elf-fold.o
0x00000000000000d0 get_page_mask
0x0000000000000cac upx_mmap_and_fd
0x0000000000000d48 upx_mmap_and_fd
0x00000000000000f0 get_upxfn_path
0x0000000000000c40 underlay
0x0000000000000aa8 upx_main
0x0000000000000cdc underlay
0x0000000000000b44 upx_main
0x0000000000000010 get4unal
0x0000000000000128 close
*(.data)
.data 0x0000000000000dcc 0x0 tmp/mips.r3000-linux.elf-fold.o
.data 0x0000000000000e68 0x0 tmp/mips.r3000-linux.elf-fold.o
SYSCALLS 0x0000000000000000 0x178
SYSCALLS 0x0000000000000000 0x178 tmp/mips.r3000-linux.elf-fold.o

View File

@ -8,18 +8,18 @@ Linker script and memory map
TARGET(elf32-littlemips)
.text 0x0000000000000000 0xdbc
.text 0x0000000000000000 0xe58
*(.text)
.text 0x0000000000000000 0xdbc tmp/mipsel.r3000-linux.elf-fold.o
.text 0x0000000000000000 0xe58 tmp/mipsel.r3000-linux.elf-fold.o
0x00000000000000d0 get_page_mask
0x0000000000000c9c upx_mmap_and_fd
0x0000000000000d38 upx_mmap_and_fd
0x00000000000000f0 get_upxfn_path
0x0000000000000c30 underlay
0x0000000000000a98 upx_main
0x0000000000000ccc underlay
0x0000000000000b34 upx_main
0x0000000000000010 get4unal
0x0000000000000128 close
*(.data)
.data 0x0000000000000dbc 0x0 tmp/mipsel.r3000-linux.elf-fold.o
.data 0x0000000000000e58 0x0 tmp/mipsel.r3000-linux.elf-fold.o
SYSCALLS 0x0000000000000000 0x178
SYSCALLS 0x0000000000000000 0x178 tmp/mipsel.r3000-linux.elf-fold.o

View File

@ -8,7 +8,7 @@ Linker script and memory map
TARGET(elf32-powerpc)
.text 0x0000000000000000 0x1350
.text 0x0000000000000000 0x1408
*(.text)
.text 0x0000000000000000 0x294 tmp/powerpc-linux.elf-fold.o
0x0000000000000048 Pmap
@ -18,14 +18,14 @@ TARGET(elf32-powerpc)
.text 0x0000000000000294 0x130 tmp/powerpc-linux.elf-upxfd_android.o
0x0000000000000294 upx_mmap_and_fd
.text 0x00000000000003c4 0x0 tmp/powerpc-expand.o
.text 0x00000000000003c4 0xf8c tmp/powerpc-linux.elf-main2.o
.text 0x00000000000003c4 0x1044 tmp/powerpc-linux.elf-main2.o
0x00000000000008bc underlay
0x000000000000113c upx_main
0x00000000000011f4 upx_main
*(.data)
.data 0x0000000000001350 0x0 tmp/powerpc-linux.elf-fold.o
.data 0x0000000000001350 0x0 tmp/powerpc-linux.elf-upxfd_android.o
.data 0x0000000000001350 0x0 tmp/powerpc-expand.o
.data 0x0000000000001350 0x0 tmp/powerpc-linux.elf-main2.o
.data 0x0000000000001408 0x0 tmp/powerpc-linux.elf-fold.o
.data 0x0000000000001408 0x0 tmp/powerpc-linux.elf-upxfd_android.o
.data 0x0000000000001408 0x0 tmp/powerpc-expand.o
.data 0x0000000000001408 0x0 tmp/powerpc-linux.elf-main2.o
.data