コグノスケ


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

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

2007年3月21日

久しぶりゲーセン

塚田氏と、馬渕氏とともにご飯を食べに行きました。その後、デイズタウンにあるJAMJAMへ。塚田氏と馬渕氏がクイズマジックアカデミーを延々とやっているのを横から見てました。

昔は筐体はずっと同じで、ゲームだけ入れ替わっていましたけど、今のオンライン物の筐体って変な形していたり、タッチパネルがついていたり、ゲーム会社のカード読み取り機、のような特殊なインタフェース持ってますよね。専用品なのかなあ?ゲームが廃れたらどうなるのかね。

編集者:すずき(2007/03/23 00:11)

コメント一覧

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



2007年3月20日

やっと

連絡きたー。おそーーーーーい!
研修でへまやって僻地に飛ばされなければ、来年は恐らく大阪に住むことになるでしょう。

そんなことよりも、住民票は実家に移しておきなさいという恐ろしい指示が書いてありました。住民票移すためだけに、北海道に帰らなければならないのでしょうか。

追いコン

研究室の追いコンがありました。プレゼントでミニライトをいただきました。ありがとうございます。

その後はステップで遊んだのですが、あの店は客の管理がおかしいので、大勢で行くと必ずトラブルが起きます。誰が入って誰が出たか全く管理していないなんて、変な店ですねえ。

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

コメント一覧

  • つかはらさん(2007/03/21 00:50)
    部屋の広さはどのぐらいでした?
  • すずきさん(2007/03/21 22:51)
    特に情報なしでした。
    大阪だから見に行くわけにもいかないし…。
open/close この記事にコメントする



2007年3月19日

エクスプローラの謎

塚原氏がチャットで「エクスプローラでアイコンをドラッグするとキャプションも半透明になる物とそうでない物がある。」って話をしていたので、検証してみました。以下はその画像です。


アイコンのキャプションの処理が違います

実験してみたところ、ドラッグするアイコンが32bit色だとキャプションが消え、それ以外つまり24bit色以下であれば半透明に描画されるようです(※)。実害はなさそうですが、やはりバグでしょうか?

(※)環境はWindows XP SP2のエクスプローラです。

編集者:すずき(2007/03/20 00:58)

コメント一覧

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



2007年3月18日

追いコン

園芸クラブの追いコンに参加しました。園芸では院生も送ってくれるんです。最近全然参加していなかったせいか、後輩の顔がよく分からんかった…。冷蔵庫とか洗濯機のもらい手が出来ました。

田口邸の洗濯機をけなしすぎた、実際見たら結構綺麗だった。ごめんw

つくばさよなら飲み

追いコンではサワーを飲んで、今回はじょーセレクトのワインを飲んでいたため、意図しないチャンポンになってしまったらしく、かなり酔っぱらいました。

入籍したって話から飛んで、結婚の話が多かったですね。結婚と言えば、男性の結婚のピークは20代前半(つまり今くらい)と、30代にあるそうです。学生時代につきあっていた人と結婚するのが前者、社会人時代につきあい始めた人が後者になることが多いのだとか。

いつぞや、母に「今の日本で結婚して子供を作る意味がわからん。」って言ったら、「君は晩婚型だね。」って断言されましたよ。結婚の良さとやらを理解するにはまだ遠いようです。

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

コメント一覧

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



2007年3月17日

PASMOスタート

明日からPASMOがスタートします。Suicaと相互利用可能なのは素晴らしいですね。どこがどのカードなのかは以下の表参照。

事業者サービス
私鉄(関東) PASMO
JR東日本 Suica
JR西日本 ICOCA
私鉄(関西) PiTaPa
JR東海 TOICA

どのカードがどこで使えるのか、まとめてみました。間違っていたらコメントなどでお知らせ下さい。

私鉄(関東)JR東日本 JR西日本私鉄(関西) JR東海
PASMO    
Suica   
ICOCA   
PiTaPa    
TOICA     

どれも一長一短ですが、関東ならSuica、関西ならICOCAがあればとりあえず安心かと思います。東海ではTOICAを選択することになりますが、東に行くにも西に行くにも、互換性が無くて非常に不便です。

JR東海といえば、東京(JR東日本)と大阪(JR西日本)の客を使って、真ん中の東海道新幹線(JR東海)がボロ儲けするという変な構図ができています。東西と東海って、仲悪いのかな?

