2012-04-18 10 views
0

私は自分のプログラムがライセンス検証者パートを簡単に削除しないようにしたいと考えています。手作業による難読化に必要なアイデア

私はので、市販の難読化ツールを使用したくない:コスト

  1. 。そして、彼らは私よりも良い仕事をすることができますが、彼らは も割れないようにすることはできません。
  2. 生成された コードに難読化が発生することがあるようです。

明らかに、私はメンテナンスのために難読化されていないコピーを保管しています。

+4

手作業による難読化は、最終結果にバグを引き起こす可能性もあります。遥かに高い遂行性を備えています。 –

+0

重複していますか? http://stackoverflow.com/questions/1857685/how-to-create-own-dotnet-obfuscator –

+2

プラスVS2010にはdotfuscatorコミュニティ版が含まれています。 –

答えて

2

私はかつて、顧客が修正できるコードでライセンス検証者を隠さなければならなかった。おそらく、彼らはどこを見なければならないかを知っていれば、それを取り除くことができただろう。私がその時に使ったいくつかのトリックはここにあります。

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

私はこのすべてが敗北であり、深刻なメンテナンスの頭痛を引き起こす可能性があると付け加えるべきですが、私の特定のシナリオではうまくいきました。

+0

ありがとうございます。これは私が探している答えのタイプです。 – ispiro

+0

デバッガでトレースするのが難しくありません。 –

+0

はい、あなたが騙そうとしている人がデバッガを持っていてソースに完全にアクセスできるのであれば、もっと強力なものが必要になるでしょう。 – SouthShoreAK

1

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

は、キーにとても

abc-def-fhi-asdf 

ので、四つの部分のようないくつかのキーを使用してライセンスファイルを持っているとしましょう。次に、キーのさまざまな部分をチェックする4つの異なるメソッドを作成します。これを行うと、コードの使用方法を変えることにより

(理想的には、ランダムに実行時に検証方法を選択する)、あなたはそれがはるかに困難な検証を削除するようにしてください。

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

例えば、このような何か:

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

が新しい公開プロセスは、(コードがコンパイルされる前)// [バリデーションSTUB]を引き抜くと、あなたの検証コードに置き換えること、コードを実行します私が言うように、できるだけ毎回変わるべきです。

私の答えからプルする主なもの

は本当に難読化は難しいが、不可能ではないということです。あなたが悪意のあるユーザーは常にそれを破るだろう現実に自分自身を辞任する場合は特に、最終的

+0

ありがとうございます。しかし、「あなたの検証方法をインライン化するプロセスを公開する」ということは、どのような方法で役立つのか分かりませんでした。 – ispiro

+0

コードが存在する場所の数を増やすと、誰かがそれを解読することが難しくなります。パブリッシュプロセスは基本的にバリデーションコード(今のところ1つのメソッドになっている可能性があり、その1つのメソッドを削除することで簡単に中断することができます)をコード内の多くの場所に挿入します。 – Jroc

+0

ありがとう。 – ispiro

0

私はあなたが便利なのかもしれないいくつかの提案を持っています。

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

2番目に、ライセンス検証コードを書くことができます。できるだけリファクタリングし、クラス名、メンバー変数、ローカル変数、メソッドをc1、v1、l1、m1などに変更します。 。それは基本的に難読化する人がすることです。

第3に、上記をすべて実行してください。

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

関連する問題