インターネットmmvoと検索すれば出てきますが、うちの研究室でも複数の感染マシンがでました。
厄介なことに、USBメモリ経由で感染するということと、大学で標準のウィルスセキュリティソフトでは、
完全に検出できない上に削除もできません(2008年4月18日時点でも)。
ここでは、試行錯誤の上、除去ができたと思われるので、そのやり方について記述します。
PCに感染しているかどうかのチェック法
その1 msconfigによる方法
[スタート]→[ファイル名を指定して実行]→msconfig と入力してOK→スタートアップ タブで
mmvo というスタートアップ項目があれば感染しています。
その2 エクスプローラによる方法
[マイコンピュータ]→[ツール]→[フォルダオプション]→表示 タブ
詳細設定の項目で「すべてのファイルとフォルダを表示する」「保護されたオペレーティングシステム
ファイルを表示しない」の二つをチェック
OKをクリックした後、[フォルダオプション]で上記のチェックが外れていたら感染しています。
USBメモリが感染しているかのチェックおよび削除法
USBメモリのルートにautorun.infとas.batの2つのファイルがhidden属性で入っています。
このファイルを削除すればよいのですが、うかつにPCに差し込み自動起動画面からフォルダオープンなどをすると、
autorun.infが起動し感染してしまいます。Step1 まず、PCに感染しているかのチェックのその2ですべてのファイル
を見られるように変更する。(感染しているPCでは,設定変更しても元にもどってしまうためできません.
まず,PCに感染したウィルスを削除してから行う必要があります.)
Step2 USBメモリを差し込む、この際、自動起動画面を使わず、右クリックしてエクスプローラでUSBメモリ内の
ファイル状況を見て、autorun.inf,as.batを探し、見つけた場合には削除する。
PCに感染した場合の削除法
mmvo(exeファイルとdllファイル)と、as.bat,autorun.infを削除する必要があり、どれかが残ると再発します。
ということで、一応、研究室でたぶん成功した削除法を説明します。
Step1 システムの復元を無効にする。
Step2 msconfigを起動し、スタートアップ項目「mmvo」のチェックをはずし、再起動する。
Step3 [スタート]→[ファイル名を指定して実行]→regedit
と入力して以下のレジストリを変更する HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\"CheckedValue"
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\"Hidden"
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\"ShowSuperHidden"
これら3つのレジストリの値を全て1にする。Step4 Explorer上でCドライブの中を見る。見つからない場合、[最新の情報に更新]する。
このときは,ダブルクリックでなく右クリックしエクスプローラでCドライブをオープンすること!
Cドライブルートでダブルクリックすると、autorun.infが起動され感染します.また最初から除去作業のやり直しになります。
Step5 ファイルの検索で、「隠しファイルとフォルダの検索」をチェックして、
ファイル名「mmvo」を検索し、mmvo.exe,mmvo0.dll,mmvo1.dllなど,関連ありそうなファイルを削除する。
Step6 as.bat,autorun.inf を探し,見つかったら削除し再起動する。
最後にもう一度上記の感染しているかのチェックを行い、隠しファイルが表示できればOKだと思います。
Step7 msconfigのスタートアップタブにmmvoが残っているかもしれませんが,チェックがなければOKです.
気になるようならRegeditでmmvoで検索し該当のレジストリを削除すれば出なくなります.
常駐型のウィルス対策ソフトでも防ぐのが難しいため,
つねに,
[マイコンピュータ]→[ツール]→[フォルダオプション]→表示 タブ
詳細設定の項目で「すべてのファイルとフォルダを表示する」「保護されたオペレーティングシステムファイルを表示しない」の
二つをチェックしておき,Cドライブのルートドライブにあるシステム用の隠しファイルを覚えておくとよいと思います.
見慣れない隠しファイルができていたり,または,隠しファイル自体が見えなくなったら感染した可能性が高いことがわかります.
ODEの実行法
まず、ODEのソースコードを取ってくる。
ode-0.6-src.zip
を解凍する。
フォルダをc:\に移動する。
つまり、c:\ode-0.6とする。
環境変数に追加する。マイコンピュータを右クリックし「プロパティ」の「詳細設定」の環境変数のincludeの最後にC:\ode-0.6\includeを追加する。
VisualC++がインストールされている場合には、このようにする。
C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include;C:\ode-0.6\include |
環境変数のlibには、C:\ode-0.6\buildを追加する。同様に
C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib;C:\ode-0.6\build |
一度、ライブラリを再構築する。
この場合には、統合環境を使う。まず、
C:\ode-0.6\build\vs6のode.dswを実行する。
ビルドのバッチビルドを選択し、ビルドを行う。
次に、コマンドウィンドウを起動し、
cd c:\ode-0.6\ode\test |
に移動し、
cl test_buggy.cpp |
ただし、これだけではエラーが出るので、
C:\ode-0.6\ode\test>cl test_buggy.cpp ode.lib drawstuff.lib winmm.lib user32.lib opengl32.lib glaux.lib glu32.lib gdi32.lib |
これは、以下のコマンドをプログラム中に追加したのと同じである。
#pragma comment(lib,"ode.lib") |
しかし、これでもエラーがでる。この理由は、共有ライブラリを使用しているため、リンク時にライブラリを指定する必要があるからである。ライブラリの選択オプションは、
MSVCRT.lib 共有DLLでMFCを使用 Release /MD |
となっている。デフォルトでは、/MDオプションをつければ、ワーニングが出るがコンパイルできるようになる。
C:\ode-0.6\ode\test>cl test_buggy.cpp ode.lib drawstuff.lib winmm.lib user32.lib opengl32.lib glaux.lib glu32.lib gdi32.lib /MD |
しかし、これでもode.dllがないためエラーが出てしまい実行できない。そこで、ode.dllを
c:\ode-0.6\ode\testのフォルダにコピーをしておく。
また、
C:\ode-0.6\drawstuff\src
の中の、resources.rcとresource.hを
c:\ode-0.6\ode\testのフォルダにコピーし、
test_buggy.cppの中の
fn.path_to_textures = "../../drawstuff/textures";
を
#include "resources.h"
fn.path_to_textures = "c:/ode-0.6/drawstuff/textures";
に変更
C:\ode-0.6\ode\test>rc resources.rc |
とすることで、コンパイルができる。
まとめると、コンパイルしたいファイルに、
#pragma comment(lib,"ode.lib") |
を追加し、
fn.path_to_textures = "c:/ode-0.6/drawstuff/textures"; |
と変更、
それにコンパイルするときは、
cl test_buggy.cpp /MD resources.res |
とすればよい。