0

私は自分のプログラムが単純で、ライセンス検証機能の部分が削除されるのを避けたいと思っています。

次の理由により、商用の難読化ツールを使用したくありません。

  1. コストの。そして、彼らは私よりも優れた仕事をすることができますが、彼らもクラックを不可能にするわけではありません。
  2. 難読化ツールが生成されたコードにバグを引き起こす場合があるようです。

明らかに、難読化されていないコピーをメンテナンス用に保持します。

4

3 に答える 3

2

私はかつて、顧客が変更できるように、コード内にライセンス検証機能を隠す必要がありました。おそらく、彼らがどこを見ればよいかを知っていれば、それを取り除くことができたでしょう。その時に使った裏技を紹介します。

  1. 検証クラス、アセンブリ名、および変数名に、実際には何か別のことをしているように見える名前を付けます。
  2. コードの複数の部分からベリファイアを呼び出します。
  3. 検証のための呼び出しにランダマイザーを追加して、実行される場合と実行されない場合があります。これにより、確認コードが実際にどこから来ているのかを知ることが難しくなります.

これはすべて打ち負かすことができ、深刻なメンテナンスの頭痛の種になる可能性があることを付け加えておく必要がありますが、私の特定のシナリオではうまくいきました.

于 2012-04-18T15:51:52.380 に答える
1

難しくすることを意図しているが、不可能ではない場合、1 つの方法は、ライセンス ファイルが有効であることを確認する複数のコード ポイントを用意することです。

そのようなキーを持つライセンスファイルがあるとしましょう

abc-def-fhi-asdf

だから、キーに4つの部分。次に、キーのさまざまな部分をチェックする 4 つの異なるメソッドを作成します。

これを行い、コードで使用される方法を変更することで (理想的には、実行時に検証方法をランダムに選択します)、検証を削除することが非常に困難になります。

これに加えて、1 つの方法は、検証メソッドをインライン化する発行プロセスを用意し、呼び出されるたびに微妙に変更することです。

たとえば、次のようなものです。

*user clicks a common function
// [VALIDATION STUB]
*perform user action

// [VALIDATION STUB] を取り出して (コードがコンパイルされる前に) 検証コードに置き換えます。

私の答えから引き出す主なことは、難読化は難しいが、不可能ではないということです。特に、悪意のあるユーザーが常に最終的にそれを破るという現実に身を任せる場合

于 2012-04-18T15:52:08.667 に答える
0

役に立つと思われるいくつかの提案があります。

まずもちろん、VisualStudio に付属しているような無料の難読化ツールを使用できます。それは何もないよりはましです。

次に、ライセンス確認コードを記述し、それが正常に機能するようになったら、可能な限りリファクタリングし、クラス名、メンバー変数、ローカル変数、およびメソッドを c1、v1、l1、m1 などに変更します。それは基本的に難読化ツールが行うことです。

第三に、上記のすべてを行います。

第 4 に、アンマネージ コード (C++、Delphi) でライセンス検証を記述し、core.dll、net.dll などの重要な名前の DLL にします。重要なことを何も行わないおとりメソッドをそこに配置することもできます。コードの複数の場所からその DLL に対して多くの呼び出しを行い、それらの呼び出しの結果で何かを行うふりをします。

于 2012-04-18T21:44:38.757 に答える