-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlibtiny.02.s
158 lines (127 loc) · 3.63 KB
/
libtiny.02.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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
; 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
dq __libc_start_main ; e_entry
dq phdr0 - $$ ; e_phoff
dq shdr4 - $$ ; e_shoff
dd 0 ; e_flags
dw ehdrsize ; e_ehsize
dw phdrsize ; e_phentsize
dw 3 ; e_phnum
dw shdrsize ; e_shentsize
dw 1 ; e_shnum
dw 0 ; e_shstrndx
ehdrsize equ $ - ehdr
phdr0: ; ELF64_Phdr
dd 1 ; p_type
dd 5 ; p_flags
dq 0 ; p_offset
dq $$ ; p_vaddr
dq $$ ; p_paddr
dq filesize ; p_filesz
dq filesize ; p_memsz
dq 0x00200000 ; p_align
phdrsize equ $ - phdr0
phdr1:
dd 1 ; p_type
dd 6 ; p_flags
dq dynamic - $$ ; p_offset
dq dynamic - $$ + 0x00200000 ; p_vaddr
dq dynamic - $$ + 0x00200000 ; p_paddr
dq dynamicsize ; p_filesz
dq dynamicsize ; p_memsz
dq 0x00200000 ; p_align
phdr2:
dd 2 ; p_type
dd 6 ; p_flags
dq dynamic - $$ ; p_offset
dq dynamic - $$ + 0x00200000 ; p_vaddr
dq dynamic - $$ + 0x00200000 ; p_paddr
dq dynamicsize ; p_filesz
dq dynamicsize ; p_memsz
dq 0x00200000 ; p_align
hash:
dd 1
dd 2
dd 1
dd 0, 0
hashsize equ $ - hash
dynsym:
; symbol: none
; name
dd 0
; type
db 0
; visibility
db 0
; shndx
dw 0
; value
dq 0
; size
dq 0
; symbol: __libc_start_main
; name
dd lsm - sb
; type
db 18
; visibility
db 0
; shndx
dw 1
; value
dq __libc_start_main - $$
; size
dq 0
dynsymsize equ $ - dynsym
dynstr:
sb db 0
lsm db "__libc_start_main"
db 0
dynstrsize equ $ - dynstr
text:
__libc_start_main:
xor rdx, rdx
mov rbx, 0x0068732f6e69622f
push rbx
mov rdi, rsp
xor rax,rax
push rax
push rdi
mov rsi,rsp
mov al, 0x3b ; execve(3b)
syscall
textsize equ $ - text
filesize equ $ - $$
dynamic:
dq 4
dq hash
dq 5
dq dynstr
dq 6
dq dynsym
dq 10
dq dynstrsize
dynamicsize equ $ - dynamic
shstrtab:
db 0
s0 db ".shstrtab"
db 0
shstrtabsize equ $ - shstrtab
shdr4: ;.shstrtab
dd s0 - shstrtab
dd 3
dq 0
dq 0
dq shstrtab - $$
dq shstrtabsize
dd 0
dd 0
dq 1
dq 0
shdrsize equ $ - shdr4