-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.penta
325 lines (225 loc) · 4.89 KB
/
main.penta
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
main >>
program-data =
[] arr
generate-elf-header cat
generate-code cat
generate-data cat
cout program-data write
generate-elf-header >>
-- ELF
[] arr
generate-elf-entry-header cat
generate-elf-program-headers cat
generate-elf-section-headers cat
generate-elf-entry-header >>
-- Elf64_Ehdr
[] arr
-- e_ident
0x7F add 0x45 add 0x4C add 0x46 add
0x02 add 0x01 add 0x01 add 0x00 add
0x0xd to-le cat
-- e_type
0x3xh to-le cat
-- e_machine
0x3Exh to-le cat
-- e_version
0x1xw to-le cat
-- e_entry
0x0000-0000-0804-81C9 to-le cat
-- e_phoff
0x0000-0000-0000-0040 to-le cat
-- e_shoff
0x0000-0000-0000-00B0 to-le cat
-- e_flags
0x0000-0000 to-le cat
-- e_ehsize
0x40xh to-le cat
-- e_phentsize
0x38xh to-le cat
-- e_phnum
0x2xh to-le cat
-- e_shentsize
0x40xh to-le cat
-- e_shnum
0x4xh to-le cat
-- e_shstrndx
0x1xh to-le cat
generate-elf-program-headers >>
[] arr
generate-elf-code-program-header cat
generate-elf-data-program-header cat
generate-elf-code-program-header >>
-- Elf64_Phdr
[] arr
-- p_type
0x1xw to-le cat
-- p_flags
0x5xw to-le cat
-- p_offset
0x0000-0000-0000-01C9 to-le cat
-- p_vaddr
0x0000-0000-0804-81C9 to-le cat
-- p_paddr
0x0000-0000-0804-81C9 to-le cat
-- p_filesz
0x24xd to-le cat
-- p_memsz
0x24xd to-le cat
-- p_align
0x1000xd to-le cat
generate-elf-data-program-header >>
-- Elf64_Phdr
[] arr
-- p_type
0x1xw to-le cat
-- p_flags
0x4xw to-le cat
-- p_offset
0x0000-0000-0000-01ED to-le cat
-- p_vaddr
0x0000-0000-0804-91ED to-le cat
-- p_paddr
0x0000-0000-0804-91ED to-le cat
-- p_filesz
0x18xd to-le cat
-- p_memsz
0x18xd to-le cat
-- p_align
0x1000xd to-le cat
generate-elf-section-headers >>
[] arr
generate-elf-nil-section-header cat
generate-elf-strings-section-header cat
generate-elf-code-section-header cat
generate-elf-data-section-header cat
generate-elf-section-strings-table cat
generate-elf-nil-section-header >>
-- Elf64_Shdr
[] arr
0x0xw to-le cat -- sh_name
0x0xw to-le cat -- sh_type
0x0xd to-le cat -- sh_flags
0x0xd to-le cat -- sh_addr
0x0xd to-le cat -- sh_offset
0x0xd to-le cat -- sh_size
0x0xw to-le cat -- sh_link
0x0xw to-le cat -- sh_info
0x0xd to-le cat -- sh_addralign
0x0xd to-le cat -- sh_entsize
generate-elf-strings-section-header >>
-- Elf64_Shdr
[] arr
-- sh_name
0x1xw to-le cat
-- sh_type
0x3xw to-le cat
-- sh_flags
0x0xd to-le cat
-- sh_addr
0x0000-0000-0804-8000 to-le cat
-- sh_offset
0x0000-0000-0000-01B0 to-le cat
-- sh_size
0x19xd to-le cat
-- sh_link
0x0xw to-le cat
-- sh_info
0x0xw to-le cat
-- sh_addralign
0x1xd to-le cat
-- sh_entsize
0x0xd to-le cat
generate-elf-code-section-header >>
-- Elf64_Shdr
[] arr
-- sh_name
0xBxw to-le cat
-- sh_type
0x1xw to-le cat
-- sh_flags
0x6xd to-le cat
-- sh_addr
0x0000-0000-0804-81C9 to-le cat
-- sh_offset
0x0000-0000-0000-01C9 to-le cat
-- sh_size
0x24xd to-le cat
-- sh_link
0x0xw to-le cat
-- sh_info
0x0xw to-le cat
-- sh_addralign
0x1000xd to-le cat
-- sh_entsize
0x0xd to-le cat
generate-elf-data-section-header >>
-- Elf64_Shdr
[] arr
-- sh_name
0x11xw to-le cat
-- sh_type
0x1xw to-le cat
-- sh_flags
0x2xd to-le cat
-- sh_addr
0x0000-0000-0804-91ED to-le cat
-- sh_offset
0x0000-0000-0000-01ED to-le cat
-- sh_size
0x18xd to-le cat
-- sh_link
0x0xw to-le cat
-- sh_info
0x0xw to-le cat
-- sh_addralign
0x1000xd to-le cat
-- sh_entsize
0x0xd to-le cat
generate-elf-section-strings-table >>
-- shstrtab
[] arr
-- Undefined
0x00 add
-- .shstrtab
0x2E add 0x73 add 0x68 add 0x73 add 0x74 add
0x72 add 0x74 add 0x61 add 0x62 add 0x00 add
-- .text
0x2E add 0x74 add 0x65 add 0x78 add 0x74 add
0x00 add
-- .rodata
0x2E add 0x72 add 0x6F add 0x64 add 0x61 add
0x74 add 0x61 add 0x00 add
generate-code >>
[] arr
-- count
-- mov $0x18,%edx
0xBA add 0x18 add 0x00 add 0x00 add 0x00 add
-- buf
-- lea 0x1018(%rip),%rsi
0x48 add 0x8D add 0x35 add 0x18 add 0x10 add
0x00 add 0x00 add
-- fd
-- mov $0x1,%edi
0xBF add 0x01 add 0x00 add 0x00 add 0x00 add
-- sys_write
-- mov $0x1,%eax
0xB8 add 0x01 add 0x00 add 0x00 add 0x00 add
-- syscall
0x0F add 0x05 add
-- status
-- mov $0x0,%edi
0xBF add 0x00 add 0x00 add 0x00 add 0x00 add
-- sys_write
-- mov $0x1,%eax
0xB8 add 0x3C add 0x00 add 0x00 add 0x00 add
-- syscall
0x0F add 0x05 add
generate-data >>
[] arr
-- 'Hello, Pentagram World!'
0x48 add 0x65 add 0x6C add 0x6C add
0x6F add 0x2C add 0x20 add 0x50 add
0x65 add 0x6E add 0x74 add 0x61 add
0x67 add 0x72 add 0x61 add 0x6D add
0x20 add 0x57 add 0x6F add 0x72 add
0x6C add 0x64 add 0x21 add 0x0A add