20135337——Linux实践三:ELF文件格式(64位系统,简单分析)
ELF文件格式简单分析
(具体分析见上一篇ELF文件格式32位系统)
ELF-header

第一行:
457f 464c :魔数;
0201 :64位系统,小端法
01 :文件头版本
剩余默认0;
第二行:
0001 :重定位文件
003e :x86-64处理器体系结构
0000 0001 :当前版本
0000 0000 0000 0000 :没有入口点
第三行:
0000 0000 0000 0000 :没有程序头表
0000 0000 0000 0308 :段表偏移地址
第四行:
0000 0000 :处理器特定标志
0040 :elf文件头大小
0000 :重定位文件没有程序头表
0000 :重定位文件没有程序头表
0040 :段头大小64字节,section header table中每个header的大小
000d :段表入口有13个,段表有13段
000a :段表字符串在段表中的索引号,.shstrab段的段表索引号10
Elf文件头的数据结构存储在位偏移0x0000 0000 0000 0000~~~0x0000 0000 0000 0039,共40h字节,即64字节;
段表存储在0x0000 0000 0000 0308~~~0x0000 0000 0000 0648,共40h*13=340h字节


查看符号表的数据结构

12个符号
Section

.text位偏移+段长度=.data的段偏移 0x003c+0x0040=0x007c
0x0061+0x02a0=0x0301;
0x0308+0x0340=0x648;
.shstrtab section与.symtab section之间存储的是段表;
注意:Address是section在内存中的虚拟地址,.o文件不需要执行,这里都是0;
Off是section与文件头之间的偏移;
Size是文件里面section占用的大小;
.text section是可执行指令的集合
位偏移0x0000 0040,size=0x0000 003c(即60字节)

.data section是初始化后数据的集合
位偏移0x0000 007c,size=0
.symtab section存放所有section中定义的符号名字
.strtab section位偏移0x0000 0208,size=0x0000 001b

20135337——Linux实践三:ELF文件格式(64位系统,简单分析)的更多相关文章
- 【转】将 Linux 应用程序移植到 64 位系统上
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...
- 20135337——linux实践三:ELF文件格式分析(32位系统)
ELF文件格式分析 可重定位文件 十六进制形式显示内容 显示各个段.符号表相关信息 查看各个段信息 elf文件头信息 段表 符号表信息 查看堆栈 具体分析 1.ELF文件头信息(小字节优先,均十六进制 ...
- Linux实践:ELF文件格式分析
标签(空格分隔): 20135321余佳源 一.基础知识 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目 ...
- 20135337——Linux实践三:程序破解
程序破解 查看 运行 反汇编,查看汇编码 对反汇编代码进行分析: 在main函数的汇编代码中可以看出程序在调用"scanf"函数请求输入之后,对 [esp+0x1c] 和 [esp ...
- linux第三次实践:ELF文件格式分析
linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文 ...
- Linux及安全实践四——ELF文件格式分析
Linux及安全实践四——ELF文件格式分析 一.ELF文件格式概述 1. ELF:是一种对象文件的格式,用于定义不同类型的对象文件中都放了什么东西.以及都以什么样的格式去放这些东西. 二.分析一个E ...
- linux实践之ELF文件分析
linux实践之ELF文件分析 下面开始elf文件的分析. 我们首先编写一个简单的C代码. 编译链接生成可执行文件. 首先,查看scn15elf.o文件的详细信息. 以16进制形式查看scn15elf ...
- 手把手VirtualBox虚拟机下安装rhel6.4 linux 64位系统详细文档
下面演示安装的是在VirtualBox里安装rhel 6.4 linux 64位系统. 一.VirtualBOX 版本. 二.虚拟机的配置. 1.现在开始演示安装,一起从零开始.点击“新建”,创建新的 ...
- linux 下 查看是32位还是64位系统 命令
文章引自:http://zhidao.baidu.com/question/583981849.html 方法1:getconf LONG_BIT 查看 如下例子所示: 32位Linux系统显示32, ...
随机推荐
- nginx 编译安装时的编译参数说明(不建议看)
https://www.cnblogs.com/wazy/p/8108824.html ./configure --user=www \ #worker进程运行用户 --group=www \ #wo ...
- 基础数据类型之AbstractStringBuilder
String内部是一个private final char value[]; 也就意味着每次调用的各种处理方法,返回的字符串都是一个新的,性能上,显然.... 所以,对于可变字符序列的需求是很明确的 ...
- Ceph基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...
- c++のmap的遍历
一.定义如:map < int, CString > 或者 map < int, 结构体名>的元素遍历 map < int, CString > map; ...
- sys.argv[]使用
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,所以那些试图从代码来说明它作用的解释一直没看明白.因为我们从外部取得的参数可以是多个,所以获得的是一 ...
- 初探boost之timer库学习笔记
timer 使用方法 #include <boost/timer.hpp> #include <iostream> using namespace std; usi ...
- 帝国CMS 列表模板页面 list.var 内容截取
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code list.var 中没有好的办法,只能用程序代码来实现.将整个HTML以一个变量来拼接.如下: ...
- 高精度(x ,/, +, -, %)良心模板
该模板不是本人的,但是该是加了个头文件哒.不然在某个oj上编译错误. #include <iostream> #include <string> #include <cs ...
- Guide to Porting MetaMask to a New Environment
https://github.com/MetaMask/metamask-extension/blob/develop/docs/porting_to_new_environment.md MetaM ...
- IDEA里面添加lombok插件,编写简略风格Java代码(转)
文章转自http://blog.csdn.net/hinstenyhisoka/article/details/50468271 在 java平台上,lombok 提供了简单的注解的形式来帮助我们消除 ...