3

1回限りのライセンス料で商用ライブラリ+ソースコードとして提供する予定のC++ライブラリを構築しています。残念ながら、ライブラリは完全にオフラインで機能するように構築されているため、サーバーに接続してライセンスを検証することはできません。

クライアントを知っており、ライブラリを含む可能性のあるアプリケーション バイナリにアクセスできることを考えると、クライアント X がアプリケーション X 内でライブラリを使用していることを証明するには、どのツール/プロセスを使用できますか? バイナリ セグメントをチェックして、ビルドされた EXE/DLL 内のバイナリ セグメントと一致するようにするには、どのような手法を使用できますか? さらにリファクタリング/名前変更/難読化できるソースコードを提供しているため、ある程度堅牢なものを探しています。明らかに、すべてを変更することはできないため、いくつかのクラスと関数が一致する必要があり、EXE/DLL でそれを見つけることができます。

4

2 に答える 2

3

提供するコードが元のソースから十分に派生したものである場合、それを行うことができない場合があります。一方、誰かがこれを取ると:

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 社のソース コードを使用することによってのみ作成されたものであると私は信じています。」

さて、あなたはそれを法廷で立証できますか?それは裁判官と陪審員が決めることです。これを行うのは決して簡単なことではないと思います。しかし、それも不可能ではありません。

これを保証する完全に確実な方法はありますか?いいえ、絶対に違います。しかし、それはほぼすべてに当てはまります。あなたがこれをすべきであるという契約を誰かと結んでいる場合、それは物理的にそれを行うことができないということですか? いいえ、それは法的な契約です。彼らがそれを破ると、あなたは彼らを法廷に連れて行きます。同じことがソフトウェアにも当てはまります。次に、彼らがすべきでないことをした (またはすべきことをしなかった) ことを法廷で証明する必要があり、証拠が十分であれば、あなたの勝ちです。他の男が十分に防御できれば、あなたは負けます。通常、これらのケースは、「次のレベルの裁判所でこれを試してもらいたい」と言う方法があるため、「最も多くのお金を持っている人が勝つ」ことになります。

于 2013-05-25T09:34:47.217 に答える
1

オープンソース プロジェクトのソース コード フィンガープリントを使用してコードをスキャンし、サード パーティを探すことができる非常に強力なツールが世の中にあります。あなたがすることは、あなたのコードがソースコードのフィンガープリントにも分割されるようにツールを構成し、あなたを侵害していると思われる人のコードをスキャンすることです. 現在、これはおそらく法廷にいる場合にのみ可能です。それ以外の方法で彼らのコードにアクセスすることはできないからです。また、これらのツールを使用してカスタマイズするのは安くはありません。Google のオープン ソース デュー デリジェンスと、トップ プロバイダーである Black Duck、EscrowTech、および Palamida を見てみましょう。

于 2013-06-14T16:51:51.800 に答える