第03课:深入程序布局内部,增强应用控制能力
本文将探讨程序的静态布局和动态布局。静态布局指可执行文件在硬盘上的内部布局,而动态布局,则是程序被系统加载到内存之后的布局。主要包括以下几部分内容:
- 可执行文件里有什么
- 影响程序静态布局的因素
- 如何控制程序的动态布局
- 检查地址范围
3.1 可执行文件里有什么
对于这个问题,相信有经验的开发人员都能给出这样的回答:可执行文件包含了源文件编译生成的可执行指令和数据。在日常开发中,理解到这个程度已经足够,但本文会做更深入的探究,以帮助读者扩展在某些方向上的技术基础,比如黑客技术。
在 Linux 中,二进制可执行文件的标准格式叫做 ELF(Executable and Linkable Format)。从名字可以看出,它同时兼容可执行文件和可链接文件。本文重点关注可执行文件,可链接文件将在后面课程中讨论动态链接库时再深入讲解。
3.1.1 ELF 文件的两大组成部分
概括地讲,一个 ELF 文件包含一个固定长度的文件头和多个可扩展的数据块。其中,文件头是整个可执行文件的总地图,描述了整个文件的组织结构。可扩展数据块分为两类,对应着不同的视图——在链接视图下,数据块的单位是节(Section),用多个节区头索引所有内容;而在执行视图下,数据块的单位是段(Segment),用程序头(Program Header)索引所有的段。如下图所示:
第03课:深入程序布局内部,增强应用控制能力相关推荐
- c语言程序设计的顺序结构的常用控制语句,C语言程序设计教程-第03课-顺序结构的程序设计.ppt...
<C语言程序设计教程-第03课-顺序结构的程序设计.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计教程-第03课-顺序结构的程序设计.ppt(21页珍藏版)>请在人人 ...
- java安装 2203_高手分析win7系统无法安装java程序提示“内部错误2203”的处理
人吃五谷杂粮会生病,电脑也一样.工作运行时间久了就会出现很多的问题,比如win7系统无法安装java程序提示"内部错误2203"这样的状况,很多用户之前从未遇到win7系统无法安装 ...
- java安装 2203_win7系统无法安装java程序提示“内部错误2203”的解决方法
win7系统无法安装java程序提示"内部错误2203"的问题发生概率较高.怎样来处理win7系统无法安装java程序提示"内部错误2203"的问题,知道的人估 ...
- 如何利用小程序布局社交电商?
随着消费升级和消费需求的个性化,以及技术的成熟,我们会发现新的模式也在逐渐诞生,效果也非常非常明显.说到社交电商和传统电商的差别,微信这个生态是非常典型的驱动化的生态,传统的电商是人找货,我相信有很多 ...
- info setup 制作的安装程序 提示卸载程序出现内部错误找不到此版本的卸载程序的utCompiledCode记录
在使用Inno Setup 工具制作客户端后,利用开始程序菜单中的卸载程序卸载时提示:卸载程序出现内部错误找不到此版本的卸载程序的utCompiledCode记录. 这是因为在制作客户端时,没有删除原 ...
- ios的vn服务器未响应,iOS应用程序导致内部服务器错误
我有一个很奇怪的问题.我的应用程序正在导致我的服务器狂暴.iOS应用程序导致内部服务器错误 我的iOS应用程序使用TFHPPLE解析来自服务器上的PHP页面的数据.它从页面抓取一个名称,并检查该广告系 ...
- 第03课:如何学习“机器学习”
第03课:如何学习"机器学习" 学习"机器学习"这件事,我走过很长的一段弯路.有一些心得.体会和方法,在此和大家分享. <机器学习极简入门> 以模型 ...
- 瑜伽健身培训报名约课小程序开发制作介绍
瑜伽健身培训报名约课小程序支持在线支付功能极大提升了场馆交易可能同时,能与场馆的线下业务相结合,如约课,约私教,约场地,卖卡等为场馆招揽新的客户流量,提供强大的竞争优势,同时小程序支持微信朋友圈广告, ...
- CSDN日报20170731——《程序员内部培训与个人发展杂谈》
程序人生 | 程序员内部培训与个人发展杂谈 作者:hursing 牛叉的技术可以带来优质的体验,好的体验吸引更多用户,用户规模引发的赚钱效应驱动更多资本和人力投入,投入带来经验总结,总结产出文档书籍, ...
- 撩课小程序(教育类)实战存档(小程序 + 云开发)
云开发 本项目使用了云开发,云开发的三大基础能力: 数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 文档型数据库 文件存储:在小程序前端直接上传/下载云端文件,在云开发控制台可视化管 ...
最新文章
- 彻底明白IP地址——计算相关地址
- 用图表说话 麦肯锡 pdf下载_揭秘麦肯锡顾问百万年薪背后的逻辑,麦肯锡「方法论」系列大合集...
- Angular list列表的事件响应实现
- php加载autoload,php自动加载类__autoload()的方法_PHP教程
- 第4阶段——制作根文件系统之分析init_post()如何启动第1个程序(1)
- SAP License:PS模块WBS预算更改
- QueryRunner类常用的方法
- java mysql 单例模式_java 单例模式(singleton)连接 mysql 数据库
- Hibernate 中Property中的formula属性的使用
- 啊哈算法---快速排序(C语言)
- 微信支付一面(C++后台)
- 环洋市场咨询:全球EMS和ODM收入预计2028年达到7978.5亿美元
- 1. 物理内存初始化-linux4.0
- pytorch中dataloader的num_workers参数
- java selenium一一等待超时设置
- IRP结构体之Flag成员
- JavaScript(5)-内置对象
- iOS开发——使用Charles进行http网络抓包详解
- Nodejs-npm
- DM7数据守护搭建过程中及错误处理
热门文章
- vue5.x 配置小图片转base64
- nmcli connection modify my-connection wifi-sec.key-mgmt wpa-psk wifi-sec.psk my-password
- android 自定义多边形,Android自定义View实现多边形统计图示例代码
- 将Kafka流式数据摄取至Hudi
- 园区动态 || 甘孜州乡村振兴协会与树莓集团深度合作,共同推进数字影像产业发展
- 升级XCode12.3报错 Building for , but the linked and embedded framework was built for iOS + iOS Simulator
- H264的coded_block_pattern编码块模式
- python自动化测试前景怎么样_自动化测试现状以及未来的趋势是怎么样的?
- DFS之连通性模型----红与黑
- 新岸线,貌似是一家很有实力的芯片公司