将 ELF 可执行文件 (Linux) 转换为 PE.exe (Windows)

将 ELF 可执行文件 (Linux) 转换为 PE.exe (Windows)

在使用机器代码文件方面我还是个新手!!!

我需要将以 ELF(Linux)形式获得的机器代码可执行文件转换为 Windows 的 exe 文件。我尝试过“objconv”,但尽管格式建议使用“-fPE”,但当我使用它时,命令行显示“错误 2004 未知命令行”和“错误 2103 无法读取输入文件”。我怀疑 Linus 和 Windows 平台之间存在一些不兼容性

答案1

尽管不同平台之间的底层目标代码可能相同,但非平凡的本机应用程序无法在 Windows 和 Linux 之间实现二进制兼容。

如果您尝试转换的 Linux 可执行文件是动态链接的,则需要 Windows 上不存在的库(您可以ldd /path/to/program在 Linux 机器上运行来查看此库列表)。

即使你把所有的库都转换成 PE 可执行格式或者静态链接它们,系统调用NT 内核Linux 内核是完全不同的,它们之间没有直接的一一对应关系。

如果可能的话,最好的选择是找到原始应用程序的源代码。如果程序是以可移植的方式编写的,它可能在 Windows 和 Linux 上都能编译。尽管两个平台之间的系统调用并不相同,但它们的 C 库实现的子集具有标准化行为。

答案2

这几乎肯定行不通。Linux 和 Windows 无法很好地兼容。您要“转换”的应用程序必须从 Windows 源代码重建(这需要 Windows 特定的修补程序)。幸运的话,您要运行的应用程序已经有 Windows 端口。

答案3

相关内容