4316
Second attempt at commit 4291. We'll now not copy the headers into memory, but we'll still allocate space for them. Still some security benefits, and I'm gaining confidence that I understand the ELF format.
This commit is contained in:
parent
21b5cf52e2
commit
517a471bc0
|
@ -100,14 +100,15 @@ void dump_elf_header(ostream& out) {
|
|||
uint32_t p_type = 0x1;
|
||||
emit(p_type);
|
||||
// p_offset
|
||||
uint32_t p_offset = 0;
|
||||
uint32_t p_offset = /*size of ehdr*/52 + /*size of phdr*/32;
|
||||
emit(p_offset);
|
||||
// p_vaddr
|
||||
emit(START);
|
||||
uint32_t addr = START+p_offset;
|
||||
emit(addr);
|
||||
// p_paddr
|
||||
emit(START);
|
||||
emit(addr);
|
||||
// p_filesz
|
||||
uint32_t size = (End_of_program-/*we're not using location 0*/1) + /*size of ehdr*/52 + /*size of phdr*/32;
|
||||
uint32_t size = End_of_program - /*we're not using location 0*/1;
|
||||
emit(size);
|
||||
// p_memsz
|
||||
emit(size);
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# instruction mod, reg, Reg/Mem bits scale, index, base
|
||||
# 1-3 bytes 0/1 byte 0/1 byte 0/1/2/4 bytes 0/1/2/4 bytes
|
||||
bb 2a 00 00 00 # copy 0x2a (42) to EBX
|
||||
05 01 00 00 00 # copy 1 to EAX
|
||||
b8 01 00 00 00 # copy 1 to EAX
|
||||
cd 80 # int 80h
|
||||
|
||||
# vim:ft=subx
|
||||
|
|
Binary file not shown.
|
@ -25,11 +25,14 @@ ehdrsize equ $ - ehdr
|
|||
|
||||
phdr: ; Elf32_Phdr
|
||||
dd 1 ; p_type
|
||||
dd 0 ; p_offset
|
||||
dd $$ ; p_vaddr
|
||||
dd $$ ; p_paddr
|
||||
dd filesize ; p_filesz
|
||||
dd filesize ; p_memsz
|
||||
# don't copy ehdr or phdr into the first segment.
|
||||
dd 0x54 ; p_offset
|
||||
# but you can't save on bytes for them, because p_align.
|
||||
# messing with the ORG won't help you here.
|
||||
dd 0x08048054 ; p_vaddr
|
||||
dd 0x08048054 ; p_paddr
|
||||
dd codesize ; p_filesz
|
||||
dd codesize ; p_memsz
|
||||
dd 5 ; p_flags
|
||||
dd 0x1000 ; p_align
|
||||
phdrsize equ $ - phdr
|
||||
|
@ -39,4 +42,4 @@ _start:
|
|||
mov eax, 1
|
||||
int 0x80
|
||||
|
||||
filesize equ $ - $$
|
||||
codesize equ $ - _start
|
||||
|
|
Loading…
Reference in New Issue