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
+2036 -2018
View File
File diff suppressed because it is too large Load Diff
+2034 -2013
View File
File diff suppressed because it is too large Load Diff
+2037 -2019
View File
File diff suppressed because it is too large Load Diff
+1023 -1006
View File
File diff suppressed because it is too large Load Diff
+1118 -1101
View File
File diff suppressed because it is too large Load Diff
+1110 -1092
View File
File diff suppressed because it is too large Load Diff
+1004 -987
View File
File diff suppressed because it is too large Load Diff
+7 -8
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
+1 -1
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
+3 -7
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
+5 -7
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
+52 -29
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",
+1 -4
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
+2 -2
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
+2 -8
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
+1 -1
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
+2 -5
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
+12 -12
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
+16 -16
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
+12 -12
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
+17 -17
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
+6 -6
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
+6 -6
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
+7 -7
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