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. EasyUI tabs指定要显示的tab

    <div id="DivBox"  class="easyui-tabs" style="width: 100%; height: 100%;& ...

  2. visual studio code前端插件及常用快捷键【转】

    通用插件 HTML Snippets 超级实用且初级的 H5代码片段以及提示 HTML CSS Support 让 html 标签上写class 智能提示当前项目所支持的样式新版已经支持scss文件检 ...

  3. 线程间的通信_多生产者多消费者问题_JDK1.5新特性_Lock

    对于同步代码块,对于锁的操作是隐式的但是在JDK1.5之前的这种方法效率有点低,判断会很多,后面升级之后有新的解决方案 jdk1.5以后将同步和锁封装成了对象,并将操作锁的隐式方式定义到了该对象中,将 ...

  4. Properties集合概述与存和取

    Properties集合:(Map集合下的Hashtable集合下的一个子类) 特点: 1.集合中的键和值都是字符串 2.集合中的数据可以保存到流中,或者从流中获取 该集合通常用于操作以键值对形式存在 ...

  5. Node.js webpack Vue-CLI --安装

    Node.js 安装 从官网 下载 安装 Node.js 官网 Node.js 官方文档 cmd 命令 node -v 查看版本号 v10.15.0 npm 包管理工具 npm 是JavaScript ...

  6. css理论

    1css语法 2css的四种引入方式 3css选择器 4css四种属性操作 5float属性操作 6盒子模型 1 css语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. '' se ...

  7. 用PHP的curl实现并发请求远程文件(并发抓取远程网页)

    PHP的curl功能确实强大了.里面有个curl_multi_init功能,就是批量处理任务.可以利用此,实现多进程同步抓取多条记录,优化普通的网页抓取程序. 一个简单的抓取函数: function ...

  8. call()、delegatecall()

    call()当使用方法是:require(msg.sender.call.value(_weiToWithdraw)());则作用是将_weiToWithdraw个以太币发送给msg.sender地址 ...

  9. 关于pyquery小知识点

    #表示的是取html中的id元素, . 表示的是取html中的class元素. 如果是标签,就直接用标签名 而它们之间的空格,则表示嵌套关系 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪 ...

  10. 理解Selection对象

    理解Selection对象 Selection对象的属性如下: var selection = window.getSelection(); console.log(selection); 通过上面的 ...