提供するコードが元のソースから十分に派生したものである場合、それを行うことができない場合があります。一方、誰かがこれを取ると:
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 社のソース コードを使用することによってのみ作成されたものであると私は信じています。」
さて、あなたはそれを法廷で立証できますか?それは裁判官と陪審員が決めることです。これを行うのは決して簡単なことではないと思います。しかし、それも不可能ではありません。
これを保証する完全に確実な方法はありますか?いいえ、絶対に違います。しかし、それはほぼすべてに当てはまります。あなたがこれをすべきであるという契約を誰かと結んでいる場合、それは物理的にそれを行うことができないということですか? いいえ、それは法的な契約です。彼らがそれを破ると、あなたは彼らを法廷に連れて行きます。同じことがソフトウェアにも当てはまります。次に、彼らがすべきでないことをした (またはすべきことをしなかった) ことを法廷で証明する必要があり、証拠が十分であれば、あなたの勝ちです。他の男が十分に防御できれば、あなたは負けます。通常、これらのケースは、「次のレベルの裁判所でこれを試してもらいたい」と言う方法があるため、「最も多くのお金を持っている人が勝つ」ことになります。