4

メモ帳を例にとってみましょう。アプリケーションでメモ帳が実行されているかどうかを100%確認するにはどうすればよいですか?100%とは、「notepad.exe」という名前の別のプロセスがあり、実際には実際のメモ帳ではなく、たとえば模倣品である場合、それを検出したくないということです。本物のメモ帳のみ。

プロセスメモリの読み取りについてはすでに考えましたが、メモリの移動などの理由で、見た目よりも難しくなっています。

標準的な方法は名前ですよね?しかし、私にとっては非常に重要です。間違ったプロセスを見つけた場合に重大な失敗となるものと対話したいので、他のプログラムではないということです。

誰かがこれを行う良い方法を知っていますか?

PS:それを行うための特定のプログラミング言語はありません。可能であれば、独立したソリューションをお勧めします。ただし、必要に応じて、特に.Net / C#を使用します。

4

3 に答える 3

4

正しい実行可能ファイルを見ていることを99.9%1確実にする唯一の方法は、ファイルのデジタル署名を検証することです。たとえば、問題のnotepad.exeが「MicrosoftCorporation」によって署名されていることを確認します。

私はこのようなことをします:

  1. 実行中のプロセスのリストを取得します。
  2. 関心のある名前(notepad.exe)にフィルターをかけます
  3. 各プロセスのイメージ[実行可能]パスを取得します。
  4. Authenticode署名が有効で信頼できることを検証します。
  5. 署名者の名前を期待値と比較します。
  6. 成功!これが正しいファイルであると確信できます。

この方法では、ファイルをどこに配置するか(ほぼ不可能です。メモ帳は2つの場所にインストールされます)、ハッシュ値をどのように設定するか(明らかに変更する必要があります)、ユーザーの奇妙な動作(置換)などの問題を回避できます。他のテキストエディタを使用したメモ帳)。

1-もちろん、100%確実にすることは不可能です。誰かが本当に決定した人は、期待される署名者名で実行可能ファイルに自己署名し、証明書をマシンのルートストアに追加して、署名が有効であるように見せることができます。

于 2012-06-11T18:16:13.080 に答える
2

そうですね、私はそのような問題に直面していませんが、最初に名前(あなたの場合はnotepad.exe)で検索してプロセスが実行されているかどうかを確認し、Process.GetProcesses()リストを解析してから取得 Process.StartInfo.FileName してこれがメモ帳の実行可能ファイルへのパスであるかどうかを確認してください。

于 2012-06-11T17:51:19.073 に答える
0

実行したい実行可能ファイルについて正確に何を知っていますか?「ハック」として機能する可能性のあるファイルサイズを知っている場合。@ josh3736の方法を使用しますが、ファイルサイズを既知のファイルサイズと比較してポイント4と5を置き換えます[バージョンが異なればサイズも異なりますが、多すぎない場合はハードコーディングできます]。Md5-ハッシュタグの計算はより専門的に見えますが、基本的に同じことを行います。

**プロセスにGUIがある場合:子供がEdit-Boxなどを取得するためにEnumWindowsを使用できます。「notepad.exe」の特徴的なものを見つけて、そこにあるかどうかを確認します。

于 2012-06-11T18:34:07.433 に答える