Created
September 3, 2022 00:24
-
-
Save typeswitch-dev/8c0baef76ed6086ed2ce24193bc4d5b0 to your computer and use it in GitHub Desktop.
Revisions
-
typeswitch-dev created this gist
Sep 3, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,55 @@ bits 64 org 0x4000000 elf_header: .size equ .end - $ .e_ident db 0x7F, 'E', 'L', 'F' ; EI_MAG0 ... EI_MAG3 db 2 ; EI_CLASS: 1 => 32 bits, 2 => 64 bits db 1 ; EI_DATA: 1 => lil endian, 2 => big " db 1 ; EI_VERSION: original version db 0 ; EI_OSABI: 0 => System V ABI db 0 ; EI_ABIVERSION times 7 db 0 ; EI_PAD: padding .e_type dw 0x0002 ; executable file .e_machine dw 0x003E ; target architecture .e_version dd 1 ; original version .e_entry dq start ; program entry point .e_phoff dq program_header.off ; program header offset .e_shoff dq section_header.off ; section header offset .e_flags dd 0x0 ; flags depending on target .e_ehsize dw elf_header.size ; size of elf_header .e_phentsiz dw program_header.esize ; size of a program header entry .e_phnum dw program_header.count ; number of program header entries .e_shentsiz dw section_header.esize ; size of a section header entry .e_shnum dw section_header.count ; number of section header entries .e_shstrndx dw 0 ; index of section names entry .end: program_header: .off equ $ - elf_header .esize equ .eend - $ .count equ 1 .p_type dd 0x1 ; PT_LOAD: loadable segment .p_flags dd 0x7 ; flags, RWX permission .p_offset dq 0 ; offset of segment .p_vaddr dq program.start ; virtual address of segment .p_paddr dq 0 ; physical address of segment .p_filesz dq program.size ; size in file .p_memsz dq program.size ; size in memory .p_align dq 0 ; align .eend: section_header: ; no section header required! .off equ 0 .count equ 0 .esize equ 0 start: mov rax, 60 ; exit syscall mov rdi, 42 ; exit code syscall program: .start equ elf_header .end equ $ .size equ .end - .start