以前の日記(2008年11月1日の日記参照)で書きましたが、先週くらいにラテールのプロテクトが変更されました。
起動時のスプラッシュ画面もタスクトレイのアイコンも出なくなり、だんまりな仕様に変更されたのかと思いきや、そもそもGameGuardではないようです。怪しいドライバを入れるrootkitに変わりはないんですが。
新プロテクトのメインとなるのはGPP.DLLです。このファイルはご丁寧にクレジットが入っていまして、製造元はGamepot Inc. だそうです。Gamepotがどこかに頼んで作ったのでしょうかねえ?以降はGamepotプロテクトとでも呼びましょう。
おなじみGameGuardはかなり強烈でして、プロセスの隠蔽は当然のこと、キーボードやマウスの入力も奪い、入力をエミュレートするソフト(※1)を無効化します。攻撃機能も激しくて、カーネルデバッガを動かしたり、プロセス隠蔽を解除しようとすると強制リセットをかましてきます。
一方Gamepotプロテクトはかなり穏やかです。少なくとも強制リセットだとか、全プロセスにフックなどという乱暴なことはしません。
(※1)ただしJoyToKeyは通常動作します。GameGuardのホワイトリストに入っているのでしょうか。
GameGuardはカーネル内のEPROCESS構造体(プロセスの情報を格納する構造体。双方向リンクリストで繋がっている)を変更して、プロセス一覧からゲームプロセスとGameGuardプロセスを隠していました。
その他にも複雑なことをやっていると思いますが、その辺は理解できていません。
一方GamepotプロテクトはEPROCESS構造体を変更しません。カーネルモードでEPROCESS構造体を辿るプログラムを書くと、簡単に見えます。
ラテールのプロセスIDを起動時と異なる値に書き換えてやると、タスクマネージャなどから見えてしまいます(※2)。おそらく (システムコールに渡されたPID) == (ラテールのPID) だったら弾いている?ってところでしょうか。
問題はどこで弾いているかですが、ぱっと見ではわかりませんでした。ありがちなSSDT(System Service Descriptor Table)はいじっていないようです。ntoskrnl.exeにライブパッチでも当てているのでしょうかね…。
GameGuardは重い&ウザいですが、突破は難しそうな感じでした。新プロテクトは優しいですが、私ですらなんとかなってしまいそうな弱さです。こんな程度ならいっそつけなくても良いんじゃないかなあ?
(※2)PIDを変えたまま遊ぶとサーバへの接続が切り替わる時にハングします。なぜなのかはよくわからんです。
< | 2008 | > | ||||
<< | < | 11 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | - | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | - | - | - | - | - | - |
合計:
本日: