私は自分のプログラムがライセンス検証者パートを簡単に削除しないようにしたいと考えています。手作業による難読化に必要なアイデア
私はので、市販の難読化ツールを使用したくない:コスト
- 。そして、彼らは私よりも良い仕事をすることができますが、彼らは も割れないようにすることはできません。
- 生成された コードに難読化が発生することがあるようです。
明らかに、私はメンテナンスのために難読化されていないコピーを保管しています。
私は自分のプログラムがライセンス検証者パートを簡単に削除しないようにしたいと考えています。手作業による難読化に必要なアイデア
私はので、市販の難読化ツールを使用したくない:コスト
明らかに、私はメンテナンスのために難読化されていないコピーを保管しています。
私はかつて、顧客が修正できるコードでライセンス検証者を隠さなければならなかった。おそらく、彼らはどこを見なければならないかを知っていれば、それを取り除くことができただろう。私がその時に使ったいくつかのトリックはここにあります。
私はこのすべてが敗北であり、深刻なメンテナンスの頭痛を引き起こす可能性があると付け加えるべきですが、私の特定のシナリオではうまくいきました。
ありがとうございます。これは私が探している答えのタイプです。 – ispiro
デバッガでトレースするのが難しくありません。 –
はい、あなたが騙そうとしている人がデバッガを持っていてソースに完全にアクセスできるのであれば、もっと強力なものが必要になるでしょう。 – SouthShoreAK
ライセンスファイルが有効であることを確認する複数のコードポイントを持つことが、難しくはないが不可能ではない場合があります。
は、キーにとても
abc-def-fhi-asdf
ので、四つの部分のようないくつかのキーを使用してライセンスファイルを持っているとしましょう。次に、キーのさまざまな部分をチェックする4つの異なるメソッドを作成します。これを行うと、コードの使用方法を変えることにより
(理想的には、ランダムに実行時に検証方法を選択する)、あなたはそれがはるかに困難な検証を削除するようにしてください。
これに加えて、1つの方法は、検証メソッドをインライン化し、呼び出されるたびに微妙に変更する公開プロセスを持つ方法です。
例えば、このような何か:
*user clicks a common function
// [VALIDATION STUB]
*perform user action
が新しい公開プロセスは、(コードがコンパイルされる前)// [バリデーションSTUB]を引き抜くと、あなたの検証コードに置き換えること、コードを実行します私が言うように、できるだけ毎回変わるべきです。
私の答えからプルする主なもの
は本当に難読化は難しいが、不可能ではないということです。あなたが悪意のあるユーザーは常にそれを破るだろう現実に自分自身を辞任する場合は特に、最終的私はあなたが便利なのかもしれないいくつかの提案を持っています。
もちろん、VisualStudioに付属しているような無料の難読化ツールを使用できます。それは何よりも優れています。
2番目に、ライセンス検証コードを書くことができます。できるだけリファクタリングし、クラス名、メンバー変数、ローカル変数、メソッドをc1、v1、l1、m1などに変更します。 。それは基本的に難読化する人がすることです。
第3に、上記をすべて実行してください。
第4に、アンマネージコード(C++、Delphi)でライセンス検証を書いて、core.dll、net.dllなどのような重要な名前のDLLにしてください。何も重要ではないデコイメソッドをそこに置くこともできます。そのDLLの多くの呼び出しをコードの複数の場所から行い、それらの呼び出しの結果で何かを行うふりをします。
手作業による難読化は、最終結果にバグを引き起こす可能性もあります。遥かに高い遂行性を備えています。 –
重複していますか? http://stackoverflow.com/questions/1857685/how-to-create-own-dotnet-obfuscator –
プラスVS2010にはdotfuscatorコミュニティ版が含まれています。 –