5

そうです、私はデスクトップアプリケーションのライセンス検証コード、たとえばメソッドについて話していますbool ValidateLicense(string licenseCode)。もちろん、どのような保護スキームも、熟練した断固としたクラッカーによってリバースエンジニアリングできます。ただし、プログラミングの基本的な知識を持っている人なら誰でも、Reflectorを使用して数分でkeygenを作成できないようにしたいと思います。

考えられるアプローチ

  1. 難読化。私の理解では、難読化はパフォーマンスのオーバーヘッドを引き起こし、(正当な)デバッグを妨げる可能性があります。では、選択したメソッドのみを難読化できるツールはありますか?

  2. メソッドを生成されたアセンブリまたはアンマネージDLLに移動します。しかし、これは単にDLLを置き換えるための招待状ではありませんか?これを防ぐ方法はありますか(攻撃者にとっては少し難しくします)。

  3. その他

PS:質問は明らかにリバースエンジニアリングから.NETコードを保護することに関連していますか?そこから考えを実践に移そうとしています

アップデート

1.最初の難読化ステップは、検証メソッドの名前を変更することです。(ありがとう、ジョナサン)

2.アプリケーションがWin32APIメソッドを使用していると仮定すると、アンマネージDLLを介して呼び出しを再ルーティングし、それによってアプリケーションの不可欠な部分にすることができます。メソッドのシグネチャ(名前の変更、パラメータの交換など)をいじると、これがわかりにくくなります。あなたは生来の欠点が正当化されると思いますか?

3.ここに属する検証方法を配布しないでください。サーバーに保存してリモートで呼び出します。つまり、オンライン検証を使用します(ありがとう、David Hedlund)

4

4 に答える 4

2

多くのソフトウェア ベンダーが採用しているアプローチの 1 つは、オンライン アクティベーションを要求することです。そうすれば、キー検証コードはサーバーでのみ実行できるため、ハッカーになる可能性が低くなります.

もちろん、ハッカーがそのような応答がどのように見えるかについて知っているか、情報を抽出できる場合、成功応答を送信するカスタムサーバーに検証呼び出しを単に再ルーティングするという新しい脆弱性を導入します. しかし、あなたが指摘したように、あなたの製品をハッキングできる誰かが常にいるので、これは実行可能なオプションだと思います.

于 2012-07-19T06:55:59.680 に答える
2

Eazfuscatorを使用すると、Release でのみコードを難読化できます。パフォーマンスの問題を感じないように使用しています。選択したメソッドを難読化することもできます。public メソッドは難読化できないことに注意してください。

ValidateLicense のような関数は、最初の行として return true を挿入する適切なリフレクターを使用して簡単に変更できます:( アセンブリでのコード インジェクションに関するこの記事をお勧めします:操作と C-VB-NET-コードインジェクション

変更を避けるためにアセンブリに署名する必要がありますが... 署名は適切なツールで削除することもできます: http://www.nirsoft.net/dot_net_tools/strong_name_remove.html

申し訳ありませんが、.Net でリバース エンジニアリングを回避する方法はありません。状況を悪化させるだけです。(たとえば、関数 ValidateLicense に名前を付けず、検証ロジックを少し暗号化しないでください)

于 2012-07-19T06:53:38.817 に答える
2

検証に対する 3 つの考えられる攻撃は次のとおりです。

  1. 呼び出しを削除して検証をバイパスする
  2. 検証ロジックをリバース エンジニアリングして正当なコードを明らかにする
  3. 検証ロジックをリバース エンジニアリングして、環境を変更することで検証条件が満たされるようにする

1 つのアプローチは、アプリケーションのいくつかのポイントでライセンスを検証することです。これは 1 の軽減に役立ちます。コードの難読化は 2 と 3 の軽減に役立ちますが、最終的には扱いにくい問題です。

私の意見では、これらのアプローチを組み合わせることで、基本的なプログラマーがあなたのプログラムを盗むのを防ぐことができます。

于 2012-07-19T06:58:38.530 に答える
1

それが答えではないことはわかっていますが、.NET Reactor http://www.eziriz.com/を使用することをお勧めします。これには、ライセンス (さまざまなライセンス シナリオ) と強力なコード保護の両方のメカニズムが既に備わっているためです。

于 2012-07-19T07:14:39.837 に答える