【发布时间】:2017-07-07 10:11:30
【问题描述】:
通过使用 7zip 在 Windows 中打开许多可执行文件(.exe.、.msi),我注意到许多常见的不同文件类型。这些包括 .text、.data、.bss、.rdata、.pdata 等。我试图获取有关它们的信息,但我无法找出它们的全部含义。以下是其中的一些:
-
.text:代码部分,包含程序的指令-只读-。 -
.data:一般用于具有一些初始化的非零内容的可写数据。因此,数据部分包含可以在应用程序执行期间更改的信息,并且必须为每个实例复制该部分。 -
.bss:用于初始化为零的可写静态数据。 -
.rdata:常量/任何类型的只读数据都存储在这里。 -
.edata: 导出目录、描述符和句柄 -
.idata:句柄和描述符的导入目录。可执行文件(exe、dll 等)使用它来指定导入和导出的函数。 -
.rsrc:包含可执行文件所需的各种其他资源的信息的部分,例如在资源管理器中查看可执行文件时显示的图标
还有很多其他的,很常见,我找不到任何信息。主要是:.pdata、.tls、.reloc、证书、.rsrc_1、.aspack、.adata、.INIT、DATA、CODE、@987653。>p
其中大部分还包含rsrc 文件夹,其中包含 BITMAP、CURSOR、ICON、GROUP_CURSOR、GROUP_ICON、MENU、VERSION 等文件夹。
一些可执行文件还包含更多的可执行文件,.html 文件,.txt 文件等。我还打开了一个根本不包含任何内容的文件(至少用 7zip 打开它没有显示任何内容)! [ 我用 7zip 打开了它们。 ]
问题
- 我发布的那些部分/片段是做什么的?有没有可以全部找到的网站?
- 我看到的都是 Windows 的 PE。这些格式是否标准并以类似/相同的方式适用于 LINUX、UNIX 等?
- 为什么有些可执行文件里面包含其他可执行文件,或者.html、.txt等文件?启动可执行文件时如何处理这些?他们应该做什么? AFAIK 可执行文件中的所有内容都应该只有那些类似于汇编代码部分的“段”。
-
rsrc文件夹有什么用?它拥有什么样的资源?
如果您能发布更多信息/链接,说明为什么使用所有这些(尽可能低级)以及通常可执行结构应该是什么样子,它应该包含什么等,我将不胜感激。
就是这样。
编辑
我发现了其他常见的节标题名称。为了完整起见,我将在这里发布它们的含义。
-
.reloc:包含重定位表。 -
.pdata:包含用于异常处理的函数表项数组,由图像数据目录中的异常表项指向 -
*data: 自定义数据部分名称 -
.init:此部分包含有助于进程初始化代码的可执行指令。也就是说,当程序开始运行时,系统会安排在主程序入口点(在 C 程序中称为 main)之前执行本节中的代码。 -
.fini:此部分包含有助于进程终止代码的可执行指令。即当程序正常退出时,系统会安排执行本节中的代码。 -
.ctors:保留构造函数列表的部分 -
.dtors:包含析构函数列表的部分
【问题讨论】:
标签: assembly exe executable portable-executable