コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2007年3月8日 >>> 2007年2月9日
link もっと後

2007年3月8日

Win32 APIのフック

研究室の方々が WindowsってAPIのレイヤでフックできないの?って話をしていたのでちょっと考えてみました。DLLの呼び出しをフックする手法は以下のような手法が考えられますが、どれも一長一短です。

フックDLL
概要:フックしたいDLLと同じexportsを持つ偽物DLLを作成して、操作対象プロセスに優先的にロードさせる(カレントディレクトリに配置など)。
長所:比較的簡単に実現できる。
短所:いちいちDLL作るのめんどくさい。いくつかのDLLには効かない。
デバッグ関数
概要:OSのデバッグ機能を用いて、フックしたいAPIの先頭アドレスでデバッグブレークする。
長所:簡単かな?作ったこと無いので良くわからんです。
短所:たぶん遅い。Windowsはデバッガのデタッチができないため、用が済んでもフックプロセスを消せない。これは致命的。
IATパッチ
概要:DLLの関数をcallするときに用いるアドレステーブル(IAT: import address table)を書き換えて、フック処理を呼ばせる。
長所:IATさえ使っていればどんなDLLの関数でもフックできる。
短所:IATの書き換えが大変。スタティックリンクされるとフックできない。
コードインジェクション
概要:DLLの関数の先頭を書き換えフック関数へジャンプさせる命令を入れる。
長所:DLLだけに限らず、どの関数でもフックできる。
短所:関数の先頭アドレスが分かっていないとフックできない(DLLの関数ならたぶん大丈夫)。LoadLibraryとGetProcAddressで動的ロードされたり、スタティックリンクされるとフックできない。

名前は勝手に付けました。下に行くほど実装が面倒くさそう、と勝手に思っています。正式名称(orもっと格好いい名前)や、他の方法をご存じの方は、ご教授いただけると幸いです。

IATパッチングによるDLL呼び出しのフック

以前、フックDLLでwinsockかなんかをフックしたことがあるので、今回はIATを外から無理矢理ぶっ潰してフックを実現してみました。

試しにWindows MessengerのSHELL32.dll!Shell_NotifyIconに割り込んで、ダイアログを表示させてみました(下図)。


Shell_NotifyIconをフック

ちなみにshell32.dllであればフックDLLの方が遙かに楽だと思います。kernel32.dll!CloseHandleなんかもフックしてみたのですが、見た目に呼んでるんだか呼んでないんだかわからんのよね。

課題

ロードされたモジュールは各自のIATを持っています。そのためIATパッチを行う場合は、全てのIATのエントリを虱潰しに見なければなりません。

あるプログラムhoge.exeがkernel32.dllとuser32.dllをロードしていたとしたら、IATは少なくともhogeとkernel32とuser32の3つ分存在するはずです。

その状態でuser32.dll!MessageBoxWをフックしたいと思ったら、全てのIATのエントリからMessageBoxWに関わるエントリを探して書き換えなければ、打ち漏らしが発生してしまいます。IATパッチにおいて、フックをかける処理はかなりヘビーなものになるでしょう。

またDLLはいつロード/アンロードされるかわからないので、フックの設定や解除を徹底しようと思うとかなり難しいです。そのため厳密にフックする必要がある、セキュリティシステムなどには向かない手法です。

あとは…フックを通知する方法も考えないと行けませんね。これはそのうちなんとかなるんじゃないかと思っております。

編集者:すずき(2007/03/08 18:39)

