如何将64位和32位可执行文件绑定为一个?

好吧,我的想法是将64位和32位绑定到一个应用程序的方式,所以如果它不运行64位版本,它会尝试32位。

我正在阅读关于PE的知识,并且学习了一些有关MS-DOS Real Mode Stub的知识,它说明了它如何调用一个应用程序(通常是一个错误消息)。 但是每次我试图做关于MS-DOS Real Mode Stub的研究时,它似乎只显示错误信息。 所以我的想法是用我的32位应用程序覆盖STUB。

我的自我天真的想法,当32位操作系统将运行64位可执行文件,它会失败,然后运行存根文件。

有没有办法让我的可执行32位/ 64位独立?

您无法创建包含x86x64代码的单个可执行文件。 但是,您可以创建单独的32位和64位应用程序,将x64应用程序打包到x86应用程序资源中。 在程序开始,你可以检查,你正在使用IsWow64Process运行的x64环境,然后如果需要,解压缩你的x64版本,并运行它

在MacOS,Linux和DOS(或混合DOS-Windows),但不是32和64位Windows中有很多二进制文件

您可以编译该程序的单独版本,然后通过另一个可执行文件的脚本进行选择

另一种方法是在安装时只安装所需的版本。 这被CCleaner等许多程序所使用。 安装程序是一个32位应用程序或像.NET一样的通用程序,因此它可以在任何地方运行。 如果它检测到64位Windows,那么它只安装64位版本,与32位版本相同。

阅读更多:

  • 通用二进制
  • Windows 8胖二进制文件(EXE的x86和ARM)
  • Windows NT一直是一个多平台的操作系统,但二进制文件不是