2013-07-18 11 views
5

私のクライアントに自分のアプリケーションのプラグインを作成させたいのですが、自分のプログラムのメモリを突っ込んだハッキングをしたくないのですが、これを防ぐことは可能でしょうか?DLL機能を制限することはできますか?

または、メインプログラムメモリにアクセスできない種類のメモリ領域にDLLをロードしますか?

答えて

4

プラグインを別のプロセスで実行させることができます。プラグインが必要とする情報は、そのプロセスにメッセージとして渡されます。アプリケーションが必要とする結果はメッセージとして受信されます。プラグインごとに個別のプロセスを持つことも、すべてのプラグインを同じプロセスで実行させることもできます。

ほとんどの現代版のプラグイン機能では、JVMなどの組み込み実行環境が使用されます。その後、プラグインはアプリケーションと同じプロセスで実行されますが、プラグインがプログラムに損害を与える可能性のある仮想環境を効果的に制限する仮想環境の範囲内で実行されます。このシナリオでは、DLLはありませんが、スクリプトコードまたはバイトコードはありません。

1

短い答えは「いいえ」です。

長い答え: DLLはメモリにロードされ、プロセスの観点とOSの観点から、すべての目的と目的のために実行可能ファイル自体の一部として表示されます。もちろん、DLLは複数の実行ファイル間で(おそらく)共有されているため、OSは特定のDLLの「ユーザー」数を追跡する必要がありますが、プロセスの観点からは実行可能ファイルの一部です。これは別のアドレス範囲ですが、DLLのコンテンツに対する権利とアクセス許可は、他のDLLまたは主要な実行可能ファイル自体とまったく同じです。

プラグインをお持ちの場合は、プラグインを信頼する必要があります。そうでない場合は、DLLモデルを使用してプラグインを作成しないでください(共有メモリ領域と共有メモリへのアクセスを許可する別の実行可能ファイルを使用するなど)。

関連する問題