arm elf文件格式简单分析

本文详细介绍了ARM架构下的ELF(Executable and Linkable Format)文件格式,包括ELF头、程序头、节区头的数据结构及其字段含义。通过示例展示了如何解析ELF文件的各个关键部分,如文件标识、目标文件类型、体系结构类型、版本信息等。此外,还讨论了程序入口地址、节区大小和内存映像等相关内容。
摘要由CSDN通过智能技术生成

/*

 * ELF文件格式定义
 */
#ifndef __ELF2BIN_H__
#define __ELF2BIN_H__

#define Elf32_Addr unsigned int
#define Elf32_Half unsigned short
#define Elf32_Off unsigned int
#define Elf32_SWord unsigned int
#define Elf32_Word unsigned int

#define EI_NIDENT  16

#define EI_MAG0   0 /* 文件标识,为0x7f */
#define EI_MAG1   1 /* 文件标识,为'E' */
#define EI_MAG2   2 /* 文件标识,为'L' */
#define EI_MAG3   3 /* 文件标识,为'F' */
#define EI_CLASS  4 /* 文件类 */
#define EI_DATA   5 /* 数据编码 */
#define EI_VERSION  6 /* 文件版本 */
#define EI_PAD   7 /* 补齐字节开始处 */

#define EI_CLASS_NONE 0 /* 非法类别 */
#define EI_CLASS_32  1 /* 32位目标 */
#define EI_CLASS_64  2 /* 64位目标 */

#define EI_DATA_NONE 0 /* 非法数据编码 */
#define EI_DATA_2LSB 1 /* 高位在前 */
#define EI_DATA_2MSB 2 /* 低位在前 */

#define EI_TYPE_NONE 0 /* 未知目标文件格式 */
#define EI_TYPE_REL  1 /* 可重定位文件 */
#define EI_TYPE_EXEC 2 /* 可执行文件 */
#define EI_TYPE_DYN  3 /* 共享目标文件 */
#define EI_TYPE_CORE 4 /* Core 文件(转储格式) */
#define EI_TYPE_LOPROC  0xff00 /* 特定处理器文件 */
#define EI_TYPE_HIPROC  0xffff /* 特定处理器文件 */

#define EM_NONE   0 /* 未指定 */
#define EM_M32   1 /* AT&T WE 32100 */
#define EM_SPARC  2 /* SPARC */
#define EM_386   3 /* 386 */
#define EM_68K   4 /* Motolora 68000 */
#define EM_88K   5 /* Motolora 88000 */
#define EM_860   6 /* Intel 80860 */
#define EM_MIPS   7 /* MIPS RS3000 */
#define EM_ARM   40 /* ARM */

#define EV_NONE   0 /* 非法版本 */
#define EV_CURRENT  1 /* 当前版本 */


/* ELF Header数据结构 */
typedef struct _elf32_elf_header
{
 unsigned char e_ident[EI_NIDENT]; /* 目标文件标识 */
 Elf32_Half e_type;     /* 目标

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值