なんて冗談はさておき、東海と繋ぐと東 -> 西に直に行けてしまうと、乗車駅と降車駅の組み合わせが莫大になるからやりたくないのでしょう。
関東圏のみのPASMOでさえ、検証にかなり時間をかけましたし、今も問題起きないかどうか冷や冷やしている状態ですから。東から西なんて大規模な組み合わせに尻込みするのもわかる気がします。

もちろんユーザはそんなこと微塵も気にしません。早く繋げて欲しいね。

編集者:すずき(2007/03/17 18:28)

コメント一覧

  • つかはらさん(2007/03/17 22:24)
    そう言えば、近鉄の駅に4月1日からPiTaPaが使えるようになると書いてありました。
  • すずきさん(2007/03/19 20:37)
    ICカードの輪がこのまま全国に広がってくれると嬉しいですね。
    しかし実家(JR北海道)がそうなる様子はありませんね…。
open/close この記事にコメントする



2007年3月16日

rdtscの時代は終わった

ノートPCのCPUクロックがどんな風に変化しているか見るために、数秒おきにTSC(Time Stamp Counter) を読んで表示するプログラムを作ったのですが、CrystalCPUIDの出す値と比べてみたら、全然値が違います。

我が家のCore Soloに限定すると、負荷をかけて内部クロックの倍率がx10になればTSCから求めた値と一致しますが、倍率がx8とかx6に下がっている状態だと、TSCから求めたクロックがかなり高い値に計算されてしまいます。どうやらrdtscではダメなようです。

LinuxのカーネルやカーネルのコメントでリファーされているIntelの資料を見ると、MSRの値から計算できるらしいのですが、そんなのユーザプログラムからできないよ。

ちなみにCrystalCPUIDはどうしてるかというと、実行時にSysInfo.sysというドライバ(主にMSRを読むドライバでしょう)をロードして、\Device\CrystalSysInfoって名前のデバイスを作り、そいつを叩いて取得しているようです。やはりそれしかないのかなあ…。

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

コメント一覧

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



2007年3月15日

机を空けろ

23日までに研究室で使っている机を譲る準備をしなきゃいけません。今日はその準備の第一歩です。

ノートPC(NEC VersaPro)を初期化して、工場出荷時まで戻しました。残る期間は私物のノートPCで代用します。
Windowsのデスクトップは HDDを初期化して、まっさらな状態にしておきました。後はLinuxマシンがありますが、これはもう少し使うのでギリギリにやります。

VAIO再び

昨日の続きです。VAIO type GのポインティングデバイスAlpsのGlidePointは、そのままだとPS/2マウスとして認識されてしまいます。

もちろんそのままでも使えるのですが、ちょっとタッチパッドに触るとポインタが吹っ飛んでしまうために、特に文字を打っている時にイライラします。

というわけでGlidePointのドライバ探しを始めたのですが、AlpsもSONYも全然ドライバ公開していません。VAIOのリカバリDVDにはVista用のドライバがあるのみで、これも使えません。困りました。

色々探してみると、DELLのLatitude D400あたりのXP用ドライバが使えそうだったのでインストールして使っています。

SONYのPCなのに設定画面にhttp://www.dell.com/ と出るのはご愛敬ってことで。ドライバを公開しまくりなDELLに感謝感謝。

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

コメント一覧

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



2007年3月14日

XPへダウングレード

我が家のVAIO type GにXPを入れて、デュアルブート環境(参考ページ)にしてみました。元々はXPモデルだったから、親和性は高いだろうと思って始めたら、結構ダメダメです。

ダウングレードなんてメーカーサポート外も良いところなので、自己責任でよろしくお願いします。

問題点

ThinkPadなんかと違って、VAIOの輝度調節や音量調節はソフトウェアで処理しています。そのためクリーンインストールすると、Fn + F4などを押しても輝度も音量も変わりません。音量は標準のミキサーで変えるとしても、輝度だけはどうしようもありません。

また、リカバリDVDに入っているドライバは当然ながらVista用の物が多いので、これも何とかしなければなりません。

とりあえずドライバから

インストールした時点で「不明なデバイス」となっているのは、以下のデバイスです。

