2008-05-01から1ヶ月間の記事一覧

名古屋場所はじまるぐらいまでお休み

#2008/07/21追記 朝青龍いないとテンションあがらねぇ('A`)

DbgPrintとVistaのメモ

Vista以降、DbgPrintを用いた出力が表示されないとちょっと前に書いた。なんでですのんと思い調べてみたら、書いてありました。 Reading and Filtering Debugging Messages いくらか端折りながら書くと、まずXP以降にはDbgPrintExという関数が追加されており…

今日の大相撲

まあ千代大海ですからね 上手1本で大丈夫 ――勝昭 ということで琴欧洲優勝おめでとう。 ドルジはいろいろとちゃんとしる!

OllyDbg 2.0

URL

更新されてますです(最近まったく使ってないですけど)。 OllyDbg Last update: May 24, 2008

ssdt_dump更新 v1.20

System Service Descriptor Table (SSDT)とかの情報を出力します。よければどうぞー(ssdt_dump.cab / Readme)。主な更新は、オブジェクトのメソッドをダンプする機能の追加。 既知の問題・制限 05/10 プログラムを強制終了(Ctrl+Cやcmd.exeの終了など)…

オブジェクトのメソッドフック

以前に記事にしていたものを実装しました(ObHook.cab)。適当な方法でロードさせると、ProcessオブジェクトのOpenメソッドをフックして、デバッグ文字列を出力します。2000 SP4 / XP SP3 / Vista SP1 で動作確認していますが、コードの質的な意味で実機での…

Windows Vista Kernel Structures

URL

Windows Vista Kernel Structures。unionにすべき箇所が別個のフィールドとして記載されている。利用に際しては注意されたし。

Protectet Process #2

前回の続き。保護されたプロセスは、そのプロセスやスレッドハンドルの取得の際に、特定のアクセス権での取得を禁止する。その結果、たとえば以下のアクションの対象にならない。 リモートスレッドの作成 仮想メモリ空間へのアクセス アクティブな状態でのデ…

Tupleが要素のコンテナの整列

C++

tuple_comparison.hpp のインクルードが必要みたい。うむむ。こういうの調べるの大変*1。C++好きくないわぁ。 #include <vector> #include <algorithm> #include <iostream> #include <boost/tuple/tuple_io.hpp> #include <boost/tuple/tuple_comparison.hpp> // これがないとビルドできない typedef boost::tuple<long, double, float> Tpl; typedef std::vector<Tpl> TplSet;…</tpl></long,></boost/tuple/tuple_comparison.hpp></boost/tuple/tuple_io.hpp></iostream></algorithm></vector>

Protected Processes

なんか属性変更できそうな気がしたのでやってみた。Protected ProcessesについてはWindows Vista カーネルの内部 : 第 3 部とProtected Processes in Windows Vistaを参考のこと。 画像はVista SP1のデフォルト。ターゲットは audiodg.exe。保護されているの…

Windows Core Technology

Windows Core Technology ( ゜д゜) ・・・ (つд⊂)ゴシゴシ (;゜д゜) ・・・ (つд⊂)ゴシゴシゴシ _, ._ (;゜ Д゜) …!?職場にて。なんと濃厚なコンテンツ。しかし中心地が中国なのは、やっぱり寂しいですね。にほんがんばれ、超がんばれ!

sc wrapper(?)

ドライバをロードできるCoolな標準コマンドsc のラッパをjs(WSH)で書こうとしたが、WScript.run で起動したscの出力を、親コンソールの標準出力にリダイレクトさせる方法がわからない。 やむを得ずバッチで書き始めたら、バッチ引数として渡した binpath= な…

オブジェクトのメソッドもダンプしてみる

うぇーい。Vista SP1 でも問題なく実装・動作できました。もっとも各メソッドがどういう働きをして、どのタイミングで読み出されるのか調べる時間はとてもなさそうなので、例によって「フックできたぜうぇーい」で終わりそう。 ちなみにNULLでも新しい関数を…

ドライバをロード/アンロードできるCUIのツール

XP以降のWindowsには標準でscというコマンドがあって、これを使うとドライバをロードしたりアンロードしたりすることができる。以下に __empty.sys を登録・開始する例と、停止・登録解除する例を示す。まず起動まで。 >sc create __empty binpath= C:\Users…

リモートのサービスを管理する

優秀なサーバ管理者なら知っているはずだ。XP以降のWindowsには標準でscというコマンドがあって、これを使うとリモートのサービスをCUIで起動停止できる(GUIでやりたいのなら管理コンソール mmc.exe からどうぞ)。ただしscコマンドやmmcでは、起動したアカ…

