任何可用的包装32位/ 64位可执行文件一起工具? [关闭](Any tools availab

2019-07-30 16:01发布

我真的很喜欢Sysinternals工具(如Process Explorer中)处理64位兼容的方式。 它看起来像32位可执行文件嵌入了64位版本,并在必要时提取它。

我想要一个工具,它自动执行此 - 即需要32位和64位可执行文件,把它们打包在一起,不知何故,并插入存根代码,根据其被运行在哪个平台上推出正确的可执行文件。

之前,我开始推出自己的,没有人知道这样的事情已经存在?

Answer 1:

Sysinternals fame的标记Russinovich介绍他们的方法在这里 。 他们这样做在x86图像嵌入64图像。 不幸的是上面的博客文章实际上并没有进入太多细节,但提到他们的技术是基于发现了一个更老的文章在这里 。



Answer 2:

这似乎已经中已经涵盖了(尽管它在细节上相当浅)...

滚动的应用程序的64位和32位版本到相同的二进制?



Answer 3:

不是一个工具,但它似乎很容易嵌入到VC ++项目作为资源的可执行文件,并运行检查OS环境后正确的。

使用IsWow64Process函数来检测32或64位,在这里是一个很好的书面记录包括关于如何嵌入的可执行代码: http://www.codeproject.com/KB/winsdk/binaryresources.aspx 。



Answer 4:

虽然这是可能的,我会考虑它,因为大多数这些应用程序(如Process Explorer的)一种不好的做法提取文件的工作目录。 如果你喜欢把节目中的“程序文件”文件夹中,以该目录正在冲突只读。

对我来说,它只是似乎更容易有分开的两个方案,使快捷方式只是x86文件。 如果该版本检测64位,只需要启动x64的文件。

如果你有很好的理由这两个结合起来,不是作为资源似乎是一个正确的路径embeedding它。



Answer 5:

这里是一个指南 ,以编译一个的AutoIt脚本,做这项工作,虽然你没有在打包和存根发射器是如何工作的任何控制。

我将在这里重现AutoIt脚本的情况下,链接消失:

; Check if we’re on 64-bit OS…
If EnvGet(“PROCESSOR_ARCHITEW6432″)=”” Then
    ; No we’re not – run x86 version…
    FileInstall(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
    RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
    FileDelete(@TempDir & “\ETrustCheck_x86.exe”)
Else
    ; Yes we are – run x64 version..
    FileInstall(“D:\Support\ETrustCheck_x64.exe”,@TempDir & “\ETrustCheck_x64.exe”)
    RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x64.exe”)
    FileDelete(@TempDir & “\ETrustCheck_x64.exe”)
EndIf

; The END

该脚本可以通过AutoIt脚本编辑器为32位的发射与包装成它的两个可执行文件包裹。



文章来源: Any tools available for packing 32bit/64bit executables together? [closed]