3

C#で記述された実行可能ファイルがあります。この状況をWindowsサービスで試してみたいと思います。通常、以下のコードを使用してプログラムで実行可能ファイルを開始しました。

Process process = new Process(); 
process.StartInfo.FileName = applicationpathandname.exe; 
process.Start();

実行可能ファイルを起動する前に、実行可能ファイルの署名またはパスワードを比較したいと思います。サインまたはパスワードが一致しない場合は、Windowsサービスのメインプログラムを終了する必要があります。したがって、私の擬似コードは次のようになります。

*/load exe
*/compare sign or password of my assembly
*/if match start exe 
*/else exit main program

実際、私には2つの質問があります。

  1. 実行可能ファイルまたはアセンブリを署名またはパスワードで保護できますか?
  2. 他のC#プログラムで実行可能なそのサインまたはパスワードに到達できますか?
4

2 に答える 2

1

あなたの質問が正しいかどうかわかりませんが、最善を尽くします。

strong-nameツールを使用してアセンブリを行うことができますsn。ここに短いチュートリアルがあります: http://sharpertutorials.com/creating-strong-named-assemblies/ここにリンクの説明を入力してください

snkその後、作成したファイルをソリューション内のプロジェクトに追加できます。手動で追加する代わりに、別のオプションとして

[assembly: AssemblyKeyFile("c:\\mykey.sn")]

属性 (記事で述べられているように) を使用すると、各プロジェクトのプロパティの [署名] タブで簡単に定義できます=>アセンブリに署名し、そこにsnkファイルへのパスを入力します。

アセンブリに厳密な名前を付けた後、そのパスワードでいくつかのチェックを実行できます。

厳密な名前のアセンブリをチェックする

于 2011-08-25T14:57:14.360 に答える
0

最終的には、完全なexeをSHAまたは別の暗号化ハッシュでハッシュし、このハッシュを暗号化するためにsalt値を使用していくつかの暗号化アルゴリズム(自分で署名するように対称である可能性があります)を使用したいと思います。次に、ファイルの内容を暗号化されたハッシュおよびソルト値と一緒に別のファイルにパックするか、exe 以外の追加ファイルにハッシュ + ソルトのみを追加します。

実行時に再び同じに: exe のバイトを取得 (または結合されたファイルから) ハッシュし、ハッシュが復号化されたハッシュと同じかどうかを比較します。

はいの場合は、プログラムを実行できます。いいえの場合は、何らかのいたずらが行われているか、一部のバイトが反転しています;)

于 2011-08-25T15:14:17.887 に答える