分析ELF文件:

首先编写一个.c文件,并使用gcc -c xx.c -o xx.o 对其进行编译。

我在这个实践中是ELF_1.o文件。

接下来输入ls -l ELF_1.o 查看重定位文件的信息。

接下来以十六进制来查看该文件信息。输入:hexdump -x ELF_1.o

显示信息的最左一列表示的是偏移地址的16进制表示。

查看ELF文件头定义的规范。打开elf.h查看各部分内容的定义。

我们可以看出,32位的系统与64位的系统的ELF头部分结构大致相同。只是个别字段所占用的字节个数有不同罢了。

分析一下ELF头:

第一行:第一部分:占四个字节。7f 45 4c 46,应读为 4c 46 45 7f,对应ASCII码 ELF.,表示这是一个ELF对象。第二部分:占一个字节。02 表示是一个64位对象。

第三部分:占一个字节。01 表示是小端表示法。第四部分:占一个字节。01 表示文件头版本。

第二行中的第三、四个字节为0x003e 表示是x86-64的处理器。后四个字节0x00000001,表示的是当前版本。后八个字节表示程序的入口点,当前为0.

第三行的前八个字节表示程序头表,当前为0.后八个字节为段表的偏移地址:0x00000000000003f0.

第四行中,第七、八个字节表示段头大小为64字节(40H),第九、十字节表示段表的入口有13(0x000d)个。最后两个字节是表示段名串表(符号表)在段表中的索引号为10.

段表的分析:

32位系统的段表定义每个段头大小是28H字节,而64位系统则变成了64字节(40H)。

40H*13=340H,ELF文件头数据结构存储在位偏移为0x0000000000000000-0x0000000000000039之间,而段表存储在0x00000000000003f0-0x0000000000000340之间。

符号表的分析:

32位系统的符号表结构体大小是16字节,而64位系统符号表结构体的大小为22个字节。

由图可知,一共15 个段表。

text.section 起始位置、大小如图所示。

text.section是可执行指令的集合,offset=0x00000040,size =74H.

data.section是初始化后数据的集合,offset=0x000000b4,size=4H.

symtab.section是存放所有section名字的集合。offset=0x00000140,size=150H.

strtab.section是存放所有符号的名字的集合。offset=0x00000290,size=1eH.

ELF分析 实践的更多相关文章

  1. Python 优化第一步: 性能分析实践 使用cporfile+gprof2dot可视化

    拿来主义: python -m cProfile -o profile.pstats to_profile.py gprof2dot -f pstats profile.pstats |dot -Tp ...

  2. 实验3:OpenFlow协议分析实践

    作业链接:实验3:OpenFlow协议分析实践 一.实验目的 能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包: 能够借助包解析工具,分析与解释 OpenFlow协议的数据 ...

  3. LINUX实践--ELF分析

    一.ELF文件头(定义在/usr/include/elf.h)中 二.实践部分 第一行 对应e_ident[EI_NIDENT]:实际表示内容为7f45 4c46 0101 0100 0000 000 ...

  4. linux实践——ELF分析

    一.ELF的部分结构定义 elf header(定义在/usr/include/elf.h)//64位的系统ELF文件头包括以下两个部分 #define EI_NIDENT (16) typedef ...

  5. linux内核分析ELF文件分析实践报告

  6. Elasticsearch【正则搜索】分析&实践

    在ES中有很多使用不是很频繁的查询,可以达到一些特殊的效果.比如基于行为路径的漏斗模型.本篇就从使用上讲述一下正则表达式查询的用法. Regexp Query regexp允许使用正则表达式进行ter ...

  7. 业务4P分析实践

    原创不易,求分享.求一键三连 前言 假期继续思考BI未来的方向,其实常规的BI规划也不是不能出,比如公司BI看板建设.数据指标体系建设.业务线UE模型数据监控等,但这种不会超出预期的东西自然也能算技术 ...

  8. loadrunner提高篇-结果分析实践

    分析图合并 一.分析图合并原理 选择view->merge graphs,弹出如图1所示对话框 图1(设置合并图) 1.选择要合并的图.选择一个要与当前活动图合并的图,注意这里只能选择X轴度量单 ...

  9. 转://Oracle数据库补丁分析实践

    小弟我最近做了几次补丁分析,最开始分析补丁,感觉挺痛苦的,因为补丁数量多,且涉及的知识点非常非常的广,客户的要求又非常高.挺伤不起的.不过随着分析的深入,我慢慢的掌握了一些小方法.也在support网 ...

随机推荐

  1. 在Markdown中转载CSDN博客

    1.CSDN博客页面右键,点击[检查] 点击检查后,页面右侧出现html代码,如下图 2.如果需要转载全文,则在html代码下侧点击选中article_content 即可,会在代码框中自动选中art ...

  2. 个人技术博客(α)------javaweb的学习路程

    该博文大致内容是学习的一个过程,心得,并不是以技术博客为主,在此说明. 关于javaweb的学习开始的时间大概是从大二下(2017年6.7月份)的暑假开始的,在学长的介绍下加入了实验室进行学习,由于是 ...

  3. 移除元素的golang实现

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  4. golang的一些基础数据类型转换

    int -- string //string到int value_int,err:=strconv.Atoi(string) //int到string str:=strconv.Itoa(value_ ...

  5. PC端和移动APP端CSS样式初始化

    CSS样式初始化分为PC端和移动APP端 1.PC端:使用Normalize.css Normalize.css是一种CSS reset的替代方案. 我们创造normalize.css有下面这几个目的 ...

  6. 一次ASM磁盘空间假装耗尽 ORA-15041: DISKGROUP SPACE EXHAUSTED

    给ASM磁盘新增一块盘进去,ASM_DISK2剩余空间四百多G: SQL> select * from v$asm_diskgroup;   GROUP_NUMBER NAME         ...

  7. windows下手动安装 Apache+php+mysql

    PHP 为什么先说php,因为apache的配置要写入php的一些路径 http://php.net/downloads.php  选择windows donwload 选择Thread Safe的版 ...

  8. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  9. cryptopunks的代码解释

    1.imageHash就是将punk所有图像合在一起的那张图punks.png进行hash得到一个值,并将该值存储到链上,用处就是你可以通过将图像hash然后跟该值对比看图像对不对.这就是它的用处,在 ...

  10. 初级算法-6.两个数组的交集 II

    题目描述: 给定两个数组,编写一个函数来计算它们的交集. 示例 : 输入: nums1 = [,,,], nums2 = [,] 输出: [,] 示例 : 输入: nums1 = [,,], nums ...