kumaryu
kumar****@kumar*****
2008年 10月 22日 (水) 00:03:56 JST
初めまして、kumaryuこと坂本と申します。 exerbで作ったexeが読み込むDLLの置き換えをしようとして調べてたのですが、 途中でちょっと良くなさそうな動作をみつけたので報告しておきます。 今のExerbコアでは、拡張ライブラリや埋め込まれたDLLを読み込む時に一旦テン ポラリディレクトリに書き出してそれを読み込んでいますが、その拡張ライブラ リ等が要求とするDLLと同じ名前のDLLがテンポラリディレクトリに置いてあると それをロードしてしまいます。 具体的な例を挙げますと、opengl32.dllを要求する拡張ライブラリを読み込ませ ようとした時に、テンポラリディレクトリに自分で用意したopengl32.dllを置い ておくと、システムのopengl32.dllでなく自分で用意した方が読み込まれてしま いました。 テンポラリディレクトリはユーザー権限で書き換えられる場所であり、ここによ くない動作をするDLLを仕込むことによって管理者権限の必要無しに本来意図し ない動作をさせることが出来てしまいます。 そこまで行かなくとも、何かの拍子に意図しないバージョンのDLLがテンポラリ に置かれた場合にそのDLLを読み込んでしまう可能性があります。 KnownDLLsに指定されたようなシステムのDLLはシステムの方を先に読むようなの で、全ての拡張ライブラリで危険ということではないようです。 具体的にどう回避すれば良いかは思い付かなかったのですが、望ましい動作では 無さそうだったのでご報告します。 以上です。 ----------------------------------- Ryuichi Sakamoto (kumaryu) website: http://www.kumaryu.net/ -----------------------------------