深入剖析Win32PE结构文件格式

作者:小菜 更新时间:2025-02-26 点击数:
简介:很久以前,我开始为Microsoft Systems Journal(现在的MSDN(R) Magazine)写文章,其中 有一篇名为“探索PE文件内幕——Wi

【菜科解读】

很久以前,我开始为Microsoft Systems Journal(现在的MSDN(R) Magazine)写文章,其中 有一篇名为“探索PE文件内幕——Win32可移植可执行文件格式之旅”的文章很受欢迎,大大超 出了我的意料。

直到现在,我还听说有人(甚至在Microsoft)仍然在使用那篇文章,它依旧被 收录在MSDN Library中。

不幸的是,文章的最大问题是它们是静止的。

但是Win32(R)的世界在这些 年已经发生了很大的变化,因此那篇文章已经严重过时了。

我要从本月开始用两部分系列的文章 来补救这种情况。

你可能想知道为什么要关注可执行文件的格式。

答案永远是:操作系统的可执行文件格式和 数据结构展现了操作系统内部许多信息。

通过理解 EXE和 DLL 的内部情况,你会发现你已经变成 你周围一个更优秀的程序员。

当然,通过阅读 Microsoft的 PECOFF 规范你可以获得许多我将要告诉你的内容。

但是与大 多数规范一样,它更注重完整性而不是可读性。

在本文中,我把精力集中于解释整个故事中最重 要的部分,同时填补那些并不适合出现在官方规范中的怎么样(How)以及为什么(Why)的问题。

另外,在本文中我还会讲到一些非常有用的内容,它们并未出现在任何 Microsoft官方文档中。

让我先举一些例子来说明自从1994年我写那篇文章以来有关可执行文件方面都发生了哪些 变化。

由于16位 Windows(R)已经成为历史,因此没有必要再与Win16的 NE(New Executable)格 式相比较了。

另一个已经脱离人们视野的是 Win32s(R)。

在 Windows 3.1 上运行Win32 程序非常不 稳定是最令人讨厌的事。

回到当时,Windows 95(当时代号为“Chicago”)甚至还未发行。

Windows NT(R)还是3.5 版。

Microsoft 链接器还未进行非常有效地优化。

值得一提的是当时已经在MIPS和 DEC Alpha 上实现了 Windows NT。

自从那篇文章以来都出现了什么新内容呢?64位Windows引进了它自己的变种的PE文件格 式。

Windows CE 添加了许多的新型处理器。

诸如 DLL延迟加载、节合并以及绑定之类的优化已 经铺天盖地。

有许多新东西要加入到这个故事中。

让我们不要忘了 Microsoft(R) .NET。

该把它放在什么位置呢?对于操作系统来说,.NET 可 执行文件只不过是普通的Win32 可执行文件。

但是.NET 运行时能够识别出这些可执行文件中的 数据并把它作为元数据(metadata)和中间语言(Intermediate Language,IL),它们对.NET 来说非常重要。

在本文中,我要敲开.NET 元数据结构的大门,但把对它全部光彩的彻底挖掘留 给下一篇文章。

如果Win32 世界中的所有这些加加减减还不足以成为我重新写那篇文章的理由的话,那么 我只有列出原来那篇文章中的一些令我害怕的错误了。

例如我对线程局部存储(TLS)支持情况 的描述是错误的。

同样,通篇我对日期/时间戳这个DWORD 的描述仅在太平洋时区才是精确的! 另外,有许多内容在当时是正确的,但现在已经不正确了。

我说过.rdata 节并没有太大的 作用。

今天,诚然是这样。

我也说过.idata 节是可读/可写的节,但现在却有许多试图拦截 API 的人发现它在很多情况下都是不正确的。

伴随着在这篇文章中完全更新 PE文件格式的故事,我也对用于显示 PE文件内容的PEDUMP 程序进行了彻底修改。

PEDUMP 现在可以在 x86和 IA-64 平台上编译和运行,并且能够转储32 位 和 64位PE 文件。

最重要的是,PEDUMP的源代码可以从本文开头的链接处下载。

这样,你就有 了一个用这里讲的概念和数据结构实际工作的例子。

PE 文件格式概览 Microsoft引进了PE 文件格式,更经常被称为PE 格式,作为最初的 Win32规范的一部分。

然而PE 文件源自VAX/VMS上早期的通用目标文件格式(Common Object File Format,COFF)。

这是由于许多最初的Windows NT 开发团队的成员都来自数字设备公司(Digital Equipment Corporation,DEC)。

这些开发者很自然就使用现有的代码以便快速开始新的Windows NT 平台。

之所以选择术语“可移植可执行”是打算要在所有支持的 CPU 上的所有版本的 Windows 上 使用相同的可执行文件格式。

从大的方面来说,这个目标已经实现,因为Windows NT及其后继 操作系统、Windows 95 及其后继操作系统以及Windows CE 都使用相同的可执行文件格式。

Microsoft编译器生成的OBJ 文件也使用 COFF 格式。

从COFF 格式的一些域使用的竟然是 八进制编码你就能知道它是多么老。

