5 windows PE COFF
文章目录
- 5.1 Windows的二进制文件格式PE/COFF
- 5.2 PE的前身COFF
5.1 Windows的二进制文件格式PE/COFF
- 32位Windows,微软引入PE的可执行格式
- Win32的标准可执行文件格式
- ELF一样平台扩展性和灵活性
- PE与ELF同根,都由COFF格式
- DEC的VAX/VMS上的COFF文件格式
- 微软开发Windows NT时,成员来自于DEC公司的VAX/VMS小组
- 就将原来系统上熟悉的工具和文件格式都搬过来,
- 基础上做重新设计
- “ Portable Executable”
- 希望这个可执行文件格式能在不同版本的 Windows平台上用
- 支持各种CPU
- Windows NT、 Windows95到 Windows XP及 Windows Vista,还有 Windows CE都用PE可执行文件格式
- Windows的PC版只支持x86的CPU,只关注PE在x86上的各种性质就行
- VISUAL C++编译器产生的目标文件仍然用COFF格式
- PE是COFF的一种扩展,结构在很大程度上相同,
- 甚至跟ELF文件的基本结构也相同,都基于段的结构。
- 下面讨论 Windows平台上的文件结构时
- 目标文件默认为COFF格式
- 而可执行文件为PE格式
- 统称为PE/COFF文件
- 也对比PE与COFF在结构方面的区别
- 微软对64位 Windows上的PE文件结构稍改
- 叫做PE32+
- PE32+没添加任何结构,最大变化把那些原来32位字段变成64
- 文件头中与地址相关的字段
- 绝大部分情况下PE32+与PE的格式一致
- 可将它看作是一般的PE文件
- 与ELF文件相同, PE/COFF格式也用基于段的格式
- 一个段可包含代码数据或其他信息
- PE/COFF中,至少一个代码段
- 叫“.code”,数据段叫“.data”。
- 不同编译器产生的目标文件的段名不同,
- VISUAL C++用“,code”和“,data”,
- Borland编译器用“CODE”,“DATA”。
- 跟ELF一样,段名只提示性作用,没实际意义
- 如果用链接脚本来控制链接,段名可能会起到一定作用
- 跟ELF一样,
- PE也允许程序员将变量或函数放到自定义的段。
- GCC中用
attribute((section(“name”)))扩展属性,
- VISUAL C++中用“#pragma”编译器指示。
- 如下面这个语句:
- 把所有全局变量“global”放到“FOO”段去,
- 用“pragram”将这个编译器指示换回来,恢复到“.data”,
- 否则,任何全局变量和静态变量都会被放到“FOO”段
5.2 PE的前身COFF
5 windows PE COFF相关推荐
- 程序员的自我修养--链接、装载与库笔记:Windows PE/COFF
1. Windows的二进制文件格式PE/COFF 在32位Windows平台下,微软引入了一种叫PE(Portable Executable)的可执行格式.作为Win32平台的标准可执行文件格式,P ...
- 基于windows PE文件的恶意代码分析;使用SystemInternal工具与内核调试器研究windows用户空间与内核空间...
基于windows PE文件的恶意代码分析:使用SystemInternal工具与内核调试器研究windows用户空间与内核空间 ******************** 既然本篇的主角是PE文件,那 ...
- CLR探索系列:托管PE/COFF文件格式侧窥
一直都想写篇文章来说说那些尘封在PE/Coff文件格式下的那些事,还有Metadata和EEClass是如何表现了一个静态的PE格式文件在内存中的映射结构. 在这篇文章里,我不去介绍window ...
- [读书][笔记]WINDOWS PE权威指南《一》PE的原理和基础 之 第一章 环境搭建及简单破解
文章目录 前言 前期准备 1.1 开发语言MASM32 1.1.1 设置开发环境 下载安装masm 环境变量配置 测试是否配置成功 1.1.2 开发第一个源程序HelloWorld.asm 配置 代码 ...
- Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理
Windows PE的全名是WindowsPreinstallationEnvironment(WinPE)直接从字面上翻译就 是"Windows预安装环境".微软的本意是:Win ...
- Windows PE变形练手2-开发一套自己的PE嵌入模板
PE嵌入模板 编写一段代码,生成一个已经处理过重定位信息,同时所有的内容都在代码段里,并且没有导入表的PE程序,把这个程序嵌入到其他PE的相关位置,能够独立的运行,接下来是整理了2个模板,一个是Hel ...
- Windows Pe 第三章 PE头文件(上)
第三章 PE头文件 本章是全书重点,所以要好好理解,概念比较多,但是非常重要. PE头文件记录了PE文件中所有的数据的组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节:通过P ...
- 菜鸟教程终极篇之Microsoft Windows Pre-installation Environment (Windows PE) 2.0
大家好啊.通过以前的菜鸟日记大家感觉咋样?今天给大家带来新的知识.学完本文所讲的内容,谁敢在说你是菜鸟.你就拿砖块拍它!HOHO!!Go on! 平时我们在使用电脑中 ...
- Windows PE 背景知识
1.什么是 Windows PE? 1.1 简要介绍 Windows Preinstallation Environment (Windows PE) 是一个为 Windows 安装而设计的最小操作系 ...
- 【虚拟机里测试Windows PE的方法】
有时候我们需要在虚拟机里测试Windows PE镜像文件.下面就以VMWare Workstation为例,步骤如下: 1.运行虚拟机软件VMWare Workstation并新建虚拟机(如xp). ...
最新文章
- 【硬核干货 | 程序的编译、链接、装载与运行】
- JSP简单练习-省略显示长字符串
- ThreadLocal应用与原理分析
- 萨蒂扬软件技术(南京)研发中心”落户高新区
- bzoj4448 SCOI2015 情报传递 message
- Introduction to Computer Networking学习笔记(十八):Switching 交换工作实现
- vsftpd 虚拟用户详细配置
- java 读取ssh2协议得到的数据_Java通过SSH2协议执行远程Shell脚本
- 利用setTimeout实现setInterval
- 如何用C#制作 微信个人机器人
- 如何使用Redis实现电商系统的库存扣减?
- sublime使用教程及快捷方式
- oracle和勇士,坑与“借鉴”,都是KPI逼的?
- 假设检验:一个总体参数的检验、总体方差检验、两个总体参数的检验和两个总体方差的检验
- 什么是“中间人攻击“?怎样防止这种攻击?
- Kotlin 学习笔记(二)—— 数据类、密闭类、循环写法以及常用集合操作符
- 点到直线的距离计算原理及MATLAB程序
- 智能汽车的福音:高通骁龙820A平台
- 金蝶K3系统BOM新增BOM编号与父项物料编码同步需求实现
- 联盟营销者的5个电子邮件营销最佳实践(一)
热门文章
- Tableau public保存为图片或pdf
- 大数据常用的挖掘方法,主要有哪些?
- Transformer论文阅读(一):CoTr: Efficiently Bridging CNN and Transformer for 3D Medical Image Segmentation
- matlab 水文频率曲线,水文频率曲线matlab
- wake on lan 实现远程开机(远程开关机程序)
- macos 设置黑白打印_如何停止双面打印成为macOS中的默认设置
- oracle x$bh 权限,关于Oracle的事务
- postman通过脚本动态获取token 和cookies
- 演化算法与适应度地形分析——再度思考
- html ckplayer.swf,Flash基础入门之ckplayer.js视频播放插件