-
Notifications
You must be signed in to change notification settings - Fork 0
/
libtiny.05.s
116 lines (94 loc) · 2.76 KB
/
libtiny.05.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
; 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 phdr1 - $$ ; e_phoff
dq 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
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
dq dynamic - $$ ; p_paddr
dq dynamicsize ; p_filesz
db dynamicsize ; p_memsz
dynsym:
db 0
db 0
db 0
db 0
db 0
db 0
db 0
dq 0 ; p_align
db 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
dynamic:
dq 4
dq hash
dq 5
dq dynstr
dq 6
dq dynsym
hash:
dd 1
dd 2
dd 1
dd 0, 0
hashsize equ $ - hash
dynstr:
sb db 0
lsm db "__libc_start_main"
db 0
dynstrsize equ $ - dynstr
__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
filesize equ $ - $$
dynamicsize equ $ - dynamic