是否可以将32位机器码转换为64位?

问题描述 投票:0回答:1

我有一个旧游戏在 32 位 exe 和几个 dll 上运行。我想将其转换为64位,以便分配更多的内存空间。是否可以在没有源代码的情况下将其转换为64位?这需要多少工作?

c++ windows 32bit-64bit
1个回答
0
投票

如果游戏可执行文件未加密,则可以将其反编译为汇编代码。有些工具如 IDA 甚至有反编译成 C 的插件。

但是,即使你成功做到了这一点,如果没有大量的手动修复,上述代码也无法编译(机器反编译仍然远非完美)。

下一个障碍是庞大的规模——对于典型的 AAA 游戏来说,五十万行到一千万行之间是合理的估计。对于较旧的游戏,如果你最终的代码少于一万行,那你就很幸运了。

此外,您仍然需要更改代码中的所有指针算术和所有游戏数据结构以使用 64 位值,这意味着还要编辑直接反序列化到内存结构中的所有资源文件。

做不到吗?如果您具备逆向工程所需的知识并且有大量空闲时间,则可能不会。

这将是一项艰巨的任务,并且无法保证它能够正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.