別のexe用の起動プログラムを作成したい。ランチャーの外部からアクセスできないようにするには、プライマリプログラム(起動ではない)が必要です。
6 に答える
これを安全に行うことは基本的に不可能です。ランチャーが実行できることは、ユーザーも実行できます。
ランチャーが暗号で署名されたタイムスタンプを別のプログラムに渡すようにすることで、ユーザーにとってより困難にすることができます。ただし、ユーザーはランチャーから秘密鍵を抽出し、手動でタイムスタンプに署名することができます。
プログラムに親 PID をチェックさせ、ランチャー EXE が独自の秘密鍵で署名されていることを確認できますが、ユーザーはプログラムを変更してそのチェックを削除することができます。
ランチャーによって呼び出されるメソッドを使用して、EXE を DLL に変換することもできますが、ユーザーはそのメソッドを呼び出す独自の EXE を作成することもできます。
1 つのオプションは、2 番目のプログラムを実行するときに引数を要求することですが、これは簡単に悪用できます。これが何のためにあるのか、あなたは本当に言わないので、それで十分かもしれません.
ランチャー プログラムの機能によっては、これらの操作が完了したかどうかを確認し、完了していない場合はプログラムを終了できる場合があります。
これを特に安全にする必要がある場合は、秘密公開鍵システムをセットアップして、動的な情報 (タイムスタンプなど) を暗号化できる場合があります。正直なところ、これは価値があるよりも多くの作業になると思います。また、いずれかのプログラムが逆アセンブルされた場合でも、悪用される可能性があります。
主な機能を別のDLLファイルとして実装し、起動中のアプリケーションから呼び出すことができます。これは、主な機能が完全に独立したアプリケーションではないため、必要なものではないかもしれませんが、分離されており、別のアプリケーション (ランチャー) を実行する必要があります。
適切な解決策は、防止しようとしているものによって異なります。
あなたの目標が「いかなる状況においても、熟練したハッカーが A.exe 以外で B.exe を起動してはならない」ということである場合、それを達成するのは困難です。
あなたの目標が「A.exe を使用する必要があるため、ユーザーが誤って B.exe を起動したくない」場合は、オプションがあります。たとえば、平均的なユーザーが渡すことを知らないコマンド ライン パラメーターを A.exe から B.exe に渡します。
あなたが望むものを達成するための2つの提案があります。
2 番目の exe は実際には exe である必要がありますか? 代わりにライブラリ呼び出しにすることはできますか? ランチャー プロセスで実行されるスレッドとして機能を呼び出します。
未公開のコマンド ライン引数を使用します。それらが提供されていない場合は、2 番目の exe を終了させます。これは完全に安全というわけではありませんが、これが最新のゲーム ランチャーの仕組みだと思います。
最終的に、「あいまいさによるセキュリティ」なしでこれを行う方法はないと思います
ランチャーで名前として Guid を持つミューテックスを作成できます。次に、プログラム内のミューテックスを確認します。他の人が言ったように、これはあまり安全ではありませんが、ほとんどの人がプログラムを直接起動することを妨げます.