我一直对软件供应商如何运送他们的应用程序或游戏,然后提供一组不同的可执行文件来改变前一版本的行为感到困惑。这是怎么做到的?原始应用程序和补丁是否必须遵守某种规则?或者补丁是否会爬进原始可执行文件并更改其程序集信息?这需要知道二进制文件到字节级吗?
答案 0 :(得分:2)
我见过两种主要方法。许多程序由许多在运行时动态加载的较小部分组成,通常这些文件只是用较新的版本替换。由于更新通常仅影响相对较少数量的这些文件,因此补丁可能是整个应用程序的一小部分。我见过的另一种方法是使用更大的单片应用程序,实际上是使用一种“二进制差异”来改变可执行代码。这种方法的一个缺点是,在不必执行每次增量更新的情况下,更难以支持从几个版本的版本升级到新版本。
答案 1 :(得分:0)
我怀疑大多数时候,“补丁”只是一些替代文件。
然而,可以比较两个二进制文件,确定它们之间的差异,并创建一组编辑命令,将其中一个更改为另一个。例如,Unix实用程序“diff”可以为文本文件执行此操作。