-
Notifications
You must be signed in to change notification settings - Fork 0
/
libtiny.14.s
105 lines (90 loc) · 2.73 KB
/
libtiny.14.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
; HW_4.asm
BITS 64
ehdr: ; ELF64_Ehdr
db 0x7F, "ELF", 2, 1, 1, 0 ; e_indent
times 8 db 0 ; EI_PAD
dw 3 ; e_type
dw 0x3e ; e_machine
dd 1 ; e_version
scl dq 0x0068732f6e69622f ; e_entry
dq phdr1 - $$ ; e_phoff
plc mov al, 0x3b
syscall
dd 0 ; e_shoff
dd 0 ; e_flags
dw ehdrsize ; e_ehsize
dw phdrsize ; e_phentsize
dw 2 ; e_phnum
dw 64 ; e_shentsize
dw 0 ; e_shnum
dw 0 ; e_shstrndx
ehdrsize equ $ - ehdr
phdr1:
dd 1 ; p_type
dd 7 ; p_flags
dq $$ ; p_offset
dq $$ ; p_vaddr
lab xor rax, rax
jmp lab2
db 0
db 0
db 0
; dq $$ ; p_paddr
dq filesize ; p_filesz
dq filesize ; p_memsz
dq 0 ; p_align
phdrsize equ $ - phdr1
phdr2:
dd 2 ; p_type
dd 7 ; p_flags
dq dynamic - $$ ; p_offset
dq dynamic - $$ ; p_vaddr
lab2 push rax
push rdi
mov rsi, rsp
jmp plc ; p_paddr
dq dynamicsize ; p_filesz
db dynamicsize ; p_memsz
dynsym:
yo xor rdx, rdx ;3 bytes
push qword [rel scl] ;6 bytes
mov rdi, rsp
jmp lab
db 0 ; p_align: header ends here
db 0
; size
dq 0
; symbol: __libc_start_main
; name
dd lsm - sb
; type
db 18
; visibility
db 0
; shndx
dw 1
; value
dq yo - $$
dynamic:
; size
dq 4
; symbol: __libc_start_main end
dynsymsize equ $ - dynsym
dq hash
dq 5
dq dynstr
dq 6
dq dynsym
hash:
dd 1
dd 2
dd 1
dd 0
dw 0
db 0
dynstr:
sb db 0 ; hash ends here
hashsize equ $ - hash
lsm db "__libc_start_main"
filesize equ $ - $$
dynamicsize equ $ - dynamic