このコードは、コードを変更して害を及ぼすことができますか?
はい。実際、それ自体を変更する必要さえなくても害を及ぼす可能性があります。
動的にロードされた dll のコード部分は、デフォルトで読み取り専用ですか、それとも書き込み可能ですか?
デフォルトでは、DLL は自身を変更できます。そのためには電話をかける必要がありますVirtualProtect
が、それは完全に可能です。
コードが他の dll を使用していない場合でも、システム dll からのコードを必要とする何かを行うことができますか?
DLL は、任意のシステム DLL をロードし、選択した関数を呼び出すことができます。
dll をロードするための関数がデフォルトでロードされていない場合、どうすれば別の dll をロードして関数を見つけることができますか?
LoadLibrary
とを呼び出しGetProcAddress
ます。DLL が実際に何もインポートしない場合、GetProcAddress
. しかし、不可能ではありません。Windows がそれを行うことができれば、DLL も同様に行うことができます。できることの 1 つは、すべてのプロセスにロードされる kernel32 DLL のメモリ内コンテンツを読み取ることです。PE エクスポート テーブルを解析し、それを使用して のアドレスを見つけることができますGetProcAddress
。