答案1
仅包含(.rsrc_1、[0]、.rdata 等)文件的安装程序实际上如何工作?
您的第二个示例是一个自解压的 exe 文件。
第一个例子是一个普通的exe文件。要执行的代码位于部分中.text
。
有关详细信息,请参阅windows - .exe文件中有什么? - 堆栈内存溢出
答案2
因为它是一个可执行文件。
仅仅因为您可以在 7-zip 中打开它并不意味着它“只是”一个档案。您打开的是一个知道如何从[0]
数据 blob 中提取其自身有效负载的可执行文件。
某些“程序”(例如您的 nvidia 安装程序)本质上是 zip 文件,其前面有一个自解压可执行文件。7zip 可以看到一个小型可执行文件,后面跟着大量数据,查看这些数据后,就会看到一个可以打开的普通存档。然后,您就能看到主要数据。
其他程序(例如三星安装程序)是真正的可执行文件,其中有效载荷已插入可执行文件内的数据部分。它需要一些特殊处理才能将其从可执行文件中提取出来,而这在可执行文件运行时完成。这可能是 7-zip 不知道的某种特殊压缩方法。