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网 ...
随机推荐
- MySQL sql_mode=only_full_group_by错误
今天在测试服务器上突然出现了这么一个MySQL的问题,同样的代码正式服没有问题,那肯定就是出在了配置上,查了一下原因才明白原来是数据库版本为5.7以上的版本, 默认是开启了 only_full_gro ...
- WeakHashMap源码解读
1. 简介 本文基于JDK8u111的源码分析WeakHashMap的一些主要方法的实现. 2. 数据结构 就数据结构来说WeakHashMap与HashMap原理差不多,都是拉链法来解决哈希冲突. ...
- Vue项目兼容IE浏览器
转载:https://blog.csdn.net/qq_24956515/article/details/77527668 Vue项目部署到服务器后,通常除IE浏览器外其他都正常,而IE浏览器会报这么 ...
- synchronized关键字用法
看到网上很多讲synchronized关键字用法的文章,说的都很有道理,也很深刻,但是看完总感觉脑袋里还是有点乱乱的.经过一番自己的思考后,想从自己的思考角度出发,来说一说synchronized关键 ...
- 自己定义控件-DragButton
版权声明:本文为博主原创文章.欢迎转载,转载请注明博主和原文链接. https://blog.csdn.net/u014077888/article/details/28097273 一.描写叙述 可 ...
- ethereum/EIPs-712 Ethereum typed structured data hashing and signing
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md eip title author discussions-to status ...
- ADB安装及使用
环境安装: 下载.安装和配置ADB https://jingyan.baidu.com/article/22fe7cedf67e353002617f25.html 安装驱动adbdriver ...
- MP实战系列(三)之实体类讲解
首先说一句,mybatis plus实在太好用了! mybaits plus的实体类: 以我博客的用户类作为讲解 package com.blog.entity; import com.baomido ...
- WebSocket原理与实践(一)---基本原理
WebSocket原理与实践(一)---基本原理 一:为什么要使用WebSocket?1. 了解现有的HTTP的架构模式:Http是客户端/服务器模式中请求-响应所用的协议,在这种模式中,客户端(一般 ...
- Winform 基础一 panel
一 居上.居中.居下 二 添加子控件 三 适应不同分辨率 四 内容超出,显示滚动条 一 .居上.居中.居下 二.添加子页面 Form7 childFrm = new Form7(); childFrm ...