ELF文件格式分析



可重定位文件

十六进制形式显示内容

显示各个段、符号表相关信息

查看各个段信息

elf文件头信息

段表

符号表信息

查看堆栈

具体分析

1.ELF文件头信息(小字节优先,均十六进制)

第一行:

7f45 4c46 (DEL E L F)  0101 (32位对象 小端法)  0100(文件头版本) 0000 0000 0000 0000

第二行:

0001(重定位文件) 0003(intel80386处理器)  0000 0001(当前版本)
0000 0000(没有入口点)
0000 0000(程序表头偏移地址,没有程序头表)

第三行:

0000 0214(段表偏移地址)
0000 0000 (未知处理器特定标识符)
0034(ELF文件头大小) 由此可知section headers table中每个header的大小是52字节;
0000(程序表头大小,重定位文件没有程序头表)
0000(程序入口个数,重定位文件没有程序头表)
0028(段表头大小为64字节)

第四行:

000d(段表头入口个数有13个)
000a(段名串表索引)由此可知.shstrtab段(符号表)的信息在段表的索引号是10;

由elf头知,段表从0x0000 0214开始,每个节区大小0x0028,共有0x000d个节区,第0x000a为段名串表的索引号;

第一节区:为空

第二节区:

第三节区:

第四节区:

五:

六:

七:

八:

九:

十:

十一:(索引号为a)

十二:

十三:

分析

第二节区:

001f 0000 :此节区段名在段名串表中的偏移是0000 001f
0034 0000 :段的起始位置是0000 0034
002e 0000 :段大小是0000 002e

第十一节区:

找到起始位置000001b4,大小0000005f的段名串表

由2e6c 6574可知,偏移为0000001f的第二节区名,对应ASCII码为.text,可知第二节区为.text段的信息:段起始位置0x0000 0034;段的大小0x0000 002e

.text段



对应的ASCII码翻译出来对应着MAIN函数的机器代码
(以此类推,不再赘述!)
对应代码:
#include <stdio.h>
main()
{
printf("elf");
}

20135337——linux实践三:ELF文件格式分析(32位系统)的更多相关文章

  1. Linux实践:ELF文件格式分析

    标签(空格分隔): 20135321余佳源 一.基础知识 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目 ...

  2. linux第三次实践:ELF文件格式分析

    linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文 ...

  3. Linux及安全实践四——ELF文件格式分析

    Linux及安全实践四——ELF文件格式分析 一.ELF文件格式概述 1. ELF:是一种对象文件的格式,用于定义不同类型的对象文件中都放了什么东西.以及都以什么样的格式去放这些东西. 二.分析一个E ...

  4. linux实践之ELF文件分析

    linux实践之ELF文件分析 下面开始elf文件的分析. 我们首先编写一个简单的C代码. 编译链接生成可执行文件. 首先,查看scn15elf.o文件的详细信息. 以16进制形式查看scn15elf ...

  5. 20135337——Linux实践三:ELF文件格式(64位系统,简单分析)

    ELF文件格式简单分析 (具体分析见上一篇ELF文件格式32位系统) ELF-header 第一行: 457f 464c :魔数: 0201 :64位系统,小端法 01 :文件头版本 剩余默认0: 第 ...

  6. Linux课题实践四——ELF文件格式分析

    2.4   ELF文件格式分析 20135318 刘浩晨 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目 ...

  7. 20135218 实践四 ELF文件格式分析

    一 :概述 ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文件(目标文件)格式主要三种: (1)可重定向文件:文 ...

  8. 20135337——Linux实践三:程序破解

    程序破解 查看 运行 反汇编,查看汇编码 对反汇编代码进行分析: 在main函数的汇编代码中可以看出程序在调用"scanf"函数请求输入之后,对 [esp+0x1c] 和 [esp ...

  9. 实践2.4 ELF文件格式分析

    实践2.4 ELF文件格式分析 1.ELF文件头 查看/usr/include/elf.h文件: #define EI_NIDENT (16) typedef struct { unsigned ch ...

随机推荐

  1. 三种方法更改MAC OS X下的HOSTS文件

    1.终端更改 用程序里面打开终端(terminal),输入 sudo vi /etc/hosts 然后提示输入系统密码 hosts文件就自动打开了 接着输入 i 进入编辑模式 将添加的网站,ip拷贝进 ...

  2. css 位置居中篇,flex布局【转】

    最近看到沅老师的博客,关于flex布局的,觉得不错,http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

  3. JavaScipt中的Math.ceil() 、Math.floor() 、Math.round()、Math.pow() 三个函数的理解

    以前一直会三个函数的使用产生混淆,现在通过对三个函数的原型定义的理解,其实很容易记住三个函数. 现在做一个总结: 1. Math.ceil()用作向上取整. 2. Math.floor()用作向下取整 ...

  4. 【SDOI2009】Bill的挑战

    Description Sheng bill不仅有惊人的心算能力,还可以轻松地完成各种统计.在昨天的比赛中,你凭借优秀的程序与他打成了平局,这导致Sheng bill极度的不满.于是他再次挑战你.这次 ...

  5. BSOJ 4591 -- 【JLOI2015】城池攻占

    Description 小铭铭最近获得了一副新的桌游,游戏中需要用m个骑士攻占n个城池. 这n个城池用1到n的整数表示.除1号城池外,城池i会受到另一座城池fi的管辖,其中fi 每个城池有一个防御值h ...

  6. WIN10+ VS2013 配置Opencv2413 64位

    VS2013 配置Opencv2413  64位 系统变量 Path:  F:\2biancheng_tool\Opencv2413\opencv\build\x64\vc12\bin 用户变量:添加 ...

  7. ssh linux免密登录。。。。生产共钥到另一台主机

    一.第一种方式: 1.ssh-keygen -t rsa -t : 加密方式 默认为rsa 可以省略不写 加密方式选 rsa|dsa 2.将 .pub 文件复制到目标机器的 .ssh 目录, 并 ca ...

  8. QT获取窗口大小和位置等信息

    QT窗口尺寸,窗口大小和大小改变引起的事件 QResizeEvent. 来源:http://blog.csdn.net/dbzhang800/article/details/6741344?reloa ...

  9. Vue2.x源码学习笔记-源码目录结构整理

    先从github上下载或者clone一个vue分支项目 https://github.com/vuejs/vue 查看下目录结果 先列出一些目录 Vue |— build 打包相关的配置文件,其中最重 ...

  10. 一、java三大特性--封装

    封装字面意思即包装.专业点来说就是数据隐藏,是指利用抽象数据将数据和基于数据的操作封装起来,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能的隐藏细节,只保留一些对外的接口和外部 ...