?? elfstruc.h
字號:
};struct ELF_HEADER32 { elf32_half e_type; elf32_half e_machine; elf32_word e_version; elf32_addr e_entry; elf32_off e_phoff; elf32_off e_shoff; elf32_word e_flags; elf32_half e_ehsize; elf32_half e_phentsize; elf32_half e_phnum; elf32_half e_shentsize; elf32_half e_shnum; elf32_half e_shstrndx;};struct ELF_HEADER64 { elf64_quarter e_type; elf64_quarter e_machine; elf64_half e_version; elf64_addr e_entry; elf64_off e_phoff; elf64_off e_shoff; elf64_half e_flags; elf64_quarter e_ehsize; elf64_quarter e_phentsize; elf64_quarter e_phnum; elf64_quarter e_shentsize; elf64_quarter e_shnum; elf64_quarter e_shstrndx;};/* * ELF section header *//* indices */#define ELF_SHN_UNDEF 0#define ELF_SHN_ABS 0xfff1#define ELF_SHN_COMMON 0xfff2/* sh_type */#define ELF_SHT_NULL 0#define ELF_SHT_PROGBITS 1#define ELF_SHT_SYMTAB 2#define ELF_SHT_STRTAB 3#define ELF_SHT_RELA 4#define ELF_SHT_HASH 5#define ELF_SHT_DYNAMIC 6#define ELF_SHT_NOTE 7#define ELF_SHT_NOBITS 8#define ELF_SHT_REL 9#define ELF_SHT_SHLIB 10#define ELF_SHT_DYNSYM 11#define ELF_SHT_INIT_ARRAY 14#define ELF_SHT_FINI_ARRAY 15#define ELF_SHT_PREINIT_ARRAY 16/* sh_flags */#define ELF_SHF_WRITE (1<<0)#define ELF_SHF_ALLOC (1<<1)#define ELF_SHF_EXECINSTR (1<<2)// 1<<3 missing#define ELF_SHF_MERGE (1<<4)#define ELF_SHF_STRINGS (1<<5)#define ELF_SHF_INFO_LINK (1<<6)#define ELF_SHF_LINK_ORDER (1<<7)#define ELF_SHF_OS_NONCONFORMING (1<<8)struct ELF_SECTION_HEADER32 { elf32_word sh_name; elf32_word sh_type; elf32_word sh_flags; elf32_addr sh_addr; elf32_off sh_offset; elf32_word sh_size; elf32_word sh_link; elf32_word sh_info; elf32_word sh_addralign; elf32_word sh_entsize;};struct ELF_SECTION_HEADER64 { elf64_half sh_name; elf64_half sh_type; elf64_word sh_flags; elf64_addr sh_addr; elf64_off sh_offset; elf64_word sh_size; elf64_half sh_link; elf64_half sh_info; elf64_word sh_addralign; elf64_word sh_entsize;};/* * ELF program header */#define ELF_PT_NULL 0#define ELF_PT_LOAD 1#define ELF_PT_DYNAMIC 2#define ELF_PT_INTERP 3#define ELF_PT_NOTE 4#define ELF_PT_SHLIB 5#define ELF_PT_PHDR 6#define ELF_PT_TLS 7 /* Thread-local storage segment */#define ELF_PT_NUM 8 /* Number of defined types */#define ELF_PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */#define ELF_PT_GNU_STACK 0x6474e551 /* Indicates stack executability */#define ELF_PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */ #define ELF_PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */struct ELF_PROGRAM_HEADER32 { elf32_word p_type; elf32_off p_offset; elf32_addr p_vaddr; elf32_addr p_paddr; elf32_word p_filesz; elf32_word p_memsz; elf32_word p_flags; elf32_word p_align;} PACKED;struct ELF_PROGRAM_HEADER64 { elf64_half p_type; elf64_half p_flags; elf64_off p_offset; elf64_addr p_vaddr; elf64_addr p_paddr; elf64_word p_filesz; elf64_word p_memsz; elf64_word p_align;};struct ELF_NHEADER32 { elf32_word n_descsz; elf32_word n_namesz; elf32_word n_type;} PACKED;/* * ELF symbol */#define ELF_STB_LOCAL 0#define ELF_STB_GLOBAL 1#define ELF_STB_WEAK 2#define ELF_STT_NOTYPE 0#define ELF_STT_OBJECT 1#define ELF_STT_FUNC 2#define ELF_STT_SECTION 3#define ELF_STT_FILE 4#define ELF_STT_COMMON 5#define ELF32_ST_BIND(i) ((i)>>4)#define ELF32_ST_TYPE(i) ((i)&0xf)#define ELF32_ST_INFO(b,t) (((b)>>4)|((t)&0xf))#define ELF64_ST_BIND(i) ((i)>>4)#define ELF64_ST_TYPE(i) ((i)&0xf)#define ELF64_ST_INFO(b,t) (((b)>>4)|((t)&0xf))struct ELF_SYMBOL32 { elf32_word st_name; elf32_addr st_value; elf32_word st_size; elf_unsigned_char st_info; elf_unsigned_char st_other; elf32_half st_shndx;} PACKED;struct ELF_SYMBOL64 { elf64_half st_name; elf_unsigned_char st_info; elf_unsigned_char st_other; elf64_quarter st_shndx; elf64_word st_value; elf64_word st_size;} PACKED;/* * ELF relocation */#define ELF32_R_SYM(i) ((i)>>8)#define ELF32_R_TYPE(i) ((unsigned char)(i))#define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))#define ELF_R_386_NONE 0#define ELF_R_386_32 1#define ELF_R_386_PC32 2#define ELF_R_386_GOT32 3#define ELF_R_386_PLT32 4#define ELF_R_386_COPY 5#define ELF_R_386_GLOB_DAT 6#define ELF_R_386_JMP_SLOT 7#define ELF_R_386_RELATIVE 8#define ELF_R_386_GOTOFF 9#define ELF_R_386_GOTPC 10struct ELF_REL32 { elf32_addr r_offset; elf32_word r_info;} PACKED;struct ELF_REL64 { elf64_addr r_offset; elf64_word r_info;} PACKED;struct ELF_RELA32 { elf32_addr r_offset; elf32_word r_info; elf32_sword r_addend;} PACKED;struct ELF_RELA64 { elf64_addr r_offset; elf64_word r_info; elf64_sword r_addend;} PACKED;extern byte ELF_HEADER_struct[];extern byte ELF_HEADER32_struct[];extern byte ELF_SECTION_HEADER32_struct[];extern byte ELF_PROGRAM_HEADER32_struct[];extern byte ELF_SYMBOL32_struct[];extern byte ELF_REL32_struct[];extern byte ELF_RELA32_struct[];extern byte ELF_HEADER64_struct[];extern byte ELF_SECTION_HEADER64_struct[];extern byte ELF_PROGRAM_HEADER64_struct[];extern byte ELF_SYMBOL64_struct[];extern byte ELF_REL64_struct[];extern byte ELF_RELA64_struct[];struct ELFAddress { union { uint32 a32; uint64 a64; };};#endif /* __ELFSTRUC_H__ */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -