すべてのコントロールを EXE 内に配置した場合、DLL に配置したときにアクセスできるように、外部からアクセスできますか?
2 に答える
したがって、あなたが求めているのは、通常、シンボルをエクスポートするというこの概念です。明示的なことをしない限り、Windows で exe をコンパイルするときにシンボルはエクスポートされません。さて、.NET について話しているのであれば、問題は少し異なります。ただし、これにセキュリティのタグを付けていることに気付きました。セキュリティ上の理由から、この事実に依存するつもりはありません。コード インジェクションなどの攻撃は、それよりも少し高度です。
BobbyShaftoe が述べたように、マネージド コードとアンマネージド コードのどちらを使用しているかによって異なりますが、ここでは、アンマネージド C または C++ を使用していると仮定します。
基本的に、コンパイルされた実行可能ファイル (Windows の場合は EXE または DLL) は一連の関数とグローバル変数で構成され、それぞれが実行可能ファイルの論理アドレス空間 (実行可能ファイルが物理メモリ アドレスにマップされるときに物理メモリ アドレスにマップされる) 内の特定の場所を持ちます。ロードされます)。
誰かが実行可能ファイル内の特定の関数または変数のアドレスを知っている場合、それらの使用を阻止するためにできることはあまりありませんが、DLL では、その情報が実際に利用可能になるため、人々は実際に関数を調べることができます (まあ、エクスポートするように選択したもの) を名前で。
通常、この名前の検索を処理する DLL でヘッダー ファイルを提供するため、関数を独自のプログラムの一部であるかのように呼び出すだけで済みます。