2

機能が不明な、非常にわかりにくいネイティブwin32 dllがあり、他のdllから関数を呼び出さないようです。私の質問は、理論的には、このコードはコードを変更して害を及ぼすことができるということです。サブ質問:-動的にロードされたdllのコード部分はデフォルトで読み取り専用ですか、それとも書き込み可能ですか?-コードが他のdllを使用しない場合でも、システムdllからのコードを必要とする何かを実行できますか?dllをロードするための関数がデフォルトでロードされていない場合、どのようにして別のdllをロードし、関数を見つけることができますか?

前もって感謝します。

4

1 に答える 1

7

このコードは、コードを変更して害を及ぼすことができますか?

はい。実際、それ自体を変更する必要さえなくても害を及ぼす可能性があります。

動的にロードされた dll のコード部分は、デフォルトで読み取り専用ですか、それとも書き込み可能ですか?

デフォルトでは、DLL は自身を変更できます。そのためには電話をかける必要がありますVirtualProtectが、それは完全に可能です。

コードが他の dll を使用していない場合でも、システム dll からのコードを必要とする何かを行うことができますか?

DLL は、任意のシステム DLL をロードし、選択した関数を呼び出すことができます。

dll をロードするための関数がデフォルトでロードされていない場合、どうすれば別の dll をロードして関数を見つけることができますか?

LoadLibraryとを呼び出しGetProcAddressます。DLL が実際に何もインポートしない場合、GetProcAddress. しかし、不可能ではありません。Windows がそれを行うことができれば、DLL も同様に行うことができます。できることの 1 つは、すべてのプロセスにロードされる kernel32 DLL のメモリ内コンテンツを読み取ることです。PE エクスポート テーブルを解析し、それを使用して のアドレスを見つけることができますGetProcAddress

于 2013-02-18T20:20:01.477 に答える