4

ソフトウェアにロックおよびコピー防止システムを実装しています。私は、誰かが私のロックを破ることを可能にするすべての穴を閉じました (まあ、それは少し楽観的すぎますね!) しかし、最後のことはこれです:

クラッカーは、私が使用する API がクラッカーによって指定された値を返すように、Kernel32.dll などの Windows DLL を変更できると聞いています。これを防ぐ必要があります。

最初は、使用するすべての DLL のハッシュ値を作成し、そのハッシュをクライアント DLL の計算されたハッシュと照合して、ファイルが変更されているかどうかを確認できると考えました。さまざまなバージョンの Windows 用にさまざまなバージョンの DLL があり、Microsoft が提供するすべての修正プログラムと Service Pack によってファイルが変更される可能性があるため、これは機能しません。

次に、ファイルの署名をチェックして、有効な Microsoft 署名があることを確認できることに気付きました。今2つの質問があります:

  1. Microsoft は Windows DLL に署名していますか? この署名に関する情報を見つけるにはどうすればよいですか?
  2. 署名を検証するための公開鍵は提供されていますか? このキーを使用してファイルを検証するにはどうすればよいですか?

ウォークスルーは大歓迎です。私のアプリは、Visual Basic.NET を使用して作成されています。

みんなありがとう。

4

4 に答える 4

8

MSは、Windowsのバージョンとバイナリに応じて、一部のシステムバイナリに署名します。たとえば、Windows XPでkernel32.dllを確認すると、次のようになります。

C:\Windows\system32>sigcheck kernel32.dll
Sigcheck v1.5
Copyright (C) 2004-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\Windows\system32\kernel32.dll:

Verified: Signed
Signing date: 02:07 14/04/2008
Publisher: Microsoft Corporation
Description: Windows NT BASE API Client DLL
Product: Microsoft« Windows« Operating System
Version: 5.1.2600.3119
File version: 5.1.2600.3119 (xpsp_sp2_grd.070416-1301) 

sigcheckを使用して、特定のフォルダー内のすべての署名されていないバイナリを検索するなどの操作を行うこともできます。

sigcheck -u -e c:\windows\system32 

MSはいくつかの検証目的でルート証明書を使用しますが、2番目の質問に対する答えは「いいえ」だと思います。キーペアは変更される可能性があり、実際に変更されるため、Windowsシステムバイナリで公開キーを公開しません。

しかし、基本的に、OSを信頼していなければ、とにかくfubarです。

それに直面するだけで、あなたのアプリはひびが入ります。私のアドバイスは、クラッキングプロセスの速度を落とすためにあなたの努力の1%だけを費やし、クラッキングする価値のあるものを作成するために99%を費やすことです。

于 2008-12-22T16:04:25.600 に答える
6

自分で署名を検証できるように独自の暗号化ルーチンを作成するつもりですか、それとも Crypto API を信頼するつもりですか? 暗号化 dll の署名を使用して暗号化 dll を検証しますか?

誰がウォッチャーを見ますか?

独自のオペレーティング システムを作成する場合は、仮想マシンで実行できないようにする必要があります。おそらく、独自のハードウェアハードウェアも作成する必要があります。

最終的には、何かを信頼する必要があります。本当。ユーザーを信頼する準備ができていない場合は、OS を信頼してください。それを信頼しないと、独自のハードウェアを展開して「安全」にすることになるからです。はい、誰かがあなたのソフトウェアをハッキングします - それはほぼ避けられません。必ず難しくしますが、収益が減少することを忘れないでください(急速に!)

于 2008-12-22T11:58:23.990 に答える
0

他の回答では、ディスク上のコピーが変更されていないことを確認できると言われています。あなたはインメモリコピーの SOL です。

于 2010-03-15T15:36:00.857 に答える