ELF分析 实践
分析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分析 实践的更多相关文章
- Python 优化第一步: 性能分析实践 使用cporfile+gprof2dot可视化
拿来主义: python -m cProfile -o profile.pstats to_profile.py gprof2dot -f pstats profile.pstats |dot -Tp ...
- 实验3:OpenFlow协议分析实践
作业链接:实验3:OpenFlow协议分析实践 一.实验目的 能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包: 能够借助包解析工具,分析与解释 OpenFlow协议的数据 ...
- LINUX实践--ELF分析
一.ELF文件头(定义在/usr/include/elf.h)中 二.实践部分 第一行 对应e_ident[EI_NIDENT]:实际表示内容为7f45 4c46 0101 0100 0000 000 ...
- linux实践——ELF分析
一.ELF的部分结构定义 elf header(定义在/usr/include/elf.h)//64位的系统ELF文件头包括以下两个部分 #define EI_NIDENT (16) typedef ...
- linux内核分析ELF文件分析实践报告
- Elasticsearch【正则搜索】分析&实践
在ES中有很多使用不是很频繁的查询,可以达到一些特殊的效果.比如基于行为路径的漏斗模型.本篇就从使用上讲述一下正则表达式查询的用法. Regexp Query regexp允许使用正则表达式进行ter ...
- 业务4P分析实践
原创不易,求分享.求一键三连 前言 假期继续思考BI未来的方向,其实常规的BI规划也不是不能出,比如公司BI看板建设.数据指标体系建设.业务线UE模型数据监控等,但这种不会超出预期的东西自然也能算技术 ...
- loadrunner提高篇-结果分析实践
分析图合并 一.分析图合并原理 选择view->merge graphs,弹出如图1所示对话框 图1(设置合并图) 1.选择要合并的图.选择一个要与当前活动图合并的图,注意这里只能选择X轴度量单 ...
- 转://Oracle数据库补丁分析实践
小弟我最近做了几次补丁分析,最开始分析补丁,感觉挺痛苦的,因为补丁数量多,且涉及的知识点非常非常的广,客户的要求又非常高.挺伤不起的.不过随着分析的深入,我慢慢的掌握了一些小方法.也在support网 ...
随机推荐
- Python getting started guide
Get up in the morning. The first thing is to write a blog, although it uses machine translation, it ...
- Tomcat 访问页面或服务器异常,请检查这些方面
若还没有部署网站,请检查 防火墙是否关闭 数据库服务是否打开 浏览器访问的地址和端口是否正确 tomcat 配置文件中的端口是否发生冲突,换一个试试 若出现的是"拒绝连接",检查阿 ...
- [php] yii debug设置
最近在使用yii写rest api发现在所有错误信息都写在log文件里调试不是很直接 在index.php头部查入就ok了 defined('YII_ENABLE_EXCEPTION_HANDLER' ...
- (12)Python异常
- P1481 魔族密码 (LIS)
题的连接:https://www.luogu.org/problemnew/show/P1481 简单思路: 就是LIS,最长上升子序列,当然把条件改一下,从模板里的A[ i ]> A[ j ] ...
- excel中mid函数的用法
函数名称:MID主要功能:从一个文本字符串的指定位置开始,截取指定数目的字符.使用格式:MID(text,start_num,num_chars)参数说明:text代表一个文本字符串:start_nu ...
- Git命令的使用_操作远程仓库——详细教程3
本博文讲述将本地仓库提交到GIT@OSC(或者是GitHub),故而需要用户首先有一个GIT@OSC(或者是GitHub)帐号. 我的GIT@OSC帐号是:https://git.oschina.ne ...
- yii2场景
遇到的问题 起作用了但是使用create的时候,保存却出了问题,提示unknown scenarios:default 解决方法 后来找文章,是因为设置场景的时候,直接把父类的场景覆盖了.所以应该这样 ...
- PCB (3)创建新工程PCB
点击完成 拖进我们创建的工程中
- js之省市区(县)三级联动效果
省市区(县)三级联动效果,是我们软件开发比较常用的,特别是对一些crm,erp之类,当然也包括其他的后台管理系统,基本都涉及到,今天贴出这个常用的,方便个人复用和大家使用 <!DOCTYPE h ...