1 #include "elf.h" 2 #include <common/unistd.h> 3 #include <common/glib.h> 4 5 /** 6 * @brief 校验是否为ELF文件 7 * 8 * @param ehdr 9 */ elf_check(void * ehdr)10bool elf_check(void *ehdr) 11 { 12 Elf32_Ehdr *ptr = (Elf32_Ehdr *)ehdr; 13 bool flag = ptr->e_ident[EI_MAG0] == ELFMAG0 && ptr->e_ident[EI_MAG1] == ELFMAG1 && ptr->e_ident[EI_MAG2] == ELFMAG2 && ptr->e_ident[EI_MAG3] == ELFMAG3; 14 15 // 标头已经不符合要求 16 if (!flag) 17 return false; 18 19 // 检验EI_CLASS是否合法 20 if (ptr->e_ident[EI_CLASS] == 0 || ptr->e_ident[EI_CLASS] > 2) 21 return false; 22 23 // 检验EI_DATA是否合法 24 if (ptr->e_ident[EI_DATA] == 0 || ptr->e_ident[EI_DATA] > 2) 25 return false; 26 27 // 检验EI_VERSION是否合法 28 if(ptr->e_ident[EI_VERSION]==EV_NONE) 29 return false; 30 // 是elf文件 31 return true; 32 } 33 34