【问题标题】:C++ byte-patching for game用于游戏的 C++ 字节修补
【发布时间】:2015-08-17 17:50:10
【问题描述】:

我将如何制作一个系统,以便我可以获取一个旧的 .exe,获取一个新的更新版本,并生成一个补丁文件或类似的东西,以修补新旧文件之间的不同字节?我什至不知道从哪里开始。

【问题讨论】:

  • 这是更新系统吗?然后不要打扰。即使在小带宽二进制补丁的时候也很少值得做。替换整个文件更容易(并且在大小方面完全可行)。
  • 这已被普遍解决(即对于任何类型的文件) - 参见例如xdelta.org 无需推出自己的版本。
  • @Konrad Rudolph 没有人想每天下载 200+ mb 的文件...我不想每天上传 200+ mb 的文件...
  • @Omega 没有二进制文件是 200 MB。它通常是几千字节。

标签: c++ file byte exe patch


【解决方案1】:

首先,您需要知道可执行文件或 exe 的格式。

其次,您需要知道在可执行文件的哪个位置应用补丁。

另外,什么样的补丁,是数据还是可执行?

您是在开发补丁还是应用补丁?
存在许多不同的修补实用程序。也许您可以使用其中之一?

以下是简单补丁的步骤:

  1. 制作原件的备份副本。
  2. 以二进制形式打开原始文件,可写。
  3. 寻找需要修补的偏移量。
  4. 用新数据覆盖现有代码。
  5. 保存文件。

更复杂的补丁可能涉及:
在代码中插入函数调用。
需要计算新函数的相对地址才能生成调用指令。
将函数代码附加到可执行文件的末尾(可能需要更改可执行文件格式)。

我们需要更多信息才能为您提供更多帮助。

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多