有線LAN
Marvell Yukon 88E8055 PCI-Eのドライバを Marvellのページから落とします。
無線LAN
Intel PRO/Wireless 3945ABGのドライバを Intelのページから落とします。
メモリスティックリーダ、SD/MMCリーダ
メモリスティック: DVD内のドライバ(\VAIO\Drivers\Memory_Stick)を指定して、ドライバの再インストールを行うと使えます。
SDカード: ドライバがアップデートされているので、SONYのページから落としましょう。
チップセット
DVD内のドライバ(\VAIO\Drivers\Chipset)が使えます。セットアップを実行しましょう。
グラフィック
Mobile Intel(R) 945GM Expressのドライバを Intelのページから落とします。
サウンド
Realtek High Definition Audioのドライバを Realtekのページから落とします。
モデム
DVD内にあるドライバ(\VAIO\Drivers\Modem)が使えますが、頻繁に使う予定がないなら入れない方が賢明です。(理由は後述)

VAIO特有の輝度、音量調整

ざっと見たところ、ハードウェアのイベントをVAIO Event Service(VESMgr.exe) というサービスで処理しているようです。XPにVista用のVAIO Event Serviceを無理矢理インストールしたら、エラー続出で動きません。しかし何回かインストール/アンインストールを繰り返していたら、輝度調節だけできるようになりました。

意味が分かりませんが、便利になったのでこのまま放置しておきます。たぶん使っているDLLの登録情報とかがおかしくなってしまったのでしょうね。面倒くさくなってきたのでこれ以上追求しません。

HDDプロテクションなど

HDDプロテクションを使う方法ですが、DVDのドライバ(\VAIO\Drivers\HDD Protection)をインストールします。

Sony Utilities DLL(\VAIO\Applications\Sony Utilities DLL)を入れて、Sony Shared DLL(\VAIO\Applications\Sony Shared Library)を入れます。再起動しろと言われるので、再起動します。

先述したEvent Service(\VAIO\Applications\VAIO Event Service)を入れます。輝度調整や音量調整ができたりできなかったりします。。。

HDD Protection(\VAIO\Applications\VAIO HDD Protection)と、Control Center(\VAIO\Applications\VAIO Control Center)も入れます。コントロールパネルのVAIOの設定、から色々いじってみてください。

よくわかりませんがHDDプロテクションが動いたり動かなかったりします。。。

モデムv.s. サスペンド

ちなみにモデムのドライバが入っていると、サスペンドしたときにブルースクリーンで死にます。画面が消えるのでブルースクリーンは拝めませんが…。電源を再投入したときに「深刻なエラーから復旧した」と言われ気づくと思います。

毎日ダイアルアップする人や、Winモデムを愛しているということでも無い限り、モデムより、サスペンド出来た方が便利だと思います。従ってモデムのドライバは削除しておくことをオススメします。

終わりに

バッテリーのユーティリティや、電源のユーティリティなどは動きませんでした。デバッガで追いかけたらVista用のAPIを使っていたため、どうしようもありませんでした。

つまりバッテリーいたわりモードなどの利用ができません。そう頻繁に変える物でもないと思うので、Vistaからやることにします。

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

コメント一覧

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



2007年3月13日

待ち人来ず

友人達の「来年度住むところは〜〜なんだってさ」という話を聞く度に、就職先からの連絡来まだかなあって不安になります。連絡予定は3月上旬〜中旬らしいんですけど、それってもう過ぎてないか?

やはり先走って不動産屋に5月まで借りますが何か?って聞くべきかなあ…。

編集者:すずき(2007/03/13 04:32)

コメント一覧

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



2007年3月12日

増資

先日購入したVAIO type Gはオンボードで1GBのメモリを積んでいるので、しばらくは余裕だろうと思っていたら、全然駄目でした。何もしていないのに500MB以上消費されています。Vistaがこれほどまでにメモリをドカ食いするとは。

早速追加のメモリに頼ることになりました。BuffaloのD2/N533-Gです。チップはヒュンダイでした。

またVAIO君の軽さを優先して1スピンドルモデルを選択したので、光学ドライブがありません。メモリを買うついでに、ポータブルDVDマルチドライブPanasonic LF-P967Cを買いました。USBのバスパワー駆動なのにかなりの速度が出ます。すげえ。

それにしても今月はクレジットカードの限度額(30万)が近い、近すぎるぜ…。

Vistaうぜー!

我が家のVAIO君はうまくないことにWindowsのインストールドライブにHDDの領域全て(100GB)が割り振られています。Vistaの腐ったフォルダ構成と相まって、激しく使いづらいのでntfsresizeでパーティションを縮めました。

一回失敗してデータが全部吹っ飛びましたが、あらかじめディスクをフルダンプしておいたので無傷で済みました。dd様々ですよ。
下記では既に30GBに縮めたパーティションを例に使っていますが、基本的には同じです。

