相比之下,缺乏源代码访问权限意味着必须直接修改二进制可执行文件。因此,基于二进制的补丁基本上包含需要在原始二进制可执行文件中更改的字节。与源代码修补相比,二进制修补通常需要更短的时间,因为不需要进行漫长的重新编译步骤。然而,在准备阶段,二进制修补面临一个额外的挑战。即,必须在原始二进制文件中定位要更改的字节的地址。虽然超出了本文的主要范围,但值得注意的是,在生产系统中发生的所有更改都需要进行回滚规划,这是至关重要的。通常假定当新行为与期望的更改不匹配时进行回滚。这种假设可能意味着某些停机时间是不可避免的。因此,在进行回滚时,仍然优先考虑保持运行。因此,从总体上看,回滚操作等同于运行时补丁。相反的方向(新代码返回旧代码)。在两个方向上都必须考虑相同的自洽性问题。关键区别在于,在应用补丁之前可以进行更长时间的准备工作,而不是可能的突然失败。通常,回滚过程高度依赖于应用的补丁类型,涉及的应用程序数据,预期的影响,时间限制和代码量。本次审查旨在仅关注补丁部署步骤、方法和解决方案。
2.1 Traditional Software Patching