换个“马甲”就能逃脱代码比对吗? | 以案释法
近年来,计算机软件侵权类案件大量涌现,且侵权手段愈发多样性、隐蔽性,当事人往往通过技术手段妨碍代码比对。例如通过更改包名、类名、函数、字段及函数实现的流程,以此妨碍代码比对,逃脱追责。近日,北京知识产权法院审理了一起此类纠纷。
案情简介
原告M公司是游戏《××发育》的著作权人,被告S公司是游戏《××派对》的著作权人。原告发现被告在某平台发布的游戏《××派对》与其在先开发的游戏《××发育》完全一致,侵害了其游戏软件的复制权、修改权。
《××派对》(左)与《××发育》(右)商店界面比对
北京知识产权法院在审理中对两款游戏软件核心文件的源代码进行了比对,认定游戏《××派对》软件的源代码与游戏《××发育》软件源代码高度相似,最终认定两款游戏软件构成实质性相似。被告侵害了原告对《××发育》享有的复制权和修改权。宣判后,双方服从判决,均未上诉。
法律分析
北京知识产权法院经审理认为:本案的争议焦点为《××派对》游戏软件是否侵犯了《××发育》游戏软件的复制权和修改权。
认定抄袭、剽窃类软件侵权行为,需遵循“接触+实质性相似-合理理由或合法来源”的判断标准。
《××派对》(左)与《××发育》(右)地图界面比对
本案中,首先,关于接触可能性的认定。游戏《××发育》在某平台首次公开发布时间为2022年1月11日,游戏《××派对》首次发表时间为2022年1月14日。《××发育》发表时间早于《××派对》发表时间,被告存在接触《××发育》软件的可能性。
其次,关于实质性相似的认定。双方当事人共同确定采用常用的比对工具Beyond Compare软件进行源代码比对。但技术调查官通过前期分析发现,使用上述常规比对方法受到类名、变量名修改的影响非常大,某些类(class)的定义中变量定义、参数取值、方法实现几乎完全一致,代码段相似度非常高,区别仅在于类名、变量名字不同,有使用自动化工具进行混淆处理的嫌疑。本案《××派对》软件将类名和部分变量名进行重命名,但主要逻辑和功能没有改变,且存在一些逻辑上完全等价的简单替换表达方式,可能是由工具或脚本自动生成或进行了混淆处理。在独立编写程序代码的情况下,不太可能出现上述如此高度相似的情况。
《××派对》(左)与《××发育》(右)界面比对
最终经细致比对,北京知识产权法院认定《××派对》软件与《××发育》软件部分代码完全一致,另有大量比对结果显示不一致的代码主要区别也仅在于在变量命名上的差异,据此认定两款软件构成实质性相似。被告未举证证明其软件源代码具有其他合理来源。因此,法院认定被告的游戏软件侵害了原告对《××发育》游戏软件享有的复制权和修改权。
法官提示
计算机软件侵权类纠纷案件一般会涉及软件源代码相似度比对。源代码比对一般通过常用比对工具Beyond Compare软件进行,但由于侵权人在抄袭时通常会对代码进行修改、删除或再编写,从而具有隐蔽性。
本案中的被告就通过机械替换软件代码中的文件名、类名、字段名及删除部分无关代码等逃避代码比对。这就需要法院在采用专业比对工具整体比对的基础上,将核心代码从文件名、packege、class、分函数等方面,继续验证逻辑实现的一致性。这样即使加入了常用的代码混淆(修改类名、函数、字段、调整逻辑等),但只要核心实现是一致的,依然可以把穿着各种“马甲”的抄袭软件识别出来,保护权利人的合法利益。
(来源于北京知识产权法院)