有不同种类的反向工程,大致分为肮脏方式和清洁方式。肮脏方式基本上涉及将机器代码反汇编以找出其作用,并使用反汇编代码创建新代码。肮脏方式会产生版权侵犯问题,你基本上是抄袭旧系统来创建新系统,无论是直接还是间接通过对旧系统实现的直接了解。清洁方式则是使用文档实现相同的API,并针对要重新实现的系统进行测试。这两种技术可以单独或结合使用。例如,PC BIOS使用了两个团队进行反向工程,肮脏方式团队反汇编原始BIOS并创建规范,清洁方式团队使用规范实现新的BIOS。反向工程的高风险商业情况通常需要专门从事该领域的律师来创建适当的新实现,以避免侵犯旧实现。Cocotron是一个清洁方式的实现。我/我们使用文档和测试程序创建了一个新实现(Cocotron),它与旧实现(Cocoa)的行为匹配。苹果公司的文档非常好,API组织得很好,需要时很容易创建测试程序。我可以说Cocotron还不错,但它绝对不是Cocoa,我想两者之间的源代码差异很大。
Cocotron的内部实现与Cocoa相当不同。我不会说其中有任何“逆向工程”。 你应该知道,有一个将Cocoa API的实现分离出来的历史(有点像)。Cocoa起源于OpenStep,最初被设计为在不同平台上拥有许多不同实现的规范。