COFF格式的OBJ 文件中有许多数据结构和枚举类型与PE 文 件相同,后面我会提到。

64 位Windows 需要做的只是修改PE 格式的少数几个域。

这种新的格式被称为PE32+。

它并 没有增加任何新域,仅从PE 格式中删除了一个域。

其余的改变就是简单地把某些域从32 位扩展 到 64位。

在大部分情况下,你都能写出同时适用于32 位和64 位PE 文件的代码。

Windows 头文 件有这种魔力可以使这些区别对于大多数基于C++的代码都不可见。

EXE文件与 DLL 文件的区别完全是语义上的。

它们使用的是相同的PE 格式。

惟一的不同在 于一个位,这个位用来指示文件应该作为 EXE 还是DLL。

甚至DLL文件的扩展名也完全也是人为 的。

你可以给 DLL 一个完全不同的扩展名,例如.OCX 控件和控制面板小程序(.CPL)都是DLL。

PE 文件一个非常好的地方就是它的数据结构在磁盘上与在内存中一样。

加载一个可执行文 件到内存(例如通过调用LoadLibrary函数)主要就是把PE 文件中的某个部分映射到地址空间 中。

因此像IMAGE_NT_HEADERS(后面我会讲到)这样的数据结构在磁盘上和在内存中是一样的。

如果你知道如何在一个 PE文件中找到某些内容,你几乎可以确定当文件被加载进内存时可以找 到同样的信息。

注意到PE 文件并不是作为单一的内存映射文件被映射进内存的这一点非常重要。

相反, Windows 加载器查看PE 文件并确定文件中的哪些部分需要被映射。

当映射进内存时,文件中的 高偏移相对于内存中的高地址。

某项内容在磁盘文件中的偏移可能与它被加载进内存之后的偏移 不同,但是将磁盘文件中的偏移转换成内存偏移需要的所有信息都存在

深入,剖析,Win32PE,结构,文件,格式,很久,以前,

mbps是什么意思?深入解析其在网络速度评估中的重要性与应用价值

专业的在线重装系统软件 全新设计 / 全新代码编写 / 全新支持所有机型 全新支持Window 11 安装 简介:在数字化时代,网络速度对我们日常生活和工作变得愈发重要。

无论是在线办公、视频会议,还是游戏娱乐,网络带宽的快慢直接影响使用体验。

其中,"Mbps"这一术语常常出现在网络速度评估中,其准确理解和应用对于用户选择合适的网络服务至关重要。

本文将深入解析Mbps的含义及其在网络速度评估中的重要性和应用价值。

工具原料: 品牌型号:华为Mate 40 Pro、苹果iPhone 14 Pro、联想ThinkPad X1 Carbon 9th 操作系统版本:Android 12、iOS 16、Windows 10 Pro 软件版本:华为浏览器 12.0.3、Safari 16.0、Google Chrome 100.0一、Mbps的基本概念Mbps是“兆比特每秒”(Megabits per second)的缩写,是测量网络速度和带宽的单位。

1 Mbps等于每秒传输1百万比特的信息。

在网络连接中,Mbps通常指的是下载和上传速度,即设备从互联网获取数据的速度和将数据上传到互联网的速度。

例如,一个网络服务提供商(ISP)可能提供的套餐是100 Mbps,这意味着用户在理想情况下能以每秒100百万比特的速度下载数据。

这种速度足以支持流畅的视频播放、高清视频会议和无缝的在线游戏体验。

二、Mbps的重要性1. 对于居家娱乐:随着流媒体服务的普及,例如Netflix和YouTube,高画质视频(如4K)播放对网络速度的要求极高。

根据Netflix的推荐,观看标准清晰度(SD)视频需要至少3 Mbps,而观看高清视频(HD)则需要5 Mbps,而4K视频则需要25 Mbps以上。

因此,理解Mbps有助于用户选择合适的网络套餐来满足其娱乐需求。

2. 商务应用:在远程办公和视频会议日益普及的当下,稳定的网络连接变得至关重要。

Zoom和Microsoft Teams等视频会议软件推荐的网络速度通常在1.5 Mbps(单路视频)到6 Mbps(双向视频)之间。

用户在选择网络时,需要根据其工作需求评估所需的Mbps,以保证会议质量。

3. 在线游戏:对于游戏玩家,合理的Mbps要求也十分重要。

一般而言,在线游戏的推荐下载速度是至少3 Mbps,而上传速度则需保持在1 Mbps或更高。

如果网络速度低于这个标准,玩家可能会面临延迟,影响游戏体验。

三、如何测试和优化Mbps速度1. 测试网络速度:用户可以使用各类网络测速工具,如Speedtest.net或Fast.com,来测试自己的网络速度。

通过这些工具,用户不仅可以获得当前的下载、上传速度,还能查看延迟(ping值),这对于在线游戏和视频通话尤为重要。

2. 优化网络环境:网络速度也受到其他因素的影响,包括设备性能、网络拥堵和路由器的配置。

确保路由器固件更新、使用5GHz频段(如果支持)和定期重启路由器都是提高网络速度的有效方法。

