再来週に控えたぷち昇進(?)のための資料作りとか、発表練習のおかげで、普段使わない頭の部分を使っている気がします。おかげでどっと疲れました。
というわけで今週末はのんびり…というかダラダラ。
だいぶ前の話です。店内放送で聞いたことある曲がかかっていたけれど、どうも曲名が思い出せない。NHKのふっるいシルクロード紹介番組で使っていたことも思い出せるのになあ。
なんて曲だっけなあ?と、もやもやしたまま家に着いてしまいました。気になって仕方なくて調べたら、喜多郎の「シルクロード」という曲でした。そのまんまじゃねーか…思い出すもくそもないね。
ラテールのゲームプロセスが見えるようになりました。解き方は書いたらまずそうなので書きません。スマートな方法でもないし…。
以前書き散らした通り、Gamepotプロテクトは比較的単純なrootkitです。具体的には以下のようにしてプロセスを隠蔽しています。
Gamepot rootkit(以降GR)は簡単に言うと、プロセス一覧を取得するサービスコール(システムコール?)をフックし、ゲームプロセスが見えないように書き換えてしまう方法です。
カギとなるのはNtQuerySystemInformationです。NtQuerySystemInformationは様々な機能を持ちますが、その内の一つにプロセスの一覧を取得する機能があります。
プロセス一覧を取得する際、NtQuerySystemInformationは以下の構造体の配列を返します。
先頭のNextEntryOffsetはプロセス情報のサイズをバイト単位で表します。現在のプロセス情報のポインタにNextEntryOffsetだけ足せば、次のプロセス情報の先頭を指す、という寸法です。
最後のプロセス情報のNextEntryOffsetには0が入っているので、区別できます。
SYSTEM_QUERY_INFORMATION *pinfo;
while (pinfo) {
//何かしらの処理をする
...
if (pinfo->NextEntryOffset) {
pinfo = (SYSTEM_QUERY_INFORMATION *)((unsigned char *)pinfo + pinfo->NextEntryOffset);
} else {
pinfo = NULL;
}
}
なぜこんな面倒な方法をとるかというと、プロセス情報のサイズが不定だからです。プロセス情報はスレッド情報を含んでおり、スレッド情報の要素数はプロセスが持つスレッド数によって増減するためです。
GRはシステムコールテーブル(※)を書き換え、NtQuerySystemInformationをフックします。
NtQuerySystemInformationが呼ばれてプロセス一覧が取得されるときに、ゲームプロセスの前に位置している要素を書き換えることで、ゲームプロセスを隠蔽します。下図を参照ください。
NtSystemQueryInformationのフックと書き換え
オレンジ色のNextEntryOffsetを、プロセス情報2つ分(書き換え対象のプロセス情報と、GRが隠したいプロセス情報)のサイズに改竄します。
改竄された情報を用いて、プロセス情報を先頭から処理しようとすると、白抜きしたプロセス(ゲームプロセス)が飛ばされ、認識できなくなります。
つまりGRによってプロセスが隠蔽されてしまったのです。
(※)WindowsではSystem Service Descriptor Table(SSDT) と呼ばれています。
しかしカーネル内のプロセス構造体はそのままなので、プロセスIDを直撃ちして、OpenProcessすると成功してしまいます。とはいえ、ユーザ空間から隠されたプロセスIDを知る方法はないので、メモリを書き換えてくるようなプロセスから身を守るにはこのくらいの機能で十分かもしれません。
Sena氏と屋台焼肉 山一商店(高槻市富田町)に行きました。新潟の和牛を惜しげも無く出してくる店です。
ただ、店舗の入り口や看板はまるで学生向けの定食屋といった作りで、高級肉が出てくる焼き肉屋には見えません。見た目で損してますね。
肉の等級はA4〜A5だそうです。極上五種盛りを頼んだところ、全部が霜降り肉でした。焼けばトロットロです。岩塩につけて食べれば…こ、これはうまい…。ごはんもすすむ。
気になるお値段はピンキリですけど、さきほどの極上五種盛り(霜降りの極上部位を5種、2〜3人前)で5,500円です。むちゃくちゃしなければ5,000円でかなり贅沢できます。おすすめ。
同期の皆さんで問屋街へ買い物に行きました。大下さんも連れて行きました。
今日の目的は大下さんへのクリスマスプレゼントを買うことなんですが、せっかく送る相手が目の前に居るので、最後は本人に選んでもらいました。
朝から夕方くらいまで歩くとどうも疲れてしまう…。ウインドーショッピングは私には向いてない…。
その後は美食酒家ちゃんと(大阪市北区)にて飲み会をしました。この季節は鍋がいいねー。
最後に全員でコンタクトを探すというハプニングもありました。映画やドラマで「コンタクトレンズを落としたから動かないで!」という状況を見かけますが、実際に遭遇したのは初めてです。
無事見つかったので良かったです。踏んでたらなんて謝ろうか…ってちょっとドキドキしました。
風呂(寮の風呂は共同の大浴場)に入って部屋に戻ってきたら、めがねが無くなっていることに気がついた。
風呂場に確認しに戻ってみるも見つからず。とほほ…。
ラテールのキャラクターがLv.40になりました。スキルが2段階目から3段階目に上がり、コンボが繋がるようになって楽しいです。しかし次の段階はLv.60…遠い…。
このラテールですが、我が家に2台あるPCではどちらも微妙に性能が足りません。画面がガクガクしてます。
デスクトップPCはCPUやグラフィックス性能は十分だけども、メモリが足りなくてゲームがガクガクします。
ノートPCはメモリは十分だけども、CPUやグラフィックス性能が足りなくてやっぱりゲームがガクガクします。
さっさと新しいPCを作りなさいという思し召しなのかもしれないなあ。最近AMD一直線だったから、次はCore2 Quadにしてみようかしら。省エネ万歳。
寮に帰って来たら、机の上にある電気スタンドがありえない角度で「こんにちは」してました。倒れてるのかと思って、ぐいっと持ち上げたら根本からズボッて取れた。ええー!
もともとは上記の写真のような佇まいです。写真を撮るために手で戻しました。
しかし完全に土台が壊れているため手を離せばすぐ下記のようになります。
写真だとわかりませんが、ねじ止め先の台も、ねじ止めされていたプラ版も完全にへし折れています。何をどうやったらこんな風に壊れるのか知りたいところ。
この電灯はなんとなく昭和の香りがしますね。Google先生に聞いてみたけれど、そんな型番は知らんと言われてしまいましたよ…。
電灯が壊れたこと自体は全く構わないのです。形ある物はいつか壊れます。
しかし困ったことに寮の対応が全くいけてないのです。
寮の管理人さんに「電気スタンドが壊れた。」と伝えたら「寮の備品を壊したことになるので、弁償してください。」って言われました。何?弁償とな??
こんなんどう見ても経年劣化でしょう…。本日一番ありえないと思った瞬間でしたよ…。
< | 2008 | > | ||||
<< | < | 12 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | 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 | 31 | - | - | - |
合計:
本日: