#include "elf.h" #include #include /** * @brief 校验是否为ELF文件 * * @param ehdr */ bool elf_check(void *ehdr) { Elf32_Ehdr *ptr = (Elf32_Ehdr *)ehdr; 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; // 标头已经不符合要求 if (!flag) return false; // 检验EI_CLASS是否合法 if (ptr->e_ident[EI_CLASS] == 0 || ptr->e_ident[EI_CLASS] > 2) return false; // 检验EI_DATA是否合法 if (ptr->e_ident[EI_DATA] == 0 || ptr->e_ident[EI_DATA] > 2) return false; // 检验EI_VERSION是否合法 if(ptr->e_ident[EI_VERSION]==EV_NONE) return false; // 是elf文件 return true; }