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)10 bool 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