如果您提供的代码已经从原始源充分派生,那么您可能无法做到这一点。另一方面,如果有人接受这个:
int longname = 42;
int othername = 3;
double largenumber = 0.5;
for(int i = 0; i < x; i++)
{
largeNumber *= longname + othername;
}
并将其重写为:
int l = 42;
int o = 3;
double n = 0.5;
for(int i = 0; i < x; i++)
{
n = n * l + o;
}
它将生成完全相同的二进制代码(显然,仅当您使用具有相同设置的相同编译器的相同版本时)
所以,如果你的软件包中有一些相当复杂和独特的代码,我敢肯定,如果不付出相当大的努力,就很难伪装 - 完全重写代码可能会更容易,只需使用你的一般想法(当然,他们本来可以做到的)。
是否有工具可以简单地告诉您“此二进制文件包含这段代码,由 gcc 4.7.3 生成”?如果您使用一组常量进行一些真正特定类型的计算,则可能会构建一个。
如果里面有足够的钱,你当然可以让专家逆向工程师调查它,并在法庭上出具一份法律证人陈述(可能是文件形式,然后由其他专家审查等),说“这是我相信这个代码只能通过使用 X 公司的源代码来实现”。
现在,你能在法庭上证明这一点吗?这是由法官和陪审团决定的。我认为做到这一点并不容易。但这也不是不可能的。
有没有完全万无一失的方法来保证这一点?不,绝对不是。但这几乎适用于所有事情。如果您与某人签订了一份合同,说您应该这样做,不能那样做,这是否意味着他们在身体上无法做到这一点?不,这是一份法律合同,如果他们违反了,你就将他们告上法庭。同样适用于软件。然后你必须在法庭上证明他们做了他们不应该做的事情(或者没有做他们应该做的事情),如果你的证据足够好,你就赢了。如果对方能很好地保护自己,你就输了。通常,这些案件最终会成为“赢钱最多的案件”,因为有办法说“我希望在下一级法院审理此案”,