コメント一覧

  • hdkさん(2007/03/08 23:01)
    デバッグ機能とアドレステーブルの書き換えの組み合わせはやったことありますw うまくいったけどあれは遅かった
    http://www.deez.info/sengelha/code/win32-ldpreload/
    これやってみたいんだけどな... 結局やってないや
  • すずきさん(2007/03/09 00:28)
    おお、さすが。でもなぜにIATとデバッグを併用?どちらかで良くない?
  • hdkさん(2007/03/09 01:01)
    詳しくないんで、デバッグ機能使って DLL が読み込まれるタイミングをとらえるようにしたんです。あと、子プロセスを全部フックしたかったというのもあります。

    っていうか IAT パッチングってどうやってるの? プロセス起動直後からとらえることってできる?
  • すずきさん(2007/03/09 12:37)
    なるほど。デバッグ機能のDLLロードイベントは便利ですよね。
    CreateProcess直後は IAT にアドレスが書かれていないので、書き換えできないです。既に動いてるプロセスにフックを引っかけることを考えてました。

    起動直後に止めたいとすれば、一応、PE ヘッダに書いてあるエントリポイント(main の頭とか)にフックを入れておいて、その時点で IAT を根こそぎ書き換えるという方法を考えてました。

    でもこれだとDLLの初期化関数(DllMain)は実行されてしまいますかねえ。
  • IKeJIさん(2007/03/10 20:47)
    LoadLibraryをフックするというのでは駄目でしょうか?
  • IKeJIさん(2007/03/10 20:48)
    ところで、この日記のコメントを書く時に、
    >上記、確かに認めます
    とありますが、何を認めるのでしょうか?
  • すずきさん(2007/03/11 17:11)
    そうするとLoadLibrary以外のロード方法に対して無力という罠が。
  • すずきさん(2007/03/11 17:14)
    > 上記、確かに〜
    ホントは、
    管理者の不適切だと思う物は消します
    とか、
    公序良俗に反する物は書くな
    とか、そんな規定を書く予定が、めんどくさくなってやめたのです。その残骸です。
  • すずきさん(2007/03/13 16:21)
    せっかくなので利用の際のお願い、を追加しました。
open/close この記事にコメントする



2007年3月7日

優雅に速く

プログラムというものは基本的には、動いて欲しいと思った通りに動くプログラムを書けば良いと思いますが、スピードや保守性を求め始めると少し事情が変わってきます。

スピードを求めるなら多少トリッキーなコードも必要になるでしょうし、保守性を求めるなら、他人が読むことを考えて綺麗に書く必要があります。

普段からエレガントで速いコードが書ければ良いのにと思っているのですが、私のようなヘボプログラマにとってはなかなか難しいです。

プログラムがうまくいかないと、いつも決まってこんなことを考えています。現実逃避とも言いますね。

編集者:すずき(2007/03/08 06:39)

コメント一覧

  • つかはらさん(2007/03/08 11:08)
    そんなとき自分は
    「時間があれば俺だってもっとうまく書けるのに…」
    と言い訳してしまいます。
  • すずきさん(2007/03/08 17:13)
    ああ、思う思う。

    さらにひどくなると、「後で暇になったら綺麗に書き直せばいいや。」と放置します。
    もちろん書き直しされることは永遠にないのですが…。
open/close この記事にコメントする



2007年3月6日

卒業旅行2日目

朝起きて風邪がぶり返していないことにほっとしつつ、朝ご飯。

せっかく来たからには魚尽くしということで、鴨川市の地魚回転寿司丸藤に行きました。ホテルの晩ご飯も寿司があったので、都合2日で3回寿司食ったことになります。

丸藤は大繁盛で、7組くらい待っていました。恐らく丸藤は元は回らない寿司屋だったんじゃないかと予想しています。つくばで言う大漁寿司(R354沿い)みたいな感じです。

残念ながら実験が忙しくて旅行に参加できなかった榮樂君におみやげを買って、後は外房の海岸沿いをひた走り、海を見ながら帰りました。風がすごくて海が荒れまくりです。

学生生活最後にふさわしい、良い思い出が出来ました。

編集者:すずき(2007/03/07 01:27)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年3月5日

卒業旅行1日目

研究室のM2の皆さんで千葉に旅行に行きました。行きは高速で内房まで一気に進みました。途中で富津岬に寄ったらものすごい風。飛ばされそうなくらいの風にちょっと楽しさを覚えたりして。

ホテルですが、南房総は白浜町の南国ホテルという所です。安くてご飯も付いているという破格のプランでした。値段だけ見るとビジネスホテルかと思いますよ。