3. 选择合适的网络套餐:在电信运营商中,用户应关注合同条款,特别是上传和下载速度。

这不仅可以防止后期使用中产生不必要的困扰,也能在实际需求变化时及时调整。

拓展知识:1. Mbps与MBps的区别:虽然二者都与数据传输速率相关,但需要注意的是,Mbps和MBps(兆字节每秒)是不同的单位。

1 MBps等于8 Mbps,因此在评估文件下载和上传速度时,需要特别留意单位的变化。

2. 带宽和延迟:虽然Mbps是衡量带宽的单位,但网络延迟同样是一个关键指标。

延迟是数据从发送端到达接收端所需的时间,低延迟适合在线游戏和实时应用,而高延迟可能导致延时问题。

3. 影响网络速度的因素:除了Mbps外,网络状况、设备性能、数据流量和连接方式(如有线或无线)也会直接影响用户在使用互联网时的整体体验。

总结:通过对Mbps的理解,用户能够更加理性地评估和选择适合自己的网络服务。

无论是在日常的娱乐需求中,还是在高强度的工作场景下,正确理解和应用Mbps的概念能够帮助用户提升网络使用体验。

掌握这些知识后,您就能够更好地享受数字生活带来的便利。

GPRS是什么意思?深入解析其技术原理及在移动通信中的应用价值与用户需求

专业的在线重装系统软件 全新设计 / 全新代码编写 / 全新支持所有机型 全新支持Window 11 安装 简介:GPRS(通用分组无线服务)是一种基于GSM(全球移动通信系统)的数据传输技术,广泛应用于移动通信领域。

它使得用户能够在移动设备上实现数据的快速传输,支持多种应用场景,如互联网浏览、电子邮件和即时消息等。

本文将深入解析GPRS的技术原理、应用价值以及用户需求,帮助读者更好地理解这一重要的移动通信技术。

工具原料:系统版本:Android 12、iOS 15品牌型号:Samsung Galaxy S21、Apple iPhone 13软件版本:Chrome 96、Safari 15一、GPRS的技术原理GPRS是一种分组交换技术,允许用户在移动网络中以数据包的形式发送和接收信息。

与传统的电路交换技术相比,GPRS能够更高效地利用网络资源。

其基本原理是将数据分成小块(数据包),通过无线信道进行传输,接收方再将这些数据包重新组合成完整的信息。

在GPRS网络中,用户通过移动台(如手机)与基站进行通信,基站再将数据传输到GPRS核心网络。

核心网络包括多个重要组件,如GGSN(网关GPRS支持节点)和SGSN(服务GPRS支持节点),它们负责数据的路由和管理。

GPRS的最大传输速率可达到171.2 kbps,虽然相较于后来的3G和4G技术有所不足,但在其推出时,已经大幅提升了移动数据服务的能力。

二、GPRS在移动通信中的应用价值GPRS的出现极大地推动了移动互联网的发展。

它为用户提供了多种数据服务,包括但不限于网页浏览、电子邮件、即时消息和多媒体信息服务(MMS)。

例如,用户可以在Samsung Galaxy S21上使用GPRS进行网页浏览,快速访问社交媒体平台,或在Apple iPhone 13上接收和发送电子邮件。

此外,GPRS还为物联网(IoT)设备的连接提供了基础。

许多智能设备,如智能家居系统和车载导航,依赖于GPRS进行数据传输。

通过GPRS,这些设备能够实时发送数据到云端,用户可以通过手机应用进行远程监控和控制。

三、用户需求与GPRS的未来发展随着用户对移动数据服务需求的不断增加,GPRS虽然在技术上逐渐被更先进的3G、4G和5G技术所取代,但其在某些特定场景下仍然具有重要价值。

例如,在偏远地区或网络覆盖不全的地方,GPRS仍然是一个可行的选择。

此外,GPRS的低功耗特性使其在一些物联网应用中仍然具有竞争力。

未来,随着5G技术的普及,GPRS可能会逐渐被淘汰,但在某些特定的应用场景中,它仍然会发挥作用。

用户在选择设备和服务时,仍需关注网络的覆盖情况和数据传输需求,以便选择最合适的技术。

拓展知识:除了GPRS,移动通信技术的发展历程还包括多个重要阶段。

GSM是GPRS的基础,提供了语音通话和短信服务。

随后,3G技术的引入使得数据传输速率大幅提升,用户能够享受更流畅的网络体验。

4G LTE技术的出现则进一步推动了高清视频、在线游戏等高带宽应用的发展。

在物联网领域,除了GPRS,NB-IoT(窄带物联网)和LoRa(长距离无线电)等新兴技术也在不断发展。

它们在低功耗、广覆盖和大连接数方面具有优势,适用于智能城市、智能农业等场景。

总结:GPRS作为一种重要的移动通信技术,虽然在技术上逐渐被更先进的网络所取代,但其在特定场景下仍然具有应用价值。

通过对GPRS的深入解析,读者可以更好地理解其技术原理、应用价值以及未来发展趋势。

在选择移动设备和服务时,了解这些知识将有助于用户做出更明智的决策。

加入收藏
               

深入剖析Win32PE结构文件格式

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录