ELF分析(以CS:APP linkLab的文件为例)

news2025/2/23 2:24:03

文件结构:gcc -o test main.o phase1.o

可执行文件的段头表(又称程序头表)(用于描述本文件到虚拟内存的映射)

text文件的段头表如下。

上图有两个LOAD。它们的区别是权限不同。LOAD1是可读+可执行(这里面存的代表性的节就是rodata,text)。LOAD2是可读+可写(这里面存的代表性的节就是data,bss)。

LOAD1放在8048000,大小为694。LOAD2的对齐是1000,那么LOAD2从8049000开始。 把test文件(就是这个可执行文件)的f08位置字节映射到8049f08.。看节头表(在下两张图片),data是1020,那么就映射到804a020。

验证: 反汇编test文件,可以告诉我们答案。

反汇编test,data节就在804a020

可执行文件的节头表 

test的节头表如下。

目标文件的elf头

phase1.o的elf头

目标文件的节头表 

phase1.o的节头表 

下图第一行写了从0x2c0开始是节头表。它怎么知道的呢?elf头中的Start of section headers:704

相当于elf头中有个指针指向节头在哪,找到了节头之后,节头里边有一堆指针,指向每个节(如data节,text节,bss节等等)。整体的物理顺序:elf,节1,节2……节n,节头表。如下图,每个节都有起始位置、长度、对齐字节。把它们串起来,就能得到所有节的物理顺序。

Addr都是0,因为这是可重定位目标文件,不是可执行文件,不会装入内存。

off是起始位置,如data从0x60开始,那么是这样吗?

反汇编的结果告诉我们数据域的开始几个字符为m uk……

用hexedit打开phase1.o,看到0x60处,对应就是m uk……

在运行时,有四个节被分配存储空间,分别是text,data,bss,rodata

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1255667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拍这个视频把脸都扇肿了,midjourney官网效果复现

我是如何复现midjourney官网首页效果的? 视频讲解地址:[https://www.bilibili.com/video/BV1FQ4y1p7HC/](https://www.bilibili.com/video/BV1FQ4y1p7HC/)原理,过程,代码讲解 大家好,这一集我来讲一下 字符花园里 总结…

ehr人力资源管理系统(实际项目源码)

eHR人力资源管理系统:功能强大的人力资源管理工具 随着企业规模的不断扩大和业务需求的多样化,传统的人力资源管理模式已无法满足现代企业的需求。eHR人力资源管理系统作为一种先进的管理工具,能够为企业提供高效、准确、实时的人力资源管理…

04_MySQL备份与恢复

任务背景 一、真实案例 某天,公司领导安排刚入职不久的小冯同学将生产环境中的数据(MySQL数据库)全部导入到测试环境给测试人员使用。当小冯去拿备份数据时发现,备份数据是1个礼拜之前的。原因是之前运维同事通过脚本每天对数据库进行备份,…

redis key

不管是:规则,还是其他规则,定义好就可以了。其实没有太多要求的。 1)冒号分割类似那种yaml在客户端显示树结构 2)其他分割类似那种properties在客户端显示列表结构

​重生奇迹mu迷宫攻略​

重生奇迹mu迷宫是一种比较有挑战性的游戏玩法,需要一定的技巧和策略才能完成。以下是一些基本的攻略和技巧: 了解每个迷宫的特点:不同的迷宫有不同的规则和特点,需要根据迷宫的特点来制定合理的策略。在进入迷宫前可以先了解一下…

Unity2D-URP基于ShaderGraph创建带粒子特效的激光光束

文章目录 创建Shader新建Node: UV新建Node: Split......参数说明 基于Shader创建Material创建Line创建粒子系统StartVFX创建粒子材质更改粒子系统的材质设置透明模式设置粒子效果创建一个Beam设置EndVFX效果预览激光光束管理脚本最终预览 创建Shader Create --> Shader Gra…

redis报错3

INFO: Initializing SpringDispatcherServletdispatcherServlet