房総に来たからには魚を食おうってことで、寿司屋を探すも下調べしなかったのでどこに何があるかさっぱりわかりません。ホテルの人に聞いてみたら、館山市街に回転寿司のやまとがあるとのこと。チェーン店ですけどきっとネタが違うと信じてそこで食べました。

実はそんなに期待していなかったのですが、100円均一の回転寿司よりかなりおいしかったように思います。他のやまとに行ったことないので、館山だけなのか、全店同じようにうまいのかはわかりません。

ホテルでは温泉に浸かって疲れを癒しつつ、定番の温泉卓球などをやりました。ペングリップかつ、ピンポン球が全然跳ねなくて難しかった…。

ロビー横のインターネットコーナーに2時間くらい入り浸ってたのは、情報系って事でご愛敬です。

編集者:すずき(2007/03/07 01:31)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年3月4日

きゅーと

キュートで軽く昼食を取って、お菓子を堪能しました。大下さんはタルト、自分はプリン。

やっぱり高いプリンはうまいなあ、という気がしたけど、同じ容器に入れて出されてどれが一番高いか?と聞かれてきっとわからないでしょう。100円で頑張ってるプッチンプリンは偉大だと思う。

風邪

しかしどうやら風邪をひいたようで具合が悪くなり、途中で切り上げて帰ってきました。

それからはずっと寝ていました。大下さんに風邪が伝染ってないことを祈ります…。

編集者:すずき(2007/03/07 00:51)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年3月3日

遊んだ日

暇で仕方ないというじょーの誘いを受けて、北脇さんと3人で遊んでいました。

ランランで夕飯を食べた後、パーティーパーティーでカラオケしました。スカスカだったのに、微妙に古い機械のある部屋に通されたのはなぜだったのかなあ。一見さんだと思われたかな?

ジャンボリーというゴルフ場で打ちっ放しをしました。YRPに居たときに、一回連れて行ってもらったくらいなもので、全然わかってません。全員右利きなのに、左利き用のクラブを間違って持ってくるくらいわかってません。

そんな状態なのでもちろんボールに当たりません。当たったら当たったで、右や左へ曲がる変化球でした。難しいなあ、ゴルフって…。

最後にいのいち亭で焼き鳥食べて、軽く飲んで解散しました。

編集者:すずき(2007/03/07 01:02)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年3月2日

シンボルパス、シンボルサーバ

Visual Studioはデバッグのときに、デバッグ対象のモジュール(プログラムやDLLなど)のシンボル情報を探しに行きます。基本的には [ツール(T)] - [オプション(O)] - [デバッグ] - [シンボル] で設定したパスやシンボルサーバを見に行きます。もし _NT_SYMBOL_PATHという環境変数があればそれも見ます(※)。

