Featherweight Virtual Machine (FVM)
OSレベルの仮想化ソフトウェア「FVM 1.0」が公開という記事を読み、とりあえずDL*1。詳細はFeather-weight Virtual Machineに。じっくり読みたい。
ドキュメントを眺めてみるとSSDTフックをしているらしいので FvmDrv - hooksys.c - FVM_HookServices を眺めてみると激しい激しい。
_asm cli // Turn off the page write protection __asm { push eax mov eax, cr0 and eax, not 10000h mov cr0, eax pop eax } /* ここから怒涛のAPIフック */ __asm { push eax mov eax, cr0 or eax, 10000h mov cr0, eax pop eax } _asm sti
その数44API(たぶん)。ちなみに前後のアセンブラは以前に紹介したCR0 Trickですね。最初にEAXレジスタをpushしているので元の値が破壊されないですね。なる。
環境はVC9だったがUI以外は問題なくビルドできた。しかしUIにはMFCが使われているため、Expressではビルドできない。そこで VC8 Standard で小一時間ほど頑張ってみたが、実行時エラー "Failed to create empty document." を解消できない。どうもMDI子ウィンドウの生成時に使用されるウィンドウクラスの名前が正しくないらしいが、正直MFCの中のことなのでわからんです。英語版のDLLが必要とかそういう話なのかな?
Detectしてみた
SDTが真っ赤っか!
それにしてもGUIないと使い方がよくわからん。
隠すのではなく捏造する
そうすれば確かに仮想環境になるわけだ。FVMはRootkitとは正反対のアプローチといえる。
ところで会社で何人かに話題をふってみたが皆さんあまり関心をお持ちで無いようでした。。。。