思维模型 长尾效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。小众需求大价值。 1 长尾效应的应用 1.1 长尾效应在电子商务领域的应用 亚马逊公司是全球最大的电子商务公司之一,它利用长尾效应来销售大量的小众产品,满足消费者…

5、Qt:项目中包含多个子项目(.pro)/子模块(.pri)

一、说明: 在进行项目开发过程中,会涉及子项目/子模块的问题 Qt中使用TEMPLATE subdirs添加多个子项目;子项目可以单独编译生成可执行文件(exe)或者动态链接库(dll)等,供其他模块…

redisserver一闪而过 redis闪退解决版本

1.进入Redis根目录 2.输入redis-server 或 redis-server.exe redis.windows.conf 启动redis命令,看是否成功。 执 一闪而过的问题 可能是因为已启动或者其他问题,需要重启 先输入redis-cli.exe再输入shutdown再输入redis-server.exe redis.windows.c…

[Matlab有限元分析] 2.杆单元有限元分析

1. 一维杆单元有限元分析程序 一维刚单元的局部坐标系(单元坐标系)与全局坐标系相同。 1.1 线性杆单元 如图所示是一个杆单元,由两个节点i和j,局部坐标系的X轴沿着杆的方向,由i节点指向j节点,每个节点有…

Redis面试题:Redis的数据淘汰策略有哪些?

目录 面试官:Redis的数据淘汰策略有哪些 ? 面试官:数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的数据都是热点数据 ? 面试官:Redis的内存用完了会发生什么? 面试官:Redis的数据淘汰策略有哪些 ? …

这是一张单纯的图片-MISC-bugku-解题步骤

——CTF解题专栏—— 题目信息: 题目:这是一张单纯的图片 作者:harry 提示:无 解题附件: 解题思路: 图片解题三板斧winwalk、010Editor、Stegsolve,一一尝试。 解题步骤: 一、wi…

2023 年最新百度智能云千帆大模型 Node.Js 本地测试 / 微信机器人详细教程

千帆大模型概述 一站式企业级大模型平台,提供先进的生成式AI生产及应用全流程开发工具链。直接调用ERNIE-Bot 4.0及其他主流大模型,并提供可视化开发工具链,支持数据闭环管理、专属大模型定制、大模型训练调优、插件编排等功能。 千帆大模型…

chromium通信系统-mojo系统(一)-ipcz系统代码实现-同Node通信

在chromium通信系统-mojo系统(一)-ipcz系统基本概念一文中我们介绍了ipcz的基本概念。 本章我们来通过代码分析它的实现。 handle系统 为了不对上层api暴露太多细节,实现解耦,也方便于传输,ipcz系统使用handle表示一个对象,hand…

王者小游戏作业

一、创建好文件、包、类、插入图片文件夹 二、beast包 1、Bear类 package beast; import sxt.GameFrame; public class Bear extends Beast {public Bear(int x, int y, GameFrame gameFrame) {super(x, y, gameFrame);setImg("C:\\Users\\陆先生\\Desktop\\王者荣耀图片…

基于单片机DHT11湿度测量与控制-CO2-光照报警系统程序和仿真

一、系统方案 1、本设计采用这51单片机作为主控器。 2、DHT11温湿度、CO2、光照强度送到液晶1602显示。 3、按键设置报警值。 4、蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 //初始化LCD*********************************…

MYSQL基础之【正则表达式,事务处理】

文章目录 前言MySQL 正则表达式MySQL 事务事务控制语句事务处理方法PHP中使用事务实例 后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不…

【案例讲解】LVGL 如何用LVGL画加载圈

更多源码分析请访问:LVGL 源码分析大全 目录 1、概述2、实现效果图3、实现思路4、代码详解1、概述 很多场景下,在用户操作时,需要使用一个加载圈来缓解用户焦虑问题。 2、实现效果图 3、实现思路 用八个固定的圆点来表示加载圈,当使这八个圈依次隐藏和显示,这样就能做…