--- /dev/null
+#ifndef _ELF_H_
+#define _ELF_H_
+
+
+// \8fC\90³BSD\83\89\83C\83Z\83\93\83X\8eg\97p
+
+//Elf32_Addr 32bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf32_Half 16bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf32_Off 32bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf32_Sword 32bit\95\84\8d\86\95t\82«\90®\90\94
+//Elf32_Word 32bit\95\84\8d\86\96³\82µ\90®\90\94
+//
+//Elf64_Addr 64bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf64_Half 16bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf64_Off 64bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf64_Sword 32bit\95\84\8d\86\95t\82«\90®\90\94
+//Elf64_Word 32bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf64_Xword 64bit\95\84\8d\86\96³\82µ\90®\90\94
+//Elf64_Sxword 64bit\95\84\8d\86\95t\82«\90®\90\94
+
+
+/********************************************************************************
+ ELF\83w\83b\83_
+********************************************************************************/
+// 52byte
+struct Elf32_Ehdr {
+ unsigned char chare_ident[16];/* 16byte\82Ì\83}\83W\83b\83N\83R\81[\83h */
+ unsigned short e_type; /* \8dÄ\94z\92u\89Â\94\\82â\8eÀ\8ds\89Â\94\\93\99\82ÌELF\82Ì\8c`\8e®\82ð\95\\82·\81B */
+ unsigned short e_machine; /* \83t\83@\83C\83\8b\82Å\97v\8b\81\82³\82ê\82é\83A\81[\83L\83e\83N\83`\83\83 */
+ unsigned long e_version; /* ELF\83t\83H\81[\83}\83b\83g\82Ì\83o\81[\83W\83\87\83\93\82Å\8c»\8dÝ\82Í1 */
+ unsigned long e_entry; /* \83v\83\8d\83O\83\89\83\80\82Ì\83G\83\93\83g\83\8a\83|\83C\83\93\83g\81B\8ew\92è\96³\82µ\82È\82ç0\81B */
+ unsigned long e_phoff; /* \83v\83\8d\83O\83\89\83\80\83w\83b\83_\83e\81[\83u\83\8b\82Ì\83t\83@\83C\83\8b\90æ\93ª\82©\82ç\82Ì\83I\83t\83Z\83b\83g */
+ unsigned long e_shoff; /* \8eÀ\8ds\8e\9e\82É\82Í\8eg\82í\82ê\82È\82¢ */
+ unsigned long e_flags; /* \83v\83\8d\83Z\83b\83T\8cÅ\97L\82Ì\83t\83\89\83O */
+ unsigned short e_ehsize; /* ELF\83w\83b\83_\82Ì\83T\83C\83Y */
+ unsigned short e_phentsize; /* \83v\83\8d\83O\83\89\83\80\83w\83b\83_\83e\81[\83u\83\8b\82Ì1\97v\91f\82 \82½\82è\82Ì\83T\83C\83Y */
+ unsigned short e_phnum; /* \83v\83\8d\83O\83\89\83\80\83w\83b\83_\83e\81[\83u\83\8b\82Ì\97v\91f\90\94 */
+ unsigned short e_shentsize; /* \8eÀ\8ds\8e\9e\82É\82Í\8eg\82í\82ê\82È\82¢ */
+ unsigned short e_shnum; /* \8eÀ\8ds\8e\9e\82É\82Í\8eg\82í\82ê\82È\82¢ */
+ unsigned short e_shstrndx; /* \8eÀ\8ds\8e\9e\82É\82Í\8eg\82í\82ê\82È\82¢ */
+};
+
+// 64byte
+//struct Elf64_Ehdr {
+// unsigned char e_ident[16];
+// unsigned short e_type;
+// unsigned short e_machine;
+// unsigned long e_version;
+// unsigned long long e_entry;
+// unsigned long long e_phoff;
+// unsigned long long e_shoff;
+// unsigned long e_flags;
+// unsigned short e_ehsize;
+// unsigned short e_phentsize;
+// unsigned short e_phnum;
+// unsigned short e_shentsize;
+// unsigned short e_shnum;
+// unsigned short e_shstrndx;
+//};
+
+/********************************************************************************
+ \83v\83\8d\83O\83\89\83\80\83w\83b\83_\83e\81[\83u\83\8b
+********************************************************************************/
+enum {
+ PT_NULL, /* \8eg\82í\82ê\82È\82¢\83G\83\93\83g\83\8a\82Å\81A\91¼\82Ì\83\81\83\93\83o\82Ì\92l\82Ì\88Ó\96¡\82Í\96¢\92è\8b` */
+ PT_LOAD, /* \8eÀ\8ds\8e\9e\82É\83\8d\81[\83h\82³\82ê\82é\83Z\83O\83\81\83\93\83g */
+ PT_DYNAMIC, /* \93®\93I\8d\\91¢\91Ì\94z\97ñ\82ð\95Û\8e\9d\82·\82é\83Z\83O\83\81\83\93\83g */
+ PT_INTERP, /* \83t\83@\83C\83\8b\82Ì\89ð\8eß\82É\8eg\82í\82ê\82é\83C\83\93\83^\83v\83\8a\83^\82Ì\83p\83X\82ð\95Û\8e\9d\82·\82é\83Z\83O\83\81\83\93\83g */
+ PT_NOTE, /* \83t\83@\83C\83\8b\82Ì\89ð\8eß\82É\82Í\8eg\82í\82ê\82È\82¢\8fî\95ñ\82ð\95Û\8e\9d\82·\82é\83Z\83O\83\81\83\93\83g */
+ PT_SHLIB, /* \97\\96ñ */
+ PT_PHDR, /* \83v\83\8d\83O\83\89\83\80\83w\83b\83_\83e\81[\83u\83\8b\81i\83v\83\8d\83O\83\89\83\80\82Ì\83\81\83\82\83\8a\83C\83\81\81[\83W\82Ì\88ê\95\94\82Å\82 \82é\8fê\8d\87\82Ì\82Ý\91¶\8dÝ\81j */
+ PT_TLS, /* \83X\83\8c\83b\83h\8bÇ\8f\8a\8bL\89¯\97Ì\88æ\82Ì\83e\83\93\83v\83\8c\81[\83g */
+
+ PT_LOOS = 0x60000000,
+ /* OS\8cÅ\97L\82Ì\83Z\83}\83\93\83e\83B\83N\83X\82Ì\88×\82É\97\\96ñ\82³\82ê\82½\97Ì\88æ */
+ PT_HIOS = 0x6fffffff,
+
+ PT_LOPROC = 0x70000000,
+ /* \83v\83\8d\83Z\83b\83T\8cÅ\97L\82Ì\83Z\83}\83\93\83e\83B\83N\83X\82Ì\88×\82É\97\\96ñ\82³\82ê\82½\97Ì\88æ */
+ PT_HIPROC = 0x7fffffff
+};
+
+// 32byte
+struct Elf32_Phdr {
+ unsigned long p_type; /* \83G\83\93\83g\83\8a\82Ì\83^\83C\83v */
+ unsigned long p_offset; /* \91Î\89\9e\82·\82é\83Z\83O\83\81\83\93\83g\82Ì\83t\83@\83C\83\8b\90æ\93ª\82©\82ç\82Ì\83I\83t\83Z\83b\83g */
+ unsigned long p_vaddr; /* \83\81\83\82\83\8a\8fã\82Å\82Ì\83Z\83O\83\81\83\93\83g\82Ì\91æ\88ê\83o\83C\83g\82Ì\89¼\91z\83A\83h\83\8c\83X */
+ unsigned long p_paddr; /* \95¨\97\9d\94Ô\92n\8ew\92è\82ª\93K\90Ø\82È\83V\83X\83e\83\80\82Ì\88×\82É\97\\96ñ\81B */
+ unsigned long p_filesz; /* \91Î\89\9e\82·\82é\83Z\83O\83\81\83\93\83g\82Ì\83t\83@\83C\83\8b\82Å\82Ì\83T\83C\83Y\81B0\82à\89Â\81B */
+ unsigned long p_memsz; /* \91Î\89\9e\82·\82é\83Z\83O\83\81\83\93\83g\82Ì\83\81\83\82\83\8a\8fã\82É\93W\8aJ\82³\82ê\82½\8e\9e\82Ì\83T\83C\83Y\81B0\82à\89Â\81B */
+ unsigned long p_flags; /* \91Î\89\9e\82·\82é\83Z\83O\83\81\83\93\83g\82É\93K\90Ø\82È\83t\83\89\83O\81B */
+ unsigned long p_align; /* p_offset\82Æp_vaddr\82ð\82±\82Ì\92l\82Å\8a\84\82Á\82½\97]\82è\82Í\93\99\82µ\82¢ */
+ struct Elf32_Phdr* next;
+};
+
+// 56byte
+//struct Elf64_Phdr {
+// unsigned long p_type;
+// unsigned long p_flags;
+// unsigned long long p_offset;
+// unsigned long long p_vaddr;
+// unsigned long long p_paddr;
+// unsigned long long p_filesz;
+// unsigned long long p_memsz;
+// unsigned long long p_align;
+// struct Elf64_Phdr* next;
+//};
+
+
+
+void elf_status();
+int elf_check(struct Elf32_Ehdr* buff);
+int elf_init(char* buff);
+void* elf_devlop(char* buff);
+
+#endif