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:
parent
0adad4a053
commit
7f062c7ca5
4054
src/stub/arm.v4a-linux.elf-fold.h
generated
4054
src/stub/arm.v4a-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
4047
src/stub/arm.v5a-linux.elf-fold.h
generated
4047
src/stub/arm.v5a-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
4056
src/stub/armeb.v4a-linux.elf-fold.h
generated
4056
src/stub/armeb.v4a-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
2029
src/stub/i386-linux.elf-fold.h
generated
2029
src/stub/i386-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
2219
src/stub/mips.r3000-linux.elf-fold.h
generated
2219
src/stub/mips.r3000-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
2202
src/stub/mipsel.r3000-linux.elf-fold.h
generated
2202
src/stub/mipsel.r3000-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
1991
src/stub/powerpc-linux.elf-fold.h
generated
1991
src/stub/powerpc-linux.elf-fold.h
generated
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
24
src/stub/tmp/arm.v4a-linux.elf-fold.map
generated
vendored
24
src/stub/tmp/arm.v4a-linux.elf-fold.map
generated
vendored
@ -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
|
||||
|
||||
32
src/stub/tmp/arm.v5a-linux.elf-fold.map
generated
vendored
32
src/stub/tmp/arm.v5a-linux.elf-fold.map
generated
vendored
@ -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
|
||||
|
||||
24
src/stub/tmp/armeb.v4a-linux.elf-fold.map
generated
vendored
24
src/stub/tmp/armeb.v4a-linux.elf-fold.map
generated
vendored
@ -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
34
src/stub/tmp/i386-linux.elf-fold.map
generated
vendored
@ -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
|
||||
|
||||
12
src/stub/tmp/mips.r3000-linux.elf-fold.map
generated
vendored
12
src/stub/tmp/mips.r3000-linux.elf-fold.map
generated
vendored
@ -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
|
||||
|
||||
12
src/stub/tmp/mipsel.r3000-linux.elf-fold.map
generated
vendored
12
src/stub/tmp/mipsel.r3000-linux.elf-fold.map
generated
vendored
@ -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
|
||||
|
||||
14
src/stub/tmp/powerpc-linux.elf-fold.map
generated
vendored
14
src/stub/tmp/powerpc-linux.elf-fold.map
generated
vendored
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user