那些带有大 [0] 的安装 EXE 文件是什么类型,以及如何提取它们?

那些带有大 [0] 的安装 EXE 文件是什么类型,以及如何提取它们?

在许多情况下,7Zip 可以显示安装程序 ZIP 文件的内容,这样我就可以提取并使用它们,而无需运行安装 EXE。当 7Zip 无法显示时,通常是 Inno 安装,我使用 InnoExtractor 来执行此操作。

我时不时会遇到的一种安装 EXE 是下面这种。它[0]里面有一个大文件,7Zip 无法显示实际文件。7Zip[0]也无法打开该文件,但内容[0]如下所示。

这是什么类型的设置,有什么工具可以提取文件吗?(我讨厌运行安装程序,因为它们会改变我的系统。)下图是 OpenShot 视频编辑器的设置 EXE。

在此处输入图片描述 在此处输入图片描述

答案1

一些安装可执行文件实际上只是将安装程序可执行文件与通用 .zip 或 .cab 存档组合在同一个文件中 - 7-zip 无需执行任何特殊操作即可识别它们,它只需找到 ZIP 标头并从那里开始即可。(InstallShield 有自己特定的存档格式,但它仍然具有存档格式。)

然而,这是不是以任何方式保证安装可执行文件 – 他们可以以任何他们想要的方式存储打包文件。他们可以发明自己的打包格式(毕竟,安装可执行文件无论如何都带有正确的解包器),他们可以将每个文件存储在“资源”部分中,他们甚至可以将一些文件存储在程序代码部分 – 没有任何内容严格定义安装可执行文件应如何工作。

对于其他一些安装可执行文件(例如 NSIS),7-zip 实际上有一个特殊的处理程序只是对于这种安装程序来说。但它也需要一个针对 InnoSetup、WISE 和其他程序的特殊处理程序。而且由于它在 InnoSetup 的设置中找不到已知存档,也没有针对 InnoSetup 的自定义处理程序,因此它只是将文件作为通用 .exe 文件(具体来说,作为 PE/COFF 格式文件)打开。

当你在 7-zip 中打开一个可执行文件时没有其中包含实际的存档,您看到的是构成 *.exe 文件的各种数据“部分”。(例如,部分.text包含将加载到内存并在 CPU 上执行的机器代码,.data部分包含程序中所有变量的初始值,部分.rsrc包含程序的图标、对话框布局、翻译等。)它们实际上并不是文件根本不是,这只是 7-zip 呈现它们的方式。

因此[0][1]、 等编号的“文件”只是 7-zip 显示任何通用 .exe 文件中各种附加的无名部分的方式。对于 InnoSetup,这就是“可安装”文件以 InnoSetup 自定义的某种格式存储的地方,但 7-zip 不知道这一点。

相关内容