The stub occupies the same region that execve() would create for the original progam. The stub copies everything to a new area, erases the original region, replaces it with the de-compressed program, and erases the copy of itself via the escape hatch. The copy is inexpensive via mmap() of /proc/self/exe. modified: stub/src/i386-linux.elf-entry.S modified: stub/src/i386-linux.elf-fold.S modified: stub/src/i386-linux.elf-main.c modified: p_lx_elf.cpp modified: p_lx_elf.h modified: p_lx_interp.cpp modified: p_lx_interp.h modified: p_lx_sh.cpp modified: p_lx_sh.h modified: p_mach.cpp modified: p_mach.h modified: p_unix.cpp modified: p_unix.h modified: p_vmlinx.cpp plus .h, .map, .dump
47 lines
2.0 KiB
Plaintext
47 lines
2.0 KiB
Plaintext
|
|
Memory Configuration
|
|
|
|
Name Origin Length Attributes
|
|
*default* 0x0000000000000000 0xffffffffffffffff
|
|
|
|
Linker script and memory map
|
|
|
|
TARGET(elf32-bigarm)
|
|
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
|
|
|
|
.text 0x0000000000008080 0x9dc
|
|
*(.text)
|
|
.text 0x0000000000008080 0x308 tmp/armeb.v4a-linux.elf-fold.o
|
|
0x00000000000082dc munmap
|
|
0x0000000000008310 get_sys_munmap
|
|
0x00000000000082c4 getpid
|
|
0x00000000000082d4 readlink
|
|
0x00000000000082f8 mmap
|
|
0x00000000000082ec __clear_cache
|
|
0x0000000000008318 mmap_privanon
|
|
0x00000000000082a4 write
|
|
0x000000000000829c read
|
|
0x00000000000082bc unlink
|
|
0x0000000000008290 my_bkpt
|
|
0x0000000000008298 exit
|
|
0x00000000000082cc brk
|
|
0x00000000000082ac open
|
|
0x000000000000832c div10
|
|
0x00000000000082e4 mprotect
|
|
0x00000000000082b4 close
|
|
.text 0x0000000000008388 0x6d4 tmp/armeb.v4a-linux.elf-main.o
|
|
0x00000000000083a8 get_page_mask
|
|
0x000000000000891c upx_main
|
|
*(.data)
|
|
.data 0x0000000000008a5c 0x0 tmp/armeb.v4a-linux.elf-fold.o
|
|
.data 0x0000000000008a5c 0x0 tmp/armeb.v4a-linux.elf-main.o
|
|
|
|
.data
|
|
|
|
.bss 0x0000000000008a5c 0x0
|
|
.bss 0x0000000000008a5c 0x0 tmp/armeb.v4a-linux.elf-fold.o
|
|
.bss 0x0000000000008a5c 0x0 tmp/armeb.v4a-linux.elf-main.o
|
|
LOAD tmp/armeb.v4a-linux.elf-fold.o
|
|
LOAD tmp/armeb.v4a-linux.elf-main.o
|
|
OUTPUT(tmp/armeb.v4a-linux.elf-fold.bin elf32-bigarm)
|