KisakCOD 登上 Hacker News,但开放的 Call of Duty 代码带来新风险
- Aisha Washington

- 2小时前
- 讀畢需時 15 分鐘
KisakCOD 登上 Hacker News,提出了一个引人注目的主张:尽管 Call of Duty 4 源于专有软件,仍将其多人模式重建为可公开编译的代码。审查时,该项目已有 640 次提交,显示这是一项持续推进的工程工作,而非一次性的技术演示。然而,其公开代码也暴露出一个更棘手的冲突,涉及保存、安全、授权与控制权。
KisakCOD repository 将这款软件描述为一个面向模组开发者和 Call of Duty 4 爱好者、可完全构建的开源重实现。它包含多人游戏、专用服务器和单人游戏构建目标。运行这些目标仍需要来自合法 Call of Duty 4 安装的游戏文件。
这一区别使 KisakCOD 不同于免费替代游戏。它重建的是可执行技术,而 Activision 的商业资产仍置于代码库之外。这种方式让开发者获得比传统模组工具更深层的访问权限,但并未消除围绕原始软件所有权的问题。
该项目还直接警告了这款近 20 年历史游戏中已知的漏洞。维护者建议对在线游玩进行沙盒隔离,因为他们无法排除二进制漏洞利用的可能性。开放式开发可以支持修复,但可读代码也可能为攻击者提供一份有关陈旧网络行为的详细地图。
这正是其受到关注背后的核心张力。KisakCOD 承诺为经典多人游戏系统提供社区维护,同时也继承了普通模组很少会面对的法律与安全不确定性。
KisakCOD 为何登上 Hacker News
KisakCOD 将一款老旧的商业可执行程序变成了一个爱好者可编译、审查和修改的开发平台。
该项目出现在文章简报所链接的 hacker news discussion 中。提供的快照显示,该投稿获得了 33 分和三条评论。对于首页而言,这些数字并不高,但这一主题契合 Hacker News 长期以来对软件保存和逆向工程的兴趣。
该代码库提供的不只是提取出的脚本,或套在 Activision 可执行程序外的一层启动器。其源代码树包含引擎系统、游戏逻辑、脚本、依赖项和 CMake 配置。开发者可为多种构建类型生成 Visual Studio 项目。
当前构建说明要求使用 Windows、Visual Studio 2022、CMake 3.16 或更高版本,以及 Microsoft 较早的 DirectX SDK。还需要 Steam 和一份 Call of Duty 4 副本。用户必须将原始游戏文件和若干运行时库复制到生成的构建目录中。
这些要求揭示了实际变化所在。KisakCOD 并未将完整的 Call of Duty 4 替代品作为单个独立下载包发布。它提供的是可重新构建的实现,依赖于玩家必须已经拥有的文件。
这种架构对模组开发者意义重大。传统修改通常只能在原游戏公开的接口范围内运作。源代码级重实现则允许贡献者改动更底层的引擎层级、追踪故障、添加诊断功能,并将系统移植到其他平台。
开发者称,工作大约始于 2025 年 3 月 4 日,两名合作者为 Avail 和“Destructive Interface”。到 2026 年 8 月时,公开代码库已显示数百次提交和数十个分叉。这段历程说明,登上 Hacker News 是一次被发现的事件,而不是项目的起点。
KisakCOD 也延续了同一团队此前的项目。Kisak-Strike 专注于可修改的 Counter-Strike: Global Offensive 代码库,而 kisak-thug 则面向 Tony Hawk's Underground。开发者称,KisakCOD 是该团队首个从最初为空的源代码树完成的反编译项目。
反编译将机器指令转换为人类可读的源代码近似形式。它不会自动还原原始注释、命名选择或每一种高级结构。开发者必须解读不完整的输出、恢复类型、重建文件,并根据已编译的游戏测试行为。
反编译与单纯反汇编之间的差异,也解释了该项目的吸引力。反汇编可以显示底层处理器指令。KisakCOD 则尝试生成开发者能够构建、调试和修改的可维护 C 和 C++ 代码。
其 GPL-3.0 许可证鼓励在 copyleft 条款下进行修改和再分发。然而,为重建代码附加许可证,并不能独立解决与原游戏相关的所有权利问题。随着项目获得更多贡献者和更高的可见度,这一未解决的边界变得愈发重要。
调试符号让重实现成为可能
KisakCOD 的存在,是因为异常详尽的开发工件将一个极其庞大的逆向工程难题,缩小为艰巨但可处理的任务。
项目的 development account 表示,Call of Duty 的发布版本遗留了大量调试信息。这些材料至少包括两个 Windows Program Database 文件、六个 Xbox 360 PDB 或 map 文件,以及带有 ELF 符号的 Macintosh 二进制文件。
PDB 文件存储的信息可帮助开发者调试已编译的 Windows 软件。具体取决于构建方式,它可以揭示函数名称、局部变量、文件路径、类型和源代码组织结构。map 文件则可以将已编译函数与目标文件和地址关联起来。
这些工件并未提供原始源代码。但它们确实恢复了通常被精简后的零售版二进制文件隐藏的标签和结构线索。这一优势减少了重建过程中所需的盲目推断。
据称,一个 Windows 构建版本包含具名局部变量和断言。断言是开发者在测试中插入、用于捕捉无效程序状态的检查。其消息可能暴露内部文件路径、预期值以及开发者意图中的控制流程。
Xbox 360 map 文件提供了另一项重要信息。根据开发记录,它识别了哪些函数属于特定的已编译目标文件。团队利用这些关联重建出合理的源代码目录与文件布局。
重建工作仍需要大量人工处理。在早期阶段,开发者使用 IDAPython 脚本处理由逆向工程应用 IDA 生成的函数组。随后,他们删除错误输出、恢复定义,并逐个文件修复编译错误。
团队将这一过程分为多个阶段。首先映射可能的源代码结构,然后用重建的函数填充文件。后续阶段则处理类型错误、编译器失败、链接器问题和运行时缺陷。
这一工作流解释了为何调试符号并未让过程自动化。反编译输出可能误判数据类型、函数签名、结构布局和编译器优化。单个错误假设就可能生成一个虽能成功构建、却行为不正确的程序。
其中一个 bug 源于将布尔返回值当作完整整数处理。另一个问题涉及反编译器引入的缺失类型转换。团队还遇到了渲染故障、错误光照、损坏的布娃娃效果、物理错误、数据库加载故障,以及选择队伍时崩溃等问题。
Call of Duty 4 的引擎谱系提供了额外参考点。开发者参考了公开可用的 Jedi Academy 代码来处理部分框架。他们表示,KisakCOD 从空文件起步,而非将该代码修改为 Call of Duty 构建版本。
该项目还必须协调第三方组件。Call of Duty 4 使用了 Open Dynamics Engine 的修改版来处理物理效果。团队将游戏行为与较旧的 ODE 版本比较,随后恢复了 Infinity Ward 显然曾作出的改动。
音频和视频带来了不同的问题。Call of Duty 4 使用了来自 RAD Game Tools 的专有 Bink 和 Miles 技术。团队寻找兼容的开发组件,并据称围绕 Miles 7.2e 调整了音频重建工作。
这些依赖使“开源 Call of Duty”这个简单标签变得复杂。重建的引擎代码与商业资产、历史 SDK 要求和专有运行时组件并存。代码库可以公开程序的大部分内容,却不能让每项依赖都独立获得自由使用。
这种方法仍然意义重大。调试符号、跨平台构建、参考引擎与反复测试,共同开辟了从机器代码到可运行多人客户端的路径。它展示了被遗忘的开发工件如何决定软件保存是停留在理论层面,还是变成可执行的现实。
开放的 Call of Duty 代码冲击封闭引擎模式
首要冲突在于社区保存需求与发行商对一个超出原始开发周期的多人游戏引擎的控制权之间。
Call of Duty 4 于 2007 年推出时便具备模组支持和专用服务器软件。其 GSC 游戏脚本足够开放,社区得以创建自定义模式和雄心勃勃的转换作品。ProMod 后来围绕更快的移动和更严格的玩法选择,优化了竞技多人模式。
这些工具赋予玩家相当大的自由度,但引擎本身仍然封闭。模组开发者可以通过公开的脚本和资产系统工作,却无法自由审查每个渲染器、网络函数或物理路径。KisakCOD 试图消除这一技术上限。
这种压力并非来自直接的商业竞争。KisakCOD 仍要求拥有原版副本,其面向的是爱好者,而非当今的 Call of Duty 市场。它带来的挑战是结构性的:社区如今可以提出引擎改动,而无需等待发行商。
这种能力在官方维护放缓后最为重要。传统模组未必能修复隐藏在受支持接口之下的漏洞或架构限制。可构建的代码库让维护者可以追踪数据如何从网络数据包流经服务器和游戏系统。
它也支持原发行商从未优先考虑的平台工作。一名社区开发者称,正试验使用 SDL3 进行窗口和输入处理的 Arm 架构 macOS 移植。该工作需要重写与 32 位指针绑定的 fast-file 加载假设。
Fast files 是加载到内存并在运行时修复的打包游戏数据库。它们的序列化指针和架构特定布局,使得将引擎迁移出原始 32 位环境时面临障碍。源代码访问使这些假设变得足够可见,从而能够被替换。
成功移植并不只是增加一个操作系统。它将检验 KisakCOD 是否已摆脱初始重建所使用的狭窄工具链。可移植性是衡量该项目是否产出可维护软件的最清晰指标之一。
同样的原则也适用于多人游戏基础设施。专用服务器运营者可以审查连接处理、身份验证路径、性能瓶颈和服务器规则。当所需改动依赖原生引擎行为时,模组创作者可以在脚本层之下开展工作。
发行商控制权仍然重要。Activision 拥有 Call of Duty 系列及其受保护的游戏素材。Microsoft 于 2023 年收购 Activision Blizzard,使这套产品目录的管理权归入同样运营大型开发者与游戏平台的公司。
KisakCOD 并非来自 Microsoft 或 Activision 的授权源码发布。其 GPL 许可证由仓库维护者提供,而非原始发行商公开决定发布 Call of Duty 4 引擎的结果。
这种差异使 KisakCOD 有别于那些由权利人主动公开源代码的游戏。官方发布会界定哪些代码获得许可,并可澄清被排除在外的商标、素材、中间件和网络服务。逆向工程仓库则必须在缺乏同等授权的情况下自行划定这些边界。
不过,该项目也暴露了封闭式存档策略的一项现实弱点。玩家可以合法保留一份旧游戏,却可能失去兼容的操作系统、服务器、驱动程序和安全支持。拥有光盘或下载副本,并不保证仍有可正常运行的多人游戏环境。
KisakCOD 通过源码级维护来应对这一失效。发行商的模式保护集中式所有权,而保存模式则分散技术控制权。面对老化的专有游戏,两者都无法解决所有问题。
项目的影响力将更多取决于贡献者的行为,而非 Hacker News 上获得多少关注。谨慎的移植、测试与漏洞修复将支持保存这一立场;不受控制的再分发或不安全的公共服务器,则会强化对这种方式的反对意见。
安全与所有权问题仍未有定论
可读的源代码能帮助防御者修复 Call of Duty 4,但 KisakCOD 尚未证明在线游戏是安全的,或其法律地位不存在争议。
该仓库包含一则异常直接的安全提示。它警告称 Call of Duty 4 是一款存在已知漏洞的老游戏,并承认在线环境下存在二进制漏洞利用的非零概率。维护者建议使用沙箱提供额外隔离。
这一警告应当影响爱好者对项目的评估。成功构建并不等于拥有经过加固的多人游戏客户端。兼容性测试关注预期功能是否正常运行,而安全测试则考察程序在面对恶意输入时的表现。
旧网络代码往往假定的威胁环境与当下截然不同。边界检查、数据包解析、身份验证、依赖加载和内存管理都值得审查。重构代码也可能引入零售版可执行文件原本没有的缺陷。
开放式开发为这种审查创造了优势。贡献者可以加入 AddressSanitizer——一种可在测试期间检测无效内存访问的编译器功能。开发账号称,团队曾在调查崩溃和内存损坏问题时使用它。
防御者可以检查存在漏洞的路径、创建回归测试,并公开审查补丁。服务器运营者可以比较构建版本并追踪单项代码变更。这些优势强于封闭可执行文件所提供的有限可观察性。
攻击者也获得了同样的可见性。他们无需自行重构每一个相关函数,便能识别未经检查的输入或脆弱的假设。因此,公开源代码会改变漏洞发现与利用两方面的经济成本。
平衡取决于维护质量。响应迅速的项目可以把披露转化为补丁和更安全的默认设置;人手不足的项目,则可能发布攻击面速度快于修复已发现弱点的速度。
审查时,该仓库显示有 23 个未解决 issue,且未显示任何开放的 pull request。这一快照不能衡量代码质量,issue 总数也会频繁变化。但它表明 KisakCOD 仍是一个活跃的工程项目,而非已经完成的兼容层。
许可又带来另一项不确定性。该仓库将其代码标记为 GPL-3.0;通常而言,这允许接收者在特定条件下使用、研究、修改和再分发受覆盖的代码。然而,仓库许可证只能覆盖施加该许可证者实际拥有的权利。
逆向工程在某些情况下可以合法,尤其是在为实现互操作性而必需时。Electronic Frontier Foundation 概述的逆向工程框架将版权、商业秘密、合同、规避技术保护措施以及通信法律列为相关领域。
EFF 指出,法院已承认某些为实现互操作性而进行的中间复制属于合理使用。它也强调,结果取决于事实、许可证和司法管辖区。KisakCOD 尚未获得公开的法律裁定,证明每一个重构组件都受到这类推理的保护。
因此,其实现方法至关重要。洁净室重实现通常将研究原始行为的人员,与根据文档化规范编写替代代码的人员分开。相比之下,KisakCOD 的公开开发说明描述了借助符号、map 文件和二进制文件对比进行的直接反编译。
这种描述并不会自动决定其合法性。但它意味着读者不应随意将该项目表述为 Call of Duty 4 的授权开源版。它是由第三方重构的项目,采用维护者自行选择的许可证。
商业中间件令分发问题更加复杂。构建说明要求外部 DLL 和原始游戏文件。这些要求有助于避免仓库成为完整替代品,但用户仍有责任以适当方式获取和使用依赖项。
商标和游戏素材则构成独立层面。即便引擎行为被独立重现,地图、纹理、声音、剧情内容、角色设计以及 Call of Duty 名称仍可能受到保护。可编译的源代码并不会让这些材料进入公有领域。
因此,对贡献者来说,来源与功能同样重要。补丁应说明其来自观察、已发布的参考代码、原创实现,还是反编译器输出。清晰的记录将使技术审查更容易,并减少新贡献的模糊地带。
用户面临的决定则更简单。他们应将实验性的在线构建视为不受信任的软件,在可行时予以隔离,并避免将兼容性等同于安全性。在项目记录安全审查及已修复漏洞类别之前,公共服务器尤其值得谨慎对待。
通过保存取舍理解 KisakCOD
KisakCOD 通过暴露其运作机制来保存行为,但这种保真度也保留了技术债务和对专有材料的依赖。
游戏保存通常始于素材和可执行文件。这些制品可借助兼容层、虚拟机或模拟器继续运行。然而,每种方法都依赖于关于操作系统、处理器行为、图形 API 和在线服务的假设。
源码级重实现改变了保存目标。它不再仅保存一个固定的可执行文件,而是保存足够多已被理解的逻辑,以生成新的可执行文件。开发者可以替换过时的接口,同时保留游戏行为。
KisakCOD 当前的 Windows 要求表明,这种转变仍不完整。Visual Studio、DirectX SDK 和原始运行时组件将该项目锚定在较旧的 Microsoft 软件环境中。代码是开放的,但完整构建链尚未具备广泛可移植性。
该项目还在重构各种怪癖,而非从第一原则设计一套现代引擎。这一选择有助于保持与原始地图和玩法的兼容性,但也可能保留现代软件会摒弃的假设。
物理系统体现了这种取舍。据称,团队必须重现 Infinity Ward 对 Open Dynamics Engine 的改动,包括求解器和分配行为。用更新的物理栈替换一切或许能简化维护,但可能改变移动、碰撞或多人游戏同步。
渲染面临类似问题。现代图形层可以改善可移植性,但细微差异可能改变光照和素材行为。开发历史描述了由微小重构错误导致的黑色模型、错误光照网格、缺失着色器及其他故障。
网络兼容性需要更高精度。多人游戏客户端和服务器必须就状态、时序、消息布局和预测达成一致。即使更简洁的实现,只要改变了原始协议预期的行为,仍可能失败。
这正是为什么不应只看 KisakCOD 能否启动。更有力的检验是,独立开发者能否修改一个子系统,而不反复破坏无关行为。文档、测试、可复现构建和代码审查将决定结果。
类似项目展现了几条可能路径。有些项目重实现游戏引擎,同时要求用户提供原始素材;另一些则通过洁净室开发重现行为。官方源码发布的授权更明确,但仍常会省略商业中间件。
KisakCOD 所处的位置较不稳定,因为它直接重构了一款受商业控制的引擎。这一选择在丰富调试符号的帮助下带来了保真度与速度,但也造成了比完全独立的替代引擎更大的来源负担。
如果贡献者接受这种负担,仓库的 GPL 许可证可以支持共享维护公地。受覆盖代码一旦被分发,改进内容必须按照许可证继续可用。这可防止私有分叉吸收社区修复,却不返还相应源代码。
然而,许可证并不保证健康的社区。开放仓库需要维护者审查补丁、定义范围、记录架构并响应安全报告。缺少这些工作,代码可用性就会成为存档证据,而不是可持续项目。
Hacker News 的关注可能在这里有所帮助。经验丰富的系统开发者或许能发现小团队遗漏的编译器产物、网络错误或旧图形假设。他们也能对项目的主张和许可选择进行更严格的审视。
最好的结果不应是毫无约束的怀旧服务器一夜之间涌现,而是形成一套有文档、可测试的引擎,让 Call of Duty 4 的所有者能在现代系统上继续使用合法副本。这个目标既需要技术雄心,也需要克制。
Hacker News 这一时刻接下来应检验什么
有三项信号将表明 KisakCOD 会成为持久的保存基础设施,还是仅仅停留在令人印象深刻却风险颇高的重构。
第一项信号,是能在原始维护者环境之外完成可复现构建。另一位开发者应当能够克隆仓库、提供合法游戏文件、遵循文档步骤,并生成具有相同功能的目标产物。自动化检查应覆盖编译和核心行为。
这一信号将增强项目的说服力,因为可复现性把个人专长转化为可传递的维护能力。反复出现的配置失败,则会削弱 KisakCOD 对其目标受众而言完全可构建的主张。
跨平台进展也属于这项首要测试的一部分。据报道,Arm macOS 实验已暴露 fast-file 系统中的 32 位假设。一个可用的独立移植版本将证明,贡献者对引擎的理解足以安全替换平台依赖。
第二个信号是公开的安全流程。该项目需要明确的漏洞报告渠道、针对已知漏洞类别的修复记录,以及围绕恶意网络输入的回归测试。安全公告应区分继承自 Call of Duty 的缺陷与重建过程中引入的错误。
这方面取得实质性进展,将增强其适合开放维护的理由。这将表明,源代码可用性能帮助防御者,而不只是降低攻击者的研究成本。未修复的报告或随意运营的公共服务器,则会削弱这一论点。
现有警告是负责任的,但它只是一个起点。建议用户在沙箱中运行,实际上是将风险转移给个人。一个保存项目最终需要具备经过加固的默认设置,并记录暴露系统是如何接受审查的。
第三个信号来自权利持有者和基础设施平台的回应。Microsoft 或 Activision 可能容忍该仓库、要求修改、澄清可接受的边界,或寻求将其移除。GitHub 也可能收到影响其可用性的法律投诉。
持续可用并不等于获得正式批准。不过,围绕原始资产、中间件、品牌标识和重建代码建立清晰边界,将减少不确定性。下架或对仓库进行大规模重写,会直接削弱该项目当前的保存路径。
除关注权利持有者的回应外,还应关注贡献者的来源可追溯性。维护者可以通过记录重建函数的来源,并拒绝来源不明的材料,来强化自身立场。含糊不清的新增内容会让许可主张更难评估。
眼下 Hacker News 上的讨论规模太小,无法预测这些结果中的任何一项。Star 和 fork 衡量的是兴趣,而不是兼容性、安全性或法律上的持久性。仓库接下来的技术里程碑将提供更有力的证据。
KisakCOD 已经表明,旧有的调试产物能够打开通往专有多人游戏引擎深层访问的大门。但它尚未证明,由此产生的代码能够支撑一个安全、可移植且在制度层面稳定的社区。
对该项目感兴趣的开发者,应先阅读构建要求和安全警告,再在连接公共服务器前查看其 issue 历史。数字保存倡导者则应跟踪可复现的移植、安全修复以及权利持有者的反应。这些信号将决定,这次 Hacker News 的发现究竟会成为 Call of Duty 4 多人模式的长久归宿,还是一套对普通玩家而言仍充满不确定性的非凡代码库。