ここにMSの公開シンボルサーバ(http://msdl.microsoft.com/download/symbols)などを設定しっぱなしにしておくと、VSはデバッグ開始の度に見に行きます。ネットワークのスピードによりますが、かなり待たされます。

ISDN以下のナローバンド、よく切れる無線LANや腐れプロキシを通す決まりがある(企業とか)など、劣悪なネットワーク環境にいる場合、最初の一回で欲しいシンボルを落としておいて、次からは外すのが吉です。シンボルサーバにあるシンボル情報なんてそう変化するものでもないでしょう。

(※) __NT_SYMBOL_PATHは "srv*パス*サーバ" という変わった構文で書かなければなりません。設定方法はMSの Microsoft Symbol Serverを使用して(長い!略)をご覧ください。

編集者:すずき(2007/03/02 10:55)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年3月1日

家の方が作業効率良いよね

毎回恒例のYRPのネットワークには繋げない、って決まりがあるため、無線LANのアドホックモードで別のマシンに繋いで、そこから外部へ。研究所のネットワークはHTTPしか通さないようなので繋げたとしても利用価値ないですけどね…。

しかしこの無線LANが 20分も持たずに切れる切れる。しまいにゃ俺も切れるぞ、この腐れマシンめ。

マシンが遠いからかと思って、マシンを並べてみても結果は同じでした。アドホックモードってこんな不安定なの?

編集者:すずき(2007/03/01 17:43)

コメント一覧

  • kawasakiさん(2007/03/06 00:38)
    Masterモードで動作させるとどうなるんですかね?
  • すずきさん(2007/03/07 00:37)
    インフラストラクチャモードとアドホックモード以外って、Windowsでできたっけ?
  • kawasakiさん(2007/03/07 10:03)
    Windowsでは無理かもしれませんね
  • hdkさん(2007/03/07 23:23)
    Master モードってアクセスポイントと同じやつ? この前私が買った GW-US54GXS はできるって書いてありましたが。
  • すずきさん(2007/03/08 06:31)
    お、Windowsでもできるんですか。ノートPCが2台あるうちに実験してみるかな。
open/close この記事にコメントする



2007年2月28日

ミスった

未来日記を書いてしまった。防止策か削除できる仕組みを作らねばまたやってしまうなあ。と、前にもこんなことを書いたけど、結局何もしていない。

新しいPC

今使っているノートPC(NEC VersaPro UltraLite)は研究室からの借り物なので、4月になったら返さなければいけません。就職先へ引っ越すときのゴタゴタで、しばらくデスクトップも使えなくなると予想されます。ネットがないのは仕方ないとしても、PCがないのはちときついでしょう、ってことでノートPCを新しく買いました。

買ったのはSONYのVAIO type Gです。新型VersaProとLet's Noteあたりと結構迷いました。どれも捨てがたいです。

VersaProはCPUがCore Duoです。現行VersaProの1.8インチHDDは遅すぎなので、2.5インチHDDを選べるのは良い点です。キーボードのキーが正方形なのがGoodです。
メモリを2GBにできないのがマイナスと言えばマイナスですが、3機種の中で一番バランスが取れていると思います。

Let's NoteもCPUがCore Duoで、14時間という抜群のバッテリー駆動時間を誇ります。速度重視で2.5インチHDDを採用しています。Let's Noteのスペックが一番好感触でした。
メモリが2GB積めず、キーは正方形ではないです。製品には文句無いのですが、将来Let's Noteを使うだろうことが容易に予想できたので、別の製品を選びました。

VAIOはメモリが2GBまで積めます。あとギガビットイーサが使えます。3機種中最軽量なのと、天板が平らで持ち運びがスムーズにできるデザインが一番の魅力です。
CPUがCore Soloで、HDDが1.8インチなのでかなり遅そうです。これは大きなマイナスポイント…。それとキーが正方形ではありません。

VersaProがボンネット構造をやめるか、VAIOのHDDが2.5インチだったらパーフェクトだったんだけど、どのマシンも限界ギリギリまで作りこんでるから簡単には行かないんだろうなあ。

私も含めて日本人は軽くて小さいPCが大好きなので、メーカーさん、これからも頑張ってください。

編集者:すずき(2007/02/28 01:36)

コメント一覧

  • hdkさん(2007/03/01 00:03)
    HDD 1.8 インチで Core Solo でも、研究室で使ってた Pentium 4 デスクトップより十分速いから心配ないですよw
  • すずきさん(2007/03/01 10:03)
    Pentium 4 は Core はもちろんのこと、Pentium M にすら敗北してるからねー。
    少なくともHDDは遅い気がするなあ。
open/close この記事にコメントする



2007年2月27日

スタートダッシュ

いきなり寝坊して、昼前に研究所につきました。出だしから既に駄目な感じ。

横須賀って、昼はいかにも平和な地方都市でじーさんばーさんがその辺うろついてるだけなんですけど、夜は暗くて治安悪そうな雰囲気です。この落差は何だろう。やはり米軍の影響か。

編集者:すずき(2007/02/28 00:08)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月26日

いい日旅立ち

今日からYRPに出張です。いざ横須賀へ。借りたマシンへ無線LANのアドホックモードでつないでいるのですが、またしても無線LANの調子が悪いです。以前と全く構成が違うのになぜ…。

ホテルが値段の割にすごく広くて、いわゆるビジネスホテルのシングルルームの倍はあります。ソファーとテーブルなんかも置いてあって、もてあますくらい広いです。部屋がタバコ臭いのがいまいちだなー。

珍しく早起きしたせいか、へんな時間に眠ってしまい、夜中の3時に目が覚めました。この日記を書いたら、また寝ます。

編集者:すずき(2007/02/27 03:57)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月25日

さっぱり

散髪に行ってきました。頭はさっぱりしましたが、昨日今日の冷え込みに対しては逆効果だったようです。さ、寒ー!!

エェらーにんぐ

会社から指定されたe-learningの講座を終わらせました。e-learningはWeb上で出来て、送られてきたUser IDとパスワードを使って専用サイトにログインします。確認テストなんかもあって、見事にペーパーレスです。時代の流れだわ。

そのサイトはちょっと変で、ログイン後にログアウトができません。IEを終了させるか、一定時間放置すればセッション切れでログアウトされるとはいえ、明示的なログアウトができないのはさすがにおかしいでしょう。

ってことで、管理者の方に質問しておきました。さて何と返ってくるでしょう?

編集者:すずき(2007/02/26 03:05)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月24日

初がんこ

塚田氏とともに、がんこやに初めて行きました。メニューを見ると電気ラーメンという変わった名前のラーメンがあるので頼んでみたのですが、良く見ると横に小さい文字で「辛」って書いてありました。気づいたときは時既に遅し。

しかし電気ラーメンは思ったより辛くなくて助かりました。

唐辛子の辛さって痛いだけで味になってないので、入れるにしてもほんの少しにしてもらいたいものですね…。

夕飯後

田口氏を誘って、3人でSTEPに行って卓球しました。学類の体育で使った卓球ラケットを持って行ったのですが、手入れもせず放置していたため店のツルツルラケットと大差ない状態になっていました。せっかく買ったのにちょっと悲しいなあ。

編集者:すずき(2007/02/25 05:31)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月23日

ミーティング

ドコモミーティングでした。3月で筑波を去るというのに、この山積みの仕事は一体何だろう。あと1ヶ月でどこまで終わるのか、そしてちゃんと引き継げるのか…。

引き継いでくれる方々に迷惑をかけない程度に頑張ろうと思います。

編集者:すずき(2007/02/24 20:33)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月22日

お仕事

今日もドコモの研究用の実験プログラムを書いていました。一応できたので適当に走らせて結果を取り取り。

結果をExcelでグラフにしたら、X軸の数字(4桁)が勝手に3桁に切り詰められてしまいました。しかもフォントをいじるくらいでは直りません。Excelのグラフ機能は狂ってます。

私信

うちのPS2は起動画面(最初のポワーン〜って鳴る画面)で電源ボタンを押したらリセットがかかりました。

でもゲームを始めてから、電源ボタンを押したら電源が落ちました。こういう仕様なのではなかろうか?

編集者:すずき(2007/02/23 06:13)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月21日

お仕事

明後日のミーティングに向けて、実験用プログラムの実装をせかせかとやりました。でも終わらなかったので寝ます。

やっぱ寝ない

と、思ったのですがついトリックスター+を始めてしまったのが運の尽きでした。寝たのは結局朝の6時です。こんな怠惰な生活ができるのも後1ヶ月ですね。

いずれなる社会人に向け、今のうちから規則正しい生活に直して行きたいと…思うはずないよね〜。いつか強制的になるんだからさ。Let's怠惰生活です。

編集者:すずき(2007/02/23 06:03)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月20日

卒業単位

卒業前にごたごたするのは嫌だったので、単位を一応確認しておきました。34.0単位、きちっと出てました。

夢屋

研究室の皆さんと夢屋で夕食。いつもながら量が多いんだよなあ、って話をしていたら半ライスにすればいいのにって言われました。な!そんな裏技がっ!!

編集者:すずき(2007/02/21 20:52)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月19日

頑張りすぎ

以前、登録してちょっとやって放置していたトリックスター+ですが、修士論文が終わると同時にものすごい勢いでやっています。序盤はレベルが上がりやすいとは言え、2週間で40から80へと倍にしたのは、さすがにちとやりすぎだったかも知れません。

トリックスター+を始めたばかりの頃、研究室の皆さんを誘ったらあっさり断られたのに、今は自分を除く3人ほどがやっています。何らかの心変わりがあったのか…?

MMORPG雑感

コアなユーザーには、Lineage(NC Soft) のようにバランスが良くゲームシステムが面白いものは売れます。しかし初心者にとっては、激難の難易度設定や洋ゲーを彷彿とさせる絵は近づきがたいものがあります。
日本にもLineageのようなMMORPGはたくさんありますが、あまり売れないのか大ヒットという話は聞きません。

そんな中、Ragnarok Online(Gravity、ガンホー) はマップだけ3Dで、キャラクターは2D(※) とし、難易度もかなり控えめにしました。これは韓国や日本で大人気を博し、国際版が作られるほどの人気ぶりでした。

ちなみに、洋ゲーの絵にならないように調整してある作品はまだまだあります。ただ、スクリーンショットを見ただけなので見た目からの判断です。詳しいことは知りません。

テイルズウィーバー(Nexon Japan)
トリックスター+(NTREEV、GCREST)
2Dキャラクターを用いています。Ragnarokっぽいです。
エミル・クロニクル・オンライン(ブロッコリー、ガンホー)
マビノギ(Nexon Japan)
3Dですがトゥーンレンダリング(2/21: カートゥーン -> トゥーンに修正)で、2Dっぽいキャラクターにしています。
Seal Online(YNK、グリゴン)
Xenepic Online(NHN Japan(HanGame))
クロスゲート(スクウェア・エニクス)
3Dキャラクターですが、デフォルメによって近づきがたい雰囲気をなくしています。
メイプルストーリー(Nexon Japan)
ちょっと特殊。俯瞰視点ではなく、横スクロール画面です。恐らく2Dです。

(※) Gravityのアークトゥルスというゲームに使われた手法だそうです。

編集者:すずき(2007/02/21 20:19)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月18日

バレンタイン・デー

大下さんからチョコレートタルトとムースをいただきました。おいしかったです。

休日の過ごし方

じょー、田口氏、大下さんとSTEPでビリヤードと卓球をしました。やはり卓球は楽しい。

STEPを後にして百香亭へ。晩ご飯の後は、大下さんの家で軽く飲んで解散しました。

編集者:すずき(2007/02/19 18:12)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月17日

微妙にVista

我が家のWindows XPのリモートデスクトップ接続のプログラム(mstsc.exe)がアップデートされ、バージョンが6.0.6000.16386になっていることに気づきました。XPなら5.1.xxxxのはずなので、バージョンだけ見るとVistaの一部に見えます。

Vistaになってリモートデスクトップのプロトコルが変わったのかなあ?rdesktopが動かなくなるとちょっと不便だな。

編集者:すずき(2007/02/17 18:48)

コメント一覧

  • kawasakiさん(2007/02/18 11:53)
    サーバー認証ができるようになったみたいですよ。
  • すずきさん(2007/02/19 16:01)
    なるほど、機能追加ってところかな?
open/close この記事にコメントする



2007年2月16日

忘年新年歓迎送別会

ドコモの方々と飲み会しましょうという話しが出ていたのですが、先生を始め皆様忙しくて予定が合わず、できずじまい。ところが今日は奇跡の日、皆さんの予定が合ったようです。

忘年会、新年会、歓迎会、送別会が全部一緒になった結果、通常の飲み会になりました。宴会の席で色々話しましたけど、やっぱりOS研って凄い人の集合だなってのと、ちょっと変わった人が多いなあと(自分も含めて)改めて思いました。もちろんそこは良いところですよ!

ええ、うまくいってません

某プロテクトさんの姿をやっと拝めたかに見えたものの…?一瞬このような絵が出ますが、直後にOSがフリーズします。

GameMon.desという変な名前のプロセスが某プロテクトだと思われます。


その姿を拝めたかに見えた瞬間

あと、もう一つhiddenのプロセスがあるんですが、名前を見るに恐らくゲームのプロセスなので、どうでも良いです。というわけで、余計な部分は海苔で隠しておきました。

ちなみに同じ事をXPでやったらリセットがかかりました。BoDになってもリセットかけないように設定しているのに。某プロテクトが何か異常を検出したらリセットかけるようになっている、というのはさすがに考えすぎでしょうから、私のいじり方が悪くて吹っ飛んでるだけでしょう。

某プロテクトはあまりに手の込んだrootkitでして、簡単には戻せないんじゃないか、って気がしてきました。この手のものって戻したら戻したで何かおかしくなりそうですよね。

編集者:すずき(2007/02/17 04:41)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月15日

ドコモ

明日までに作ります、と言ってしまったものを作りました。すごい眠くてやる気が出ません。たくさん寝たのになぜだ…、もしや寝過ぎ?

Windowsさーん!

MSDNにはカーネルモードドライバのサポートルーチンとして、スレッドを作ったときに通知される関数を登録するPsSetCreateThreadNotifyRoutineという関数と、通知関数を削除するPsRemoveCreateThreadNotifyRoutineという関数が載っています。

しかしWindows 2000にはPsRemove〜 がありません。じゃあPsSet〜 もないのかというと、なぜか存在します。なんだこの片手落ち。しっかり作れよ!!

仕方ないから自分で登録解除する方法を紹介します。
PspCreateThreadNotifyRoutineという配列に通知関数のアドレスが登録されているので、自分で登録した関数を探してNULLに変えます。さらにPspCreateThreadNotifyRoutineCountと言う変数をデクリメントすれば登録解除されます。

私の環境(Windows 2000 SP4最新パッチ適用済み)だと、0x80483200(RoutineCount) と0x804831a0(Routine) というアドレスで、Routineの配列長は8(合計32バイト)でした。

編集者:すずき(2007/02/16 03:15)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月14日

rootkit

昨日に続き某プロテクトを眺めていたら、もう一つ発見しました。

Windowsではプロセスの構造体をActive Listという双方向?リストで繋いでいます。ところが腐れプロテクトはリストを壊して自分の前と後ろを繋いでしまいます。そうすることで自分は居ないかのように見せかけています。

しかしそのままではOSからも見えないため、実行されなくなります。そのため自分のプロセスが持っているスレッドを、適当なプロセス(恐らくID:8のSystemプロセスだと思います)に押しつけて実行させます(※)。

SSDTに加え、カーネルオブジェクト書き換えと来たもんだ…。このゴミプログラムは何やってくれてるんでしょうね、ほんと最低です。

(※)カーネルオブジェクト書き換えはFu rootkitというrootkitが使用しているそうです。

編集者:すずき(2007/02/14 21:07)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月13日

送別会

今年でつくばを離れてしまう阿部さんのための、送別会が開かれました。修論、卒論生のみなさん、発表お疲れ様でした。という労いの会も兼ねています。

場所は灯禾軒でした。飲み会にありがちな、ご飯が大量に余る状況にはなりませんでした。料理が少なかったのか、単にみんなおなかが空いていただけかな。最近のOS研ではM1の人々の就職/進学の話しで持ちきりです。さて、来年どうなっているやら?
2次会は横にあるじんぱちでした。酒を飲まなかったせいか、かなり安かったです。

3次会というか既に3人しかいなかったんですが、STEPで卓球とカラオケをしました。

ドライバ

某プロテクトを殺せないかと思って、変なドライバを書いてみました。結果を先に言うと、うまくいきませんでした。

某の動きを観察してみると、SSDTを書き換えているようです。具体的には、NtDeviceIoControlFile, NtOpenProcess, NtProtectVirtualMemory, NtReadVirtualMemory, NtWriteVirtualMemoryの5つ(2/14 NtWriteVirtualMemoryを追記)にフックを入れています(Windows2000の場合)。このやり口はもはやrootkit以外の何者でもないですね。

まずは単純に、正しいSSDTを記録しておいて、書き換えられた後に元の値に戻してやりました。ところが強制リセットがかかってしまい、駄目でした。

次にプロテクトが使っているフックルーチンの先頭を無条件near jmpに書き換えて、正しい位置に飛ぶように書き換えたのですが、Windowsがハングアップしてしまって、うまくいきません。

何か間違ってるのでしょうけど、いまいちわかりません。難しいですね…。

編集者:すずき(2007/02/14 19:44)

コメント一覧

  • kawasakiさん(2007/02/14 11:11)
    Windows Vista ではSSDTの書き換えは出来ないという話を聞いたのですが、どうなってるんでしょうね。
  • すずきさん(2007/02/14 17:10)
    SSDT が載ってるページだけ、書き込みしたら例外が飛ぶようにするとか…?できるのかな。
    できたとしても解除できそうだなあ…。
open/close この記事にコメントする



2007年2月12日

キューバはどこだ

昼にキューバ料理の店に行こうと誘われて6号沿いのお店に行きました。そういえばキューバってどこだっけ?って思いながら店に入ったら、壁にでかでかと地図が書いてありました。ああそうか、カリブ海の島国でしたね。

料理は辛い物が基本らしいですが、店員さんに辛くないのありますかって聞いたらいくつか教えてくれました。その中から一つ頼んでみると、不思議な香りの肉野菜炒めが出てきました。なんのスパイスかわからないけど…、おいしかったです。

編集者:すずき(2007/02/13 05:19)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月11日

ものづくり大国

国立科学博物館に行って、ものづくり展を見てきました。前のばけもの展が失敗感漂う感じで微妙だったのに対し、今回の展示は科博の本領発揮と言ったところでしょうか。面白かったです。

ニュースにもなっていた表面が磨かれたピッカピカの車もありましたよ。残念なことに時間が経ってしまって若干曇っていました。

工業製品の原料とか部品が多いのですが、車の部品、携帯の外装なども展示してあります。これらは身近にあるものですが、作るとなると結構複雑で難しいらしいのです。すげー複雑で細かい部品とか、何に使うのかわからなくても製品の形、材質を見て、これが一発で作れるか?と考えてみるとその技術力に感動します。

科学系の展示では珍しく、あちこちのパネルで「職人が〜」「熟練の技で〜」といったフレーズを見かけます。工作機械では到底なし得ない精度の加工も、熟練工がやれば一発というのは珍しくないようです。ものづくりには理屈じゃない技も必要ですね。

編集者:すずき(2007/02/11 23:42)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年2月9日

卒業旅行

僕の卒業旅行は横須賀で仕事になりそうです。南無三。

編集者:すずき(2007/02/10 17:25)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2007年3月8日 >>> 2007年2月9日
link もっと後

管理用メニュー

link 記事を新規作成

<2007>
<<<03>>>
----123
45678910
11121314151617
18192021222324
25262728293031

最近のコメント5件

  • link 24年6月17日
    すずきさん (06/23 00:12)
    「ありがとうございます。バルコニーではない...」
  • link 24年6月17日
    hdkさん (06/22 22:08)
    「GPSの最初の同期を取る時は見晴らしのい...」
  • link 24年5月16日
    すずきさん (05/21 11:41)
    「あー、確かにdpkg-reconfigu...」
  • link 24年5月16日
    hdkさん (05/21 08:55)
    「システム全体のlocale設定はDebi...」
  • link 24年5月17日
    すずきさん (05/20 13:16)
    「そうですねえ、普通はStandardなの...」

最近の記事3件

  • link 24年6月27日
    すずき (06/30 15:39)
    「[何もない組み込み環境でDOOMを動かす - その4 - 自作OSの組み込み環境へ移植] 目次: RISC-V目次: 独自OS...」
  • link 22年12月13日
    すずき (06/30 15:38)
    「[独自OS - まとめリンク] 目次: 独自OS一覧が欲しくなったので作りました。自作OSの紹介その1 - 概要自作OSの紹介...」
  • link 21年6月18日
    すずき (06/29 22:28)
    「[RISC-V - まとめリンク] 目次: RISC-VSiFive社ボードの話、CoreMarkの話のまとめ。RISC-V ...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 06/30 15:39