它是复制各种库的行为(因此调用完全相同)还是只是使用独特的优化和新方法从头开始编写它们的代码?
2 回答
有不同类型的逆向工程,大致分为 Dirty-Room 和 Clean-Room。Dirty-Room 基本上涉及以某种方式反汇编机器代码以找出它的作用,并使用反汇编代码创建新代码。Dirty-Room 造成了侵犯版权的问题,您基本上是在抄袭旧系统,通过直接了解旧系统的实现直接或间接地创建新系统。Clean-Room 涉及使用文档实现相同的 API,并针对要重新实现的系统进行测试。这两种技术可以单独使用,也可以多种组合使用。例如,使用两个团队对 PC BIOS 进行了逆向工程,一个 Dirty-Room 团队拆解了原始 BIOS 并创建了一个规范,一个 Clean-Room 团队使用该规范实现了新的 BIOS。逆向工程的高风险业务情况通常涉及专门从事该领域的律师来创建不侵犯旧实施的适当新实施。
Cocotron 是一个 Clean-Room 实现。我/我们使用文档和测试程序来创建一个新的实现(Cocotron),它与旧实现(Cocoa)的行为相匹配。Apple 文档非常好,API 组织良好,并且在需要时很容易创建测试程序。如果我这么说的话 Cocotron 是相当不错的,但它绝对不是 Cocoa,我想这两者之间的来源差异很大。
Cocotron 的内部实现与 Cocoa 的完全不同。我不会说涉及任何“逆向工程”。
你应该知道 Cocoa 的 API 有单独实现的历史(有点)。Cocoa 源于 OpenStep,它最初是作为一种规范设计的,在不同的平台上有许多不同的实现。