DbgViewとVistaのメモ

VistaでDbgView v4.74を使用していると "Capture Kernel" がチェックされているにもかかわらず、DbgPrintの出力が表示できないことがある。どうも本来 "Capture Kernel" の下に表示されるべき "Enable Verbose Kernel Output" メニューが表示されないことが…

オブジェクトのメソッドフック

Windowsの世界の「オブジェクト」も、オブジェクト指向型プログラミングの特徴と同じように「メソッド」の概念を持つ。また、プロセスオブジェクトであれば Process.open や Process.close、Jobオブジェクトであれば Job.open や Job.close といった具合に、…

ldsys更新 v1.05

ドライバをロード/アンロードできるCUIのツールです。Windows再起動時にドライバを再開しないロードオプション -si / -sn を追加しました。よければどうぞー(ldsys.cab) v1.04→1.05 05/17 :-ls で全角文字が ? になってしまう問題を修正 -si オプション(…

システムコールのメモ

呼び出し関係 user ZwLoadDriver = NtLoadDriver ↓ kernel ZwLoadDriver → NtLoadDriver → some routines... → some routines...矢印はSYSENTERなどのコールゲート。この矢印部分をフックするのがSYSENTERのフック。 NtLoadDriverを差し替えてしまうのがSSD…

Windows Defenderとドライバ

Vistaではサービスを管理するレジストリ*1を変更すると↑画像のような警告が表示される。ここでユーザは操作として[許可]と[拒否]を選択することができる。[許可]を指定した場合の動作は、XPまでとまったく変わらない。 [拒否]指定した場合、Windows Defender…

成功の監査

会社のPCにて。 こういうサプライズは要りません。 そういえばWinAPIでイベントログに書くのってかなり面倒なんだよなぁ。使いたいとも思わないので書いたことないけど。

ヴィスタBSOD

最近、冬眠からのヴィスタの私のラップトップを再開した後、私は死のブルースクリーンに先行している幾分奇妙な待ち時間と挨拶された。 ダンプの分析は次をもたらした …… ――ヴィスタBSOD: THREAD_STUCK_IN_DEVICE_DRIVER (BugCheck ea) 詩的すぎる。なにいっ…

SymLoadModuleが制御を返さない問題

ssdt_dump のドキュメントに以下のように書いた。 ・symsrv.no 時に SymLoadModule でデッドロックする問題を修正 対症療法で済ませたものの、気持ち悪いので調査したところ、結論としてはデッドロックするわけではなく、HTTP通信のタイムアウト待ちになって…

今日は大相撲夏場所初日

強いドルジに期待。初日強いと優勝するのがドルジクオリティ。#追記 キセノンに負けちゃったよ! 今場所も千秋楽までもつれるのかな

NtLoadDriver

↑の件の対応として候補にあがったのがこの関数。実際のところ、Sysinternalsのツールは NtSetSystemInformation によるロードは行っていない。代わりに NtLoadDriver を使っている(ような気がする)。ところがこのAPIの使い方がまるでわからない。少なくと…

Vista SP1でのドライバロード

ldsys にて実装している NtSetSystemInformation(SystemLoadAndCallImage によるドライバロードが Vista SP1 で機能していないことに気づいた。2000 SP4 や XP SP2 で動いていたコードが STATUS_PRIVILEGE_NOT_HELD(0xC0000061) を返してしまう。このコード…

ssdt_dump更新 v1.10

System Service Descriptor Table (SSDT)の情報を出力します。よければどうぞー(ssdt_dump.cab / Readme)。主な更新は、不正終了する問題の修正、およびデバッグヘルプモジュールの同梱、シンボルパスに環境変数を使用可能、ドキュメントの強化、あたり…

WinDbg Version 6.9.3.113

公開されてます(Debugging Tools for Windows 32 ビット バージョンのインストール)。個人的に大きな更新は dt コマンドでワイルドカードが使えるようになっている点。あと Vista で Aero を使っているときのパフォーマンスが改善されているらしい。それ以…

Symbol Type Viewer

デバッグシンボルを視覚的に閲覧することのできるツール(rootkit.com)。なにがすばらしいかって、シンボルの情報をC言語のヘッダーファイルへ変換してくれる。あとよくわかんないけど、64bit Windowsに対応していたり、IDA Proのスクリプト(?)にも変換…

ssdt_dump

System Service Descriptor Table (SSDT)の情報を出力します。よければどうぞー(ssdt_dump.cab / Readme)。 画像のようにシンボル名を取得するには、WinDbg もしくは Visual Studio がインストールされている必要があります。あと、このツールでRootkit…