blob: c67246f3bca4ef6752c7a427acd51cb8e51e8a37 (
plain)
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
|
(let ( (elf (elf/new!))
(entrypoint 0x696000)
(toff 0x1000)
(phdroff 0x2000)
)
(elf/write-bytes! elf toff
'( 0x48 0xc7 0xc0 0x3c 0x00 0x00 0x00
0x48 0xc7 0xc7 0x2a 0x00 0x00 0x00
0x0f 0x05 ))
(elf/write-program-header! elf (+ phdroff elf/64_PROGRAM_HEADER_SIZE)
:type elf/PROGRAM_HEADER_TYPE_LOAD
:offset toff
:virtual-addr entrypoint
:file-size 0x100
:mem-size 0x100
:flags (bitwise/or elf/PROGRAM_HEADER_FLAG_R elf/PROGRAM_HEADER_FLAG_X)
)
(elf/write-header! elf
:type elf/TYPE_EXEC
:machine elf/MACHINE_AMD64
:program-header-offset phdroff
:program-header-entry-size elf/64_PROGRAM_HEADER_SIZE
:program-header-entries 2
:section-header-offset 0
:section-header-entry-size elf/64_SECTION_HEADER_SIZE
:section-header-entries 0
:entry entrypoint
)
(elf/spit! "test.elf" elf)
)
|