(このコマンドでは、パーティション領域の使用率などが出ます)
# ntfsresize -i /dev/hda2
ntfsresize v1.13.2-WIP (libntfs 10:0:0)
Device name        : /dev/hda2
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 29999993344 bytes (30000 MB)
Current device size: 30006132736 bytes (30007 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 19569 MB (65.2%)
Collecting resizing constraints ...
You might resize at 19568902144 bytes or 19569 MB (freeing 10431 MB).
Please make a test run using both the -n and -s options before real resizing!


(実際には書き込みを行わないが、パーティションの縮小作業が行われる)
(縮小させる前にこのモードでチェックするとよい)
# ntfsresize -n -s25000M /dev/hda2
ntfsresize v1.13.2-WIP (libntfs 10:0:0)
Device name        : /dev/hda2
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 29999993344 bytes (30000 MB)
Current device size: 30006132736 bytes (30007 MB)
New volume size    : 24999993856 bytes (25000 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 19569 MB (65.2%)
Collecting resizing constraints ...
Needed relocations : 0 (0 MB)
Schedule chkdsk for NTFS consistency check at Windows boot time ...
Resetting $LogFile ... (this might take a while)
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
The read-only test run ended successfully.


(パーティションの縮小作業が行われる)
# ntfsresize -s25000M /dev/hda2
ntfsresize v1.13.2-WIP (libntfs 10:0:0)
Device name        : /dev/hda2
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 29999993344 bytes (30000 MB)
Current device size: 30006132736 bytes (30007 MB)
New volume size    : 24999993856 bytes (25000 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 19569 MB (65.2%)
Collecting resizing constraints ...
Needed relocations : 0 (0 MB)
WARNING: Every sanity check passed and only the dangerous operations left.
Make sure that important data has been backed up! Power outage or computer
crash may result major data loss!
Are you sure you want to proceed (y/[n])?
(上記の質問にyと答えて進める)


(既存の大きなパーティションを消して、縮めた大きさのパーティションを作る)
# fdisk /dev/hda
コマンド (mでヘルプ): p

Disk /dev/hda: 100.0 GB, 100030242816 bytes
255 heads, 63 sectors/track, 12161 cylinders
Units = シリンダ数of 16065 * 512 = 8225280 bytes

デバイスBoot      Start         End      Blocks   Id  System
/dev/hda1               1         608     4882432   27  不明
Partition 1 does not end on cylinder boundary.
/dev/hda2   *         608        4256    29302864    7  HPFS/NTFS


(hda1を削除する)
コマンド (mでヘルプ): d
領域番号 (1-4): 2


(基本領域2を作成する)
コマンド (mでヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 2


(パーティションのサイズを設定する)
最初 シリンダ (608-12161, default 608): (何も入力せずエンター)
Using default value 608
終点 シリンダ または +サイズ または +サイズMまたは +サイズK (608-12161, default 12161): +30005M


(変更を反映する)
コマンド (mでヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

パーティションの領域サイズが30005Mと中途半端なのは、30000Mにしたところ微妙にサイズが足りなくてデータがぶっ壊れたためです。何かコツがあるのかなあ?

再起動するとWindowsの起動時にchkdskが走りますが、特に何も起きないはずなので気にしないで下さい。

NFSが未だに良くわからない

ダンプデータをバックアップする際に smbだと遅すぎて使い物にならなかったので、nfs越しに送ったのですけど、nfsって未だに良くわかりません…。

クライアントはKnoppix 5.1.1で、サーバはDebian Sargeです。クライアント側で、

# /etc/init.d/portmap start

としてportmapデーモンを起動しなければならないのは知っていたのですが、うっかりサーバ側で、

# /etc/init.d/nfs-common start
# /etc/init.d/nfs-kernel-server start

とやったらnfs-kernel-server startで固まってしまいました。サーバ側でportmapを起動するのを忘れていたのが原因のようです。

# /etc/init.d/portmap start
# /etc/init.d/nfs-common start
# /etc/init.d/nfs-kernel-server start

こういう手順を取るべきだったんですね。くだらんことでつまづいてしまったのでここにメモ。

編集者:すずき(2007/03/13 15:26)

コメント一覧

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



2007年3月11日

Visual Studioはよくわからん

私はVisual Studio 2005 Academic Editionを使っているのですが、最近プロジェクトをリビルドしたときの動作がおかしいです。今まで正常に動いていたのに、いきなりMSVCP80D.DLLがありません、と言われて起動しなくなることがあります。

何回リビルドしても駄目なときは、プロジェクトを置いているディレクトリに生成される DebugやReleaseというディレクトリを丸ごと葬ると直るようです。実行ファイルが生成される方ではなく、オブジェクトファイルが生成される方のディレクトリです。

ビルド時のメッセージにも特に異常はないし…一体何なのかね??ネットワークドライブにファイルを置いているからいけないのでしょうか?

同じ症状が出ている人or解決策を知っている方はぜひ教えてください。

エクスポートのフォワーディング

WindowsのDLLではエクスポートをフォワーディングするという芸当ができるそうです。この機能を使うと、別のDLLがエクスポートしている関数を借りてきて、自分がエクスポートする関数にすることができます。

実際の使用例としては、kernel32.dllのHeapAllocというAPIが、ntdll.dllのRtlAllocateHeapと言うAPIにフォワーディングされています。フォワーディングされた関数はロード時にアドレスが解決されるようで、特にオーバヘッドはありません。

DEFファイルで、
HeapAlloc = ntdll.RtlAllocateHeap
のように [DLL名.関数名] という形で書くと、フォワーディングできるようです。


recvをフォワーディングさせた

Dependency Walkerで見ると、上図のrecvのようにちょっと違うアイコンで表示されます。

COFFって面白いことができるんですねえ。と、ここまで書いて、そんなの常識だろって、詳しい方々に突っ込まれる気がしてきた…。

編集者:すずき(2007/03/12 00:16)

コメント一覧

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



2007年3月10日

祝20歳(※)

誕生日です。園芸のみなさんからお祝いのメールをいただきました。ありがとうございます。

大下さんと天久保2丁目(エルトリートのある交差点を東側に行ったところ)のバリ料理屋JEPUNに食べに行きました。テーブル料なるものを取るレストランに初めて行ったような気がするよ。

食べたことのない味で、おいしいです。あと、微妙に辛かったですね。個人的には限界値ギリギリでした。

(※)皆様にもっとも理解しやすいように、時計でおなじみの12進数で表記いたしました。

編集者:すずき(2007/03/11 20:11)

コメント一覧

  • kawasakiさん(2007/03/11 22:45)
    おめでとうございます
  • ち。さん(2007/03/11 23:02)
    (一日送れだけど)おめでとー。
    じゃ、17日はヨロシク呑みましょー。
  • すずきさん(2007/03/11 23:39)
    ありがとうございますー。
open/close この記事にコメントする



2007年3月9日

将来の漠然とした不安

就職先から連絡が来ません。私は来年度どこに住めば良いのでしょうか。

しかも部署によりますが本社で研修、移住、事業所で研修というコースもあるらしく、4月に定住先が決まるのかどうか不安になってきました。

可能ならば、今住んでいるアパートを5月まで借りてしまって、ゆっくり引っ越しするという手が一番良いような気がしてきました。今年は2年契約の真ん中なのでできるはずですけど、一回不動産屋に退去するって言っちゃったのが心配。月曜日にでも不動産屋に聞いてみるかな。

こんなことになるなら、車を実家に置いてくる必要は全くなかったんですねえ。無駄に不便になっただけだったよ。うーん。

編集者:すずき(2007/03/10 04:22)

コメント一覧

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



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 この記事にコメントする



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

管理用メニュー

link 記事を新規作成

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

最近のコメント5件

  • link 21年3月13日
    すずきさん (03/05 15:13)
    「あー、このプログラムがまずいんですね。ご...」
  • link 21年3月13日
    emkさん (03/05 12:44)
    「キャストでvolatileを外してアクセ...」
  • link 24年1月24日
    すずきさん (02/19 18:37)
    「簡単にできる方法はPowerShellの...」
  • link 24年1月24日
    KKKさん (02/19 02:30)
    「追伸です。\nネットで調べたらマイクロソ...」
  • link 24年1月24日
    KKKさん (02/19 02:25)
    「私もエラーで困ってます\n手動での回復パ...」

最近の記事3件

  • link 24年3月25日
    すずき (03/26 03:20)
    「[Might and Magic Book One TASのその後] 目次: Might and Magicファミコン版以前(...」
  • link 21年10月4日
    すずき (03/26 03:14)
    「[Might and Magicファミコン版 - まとめリンク] 目次: Might and Magicファミコン版TASに挑...」
  • link 24年3月19日
    すずき (03/20 02:52)
    「[モジュラージャックの規格] 古くは電話線で、今だとEthernetで良く見かけるモジュラージャックというコネクタとレセプタク...」
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

最終更新: 03/26 03:20