4. 软件著作权侵权判定核心方法
软件著作权侵权判定并不是把两份代码“看一眼像不像”就能下结论的工作。司法实践中长期形成的基本框架是“接触 + 实质性相似”:先证明被诉侵权人有机会接触原告软件,再证明双方软件在受保护表达上构成实质性相似。前者解决“能不能看到”的问题,后者解决“看到之后是否抄了”的问题。两者缺一不可,且证明顺序和证明标准各有侧重。
一、接触要件的证明路径
“接触”不要求证明被告实际复制,只要求证明其存在合理机会或合理可能接触到权利软件。常见证据包括:原告软件曾公开发表、销售、交付给被告或其关联方;双方存在劳动关系、合作开发、委托开发、技术服务关系;被告曾参与测试、部署、运维;软件安装包、源代码仓库权限记录、邮件往来、聊天记录等。若原告软件尚未公开,则需证明被告通过特定渠道获取,例如前员工带走代码、外包方保留副本等。
接触要件的证明标准通常低于实质性相似,但也不能仅凭“被告有员工曾在原告处工作”就当然推定接触,还需结合该员工是否实际接触过涉案代码、接触时间与被告软件开发时间的先后关系。实务中,接触证据往往与相似性证据相互印证:接触越直接,对相似程度的要求可适当降低;接触证据较弱时,则需要更高的相似性来补强。
二、抽象—过滤—比较三步法
“抽象—过滤—比较”是判断实质性相似的核心方法,源自美国 Altai 案,已被我国司法实践广泛借鉴。其逻辑是:先把软件从具体代码逐层抽象为功能、模块、流程、算法、数据结构,再过滤掉不受保护的成分,最后对剩余受保护表达进行比较。
第一步:抽象。将软件按层次拆解,通常从“代码—模块—子程序—算法—功能”逐级上升。抽象的目的是区分“思想”与“表达”:越往上越接近思想,越往下越接近表达。例如“实现用户登录”属于功能思想,而具体的登录校验流程、错误提示文案、参数命名、异常处理分支则可能构成表达。
第二步:过滤。剔除不受著作权法保护的成分,主要包括:思想、算法、数学方法、处理过程、操作方法;为表达唯一或有限而不可避免的表达(合并原则);已成为行业惯用、通用、标准化的表达(场景原则);公有领域素材;以及由效率、兼容性、硬件约束决定的设计。过滤后剩下的才是可比较的受保护表达。
第三步:比较。对过滤后的表达进行整体与局部比较,既看“量”也看“质”。量上可统计相同或高度相似的代码行、函数、变量、注释、错误信息;质上看是否复制了核心算法、关键数据结构、独创性安排。比较时不能只盯着相同部分,还要看差异是否属于实质性差异,还是仅为规避而做的表面改写。
三、源代码比对实务
源代码比对是最直接的相似性证据,但前提是能够合法取得对方源代码。常见取得途径包括:诉讼中申请法院责令被告提交;通过证据保全、公证购买获得安装包后反编译;被告自认或第三方披露。若无法取得源代码,则只能转向目标代码反编译分析。
取得代码后,比对通常分三步:文本比对,使用 Beyond Compare、WinMerge、Meld 等工具逐文件比对,统计相同行、相似行比例;结构比对,比较函数名、类名、变量名、注释、错误提示、日志格式、配置文件;语义比对,对核心算法、数据结构、调用关系进行人工分析。实务中,单纯的文本相似比例并非决定性指标,若核心模块高度相似,即使整体比例不高,也可能构成实质性相似。
比对时要注意“过滤”前置:先剔除第三方开源代码、通用库、自动生成代码、标准模板,再统计相似部分。否则容易把不受保护的通用表达误认为侵权证据。建议制作比对表,逐项记录文件路径、行号、相似内容、是否受保护、是否属于核心模块,形成可复核的证据链。
四、目标代码反编译分析
当无法获得源代码时,可对目标代码进行反编译或反汇编分析。Java 程序可用 JD-GUI、CFR、Procyon 反编译 class/jar;.NET 程序可用 dnSpy、ILSpy;C/C++ 程序可用 IDA Pro、Ghidra 反汇编后分析。反编译结果虽与原始源代码存在差异,但仍能反映类结构、方法签名、字符串常量、调用关系、控制流等关键信息。
反编译分析的重点包括:类名与方法名是否高度一致;字符串常量、错误提示、日志文案是否相同;关键算法控制流是否一致;资源文件、配置文件、数据库脚本是否相同;第三方库版本与依赖是否一致。若反编译结果中出现原告特有的命名习惯、注释残留、调试信息、内部代号,则相似性证明力较强。
五、实务中的证据组织与抗辩要点
原告方应围绕“接触 + 实质性相似”组织证据:接触证据证明机会,相似性证据证明复制。相似性证据最好同时包含源代码比对与目标代码反编译两条路径,并突出核心模块、独创性表达、被告无法合理解释的相同错误或相同特殊命名。被告方常见抗辩包括:独立开发、公有领域、合并原则、场景原则、第三方开源、接触证据不足、相似部分不受保护、相似比例低且非核心等。
无论代理哪一方,都应回到“抽象—过滤—比较”的框架:先把对方主张的相似点逐项放入框架检验,判断其属于思想还是表达、是否被过滤、是否构成实质性相似。只有经得起这三步检验的相似点,才是真正有证明力的侵权证据。