|
アイコンモジュールは、実は内部的には、いわゆる「DLL」となってまして、
プログラムの一部としてLoadLibrary関数にてメモリ上にロードしています。そ
れでエラーが出ているようです。
LoadLibraryに失敗しても、ExtractIconEx関数にてアイコンだけは取り出せて
いるようです。でもツールバーは出ません。
SetErrorMode()を使ってもエラーメッセージは回避できませんでした。
-----それで仕方なく---------
作者さんがライブラリに登録された時にメールアドレスを入力してもらってい
たようなので、先ほどメールを出してみました。ただ、本当のメールアドレスを
入力してもらってるかどうか不明なので、お返事が届くかどうかは今のところ分
かりません。
----------------------------
で、今回の話で思ったのは、もしかして悪意のあるユーザーさんが、自分で作
ったプログラムを「鶴亀メールのアイコンモジュールですよ!」と偽って、ある
いは実際にアイコンモジュールとしても動作するようにしつつ、悪意のあるプロ
グラムを埋め込んで、それを実行させてしまうことが可能であることが分かりま
した。具体的には、鶴亀メールがLoadLibraryすると、DLL側のDllMain()関数が
呼び出されて実行されまして、そこで何でも出来てしまいます。
ということで、これはこれでよくないんじゃないかと思うようになりました。
特に、アイコンモジュールがプログラム的にロードされてることは、一般ユー
ザーさんは知らないということも問題だと思いました。
ってことで、いろいろ調べたら、LoadLibraryExという関数があって、これの
パラメータに「LOAD_LIBRARY_AS_DATAFILE」を指定する手があることが分かりま
した。こうすると、DLL内のプログラムは実行されません。
今回のこの「簡素なアイコンモジュール」も、LoadLibraryExでロードすれば
エラーが出ないようです。
---------------
ということで話が長くなってしまいましたが、セキュリティ的なことも考えて、
LoadLibraryExにてロードするように直します。結果、簡素なアイコンモジュー
ルも問題なく使えるようになります。
今日アップロード予定のV3.19にて対応させていただきます。
|
|