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

フックされているか調査する

そんなアプリ(とドライバ)を書いてます。とりあえず今のところ実装している、実装しようと考えている機能は以下。 KeServiceDescriptorTableのフック検出 KeServiceDescriptorTableShadowのフック検出 /Deviceディレクトリから辿れる全デバイスオブジェク…

UNICODE_STRING to wchar_t

UNICODE_STRING は "might not be null terminated." だから lstrcpyW を使うとシパン、lstrcpynW を使うとシパンもしくはゴミを拾ってしまう。文字列部分を引っ張ってくるには、こんな感じにするといいかな。 UNICODE_STRING ustring; // ... wchar_t w[260…

オブジェクトマネージャの名前空間を列挙

WinObjのように、オブジェクトマネージャの階層構造を表示するコード片。ユーザモードで動かすことができる。 // ntifs.h などのDDKヘッダを使う #define _X86_ #include <ntifs.h> #include "k_structs.h" // 追加で宣言が必要な構造体とか bool f() { // RootDirect</ntifs.h>…

codepad

URL

ブラウザ上でソースを書き、コンパイルエラーと実行時の標準出力を得ることができるもの。コンパイルエラーやソースの色付き表示、URL変換なども行ってくれるので今後ソースを貼り付ける場合などにも使えそう。 C++でしか試していないが、標準ヘッダのみなら…

VMware Server 1.0.5

先週末にリリースされていた模様(VMware)。しかしVistaは対応していないし、当然Vistaにおける既知の問題も解決してない。今回の修正はいずれもセキュリティ修正。ちなみに既知の問題というのは 初回のVM起動時に5分ぐらいWindowsが操作できないほど重くな…

デバッグシンボル学習 SymbolServer

dbghelp.cpp / dbghelp_routines.h メモしていくよー。 dbghelp.dll を静的にリンクしてはいけない 必ず動的にロードすること。静的にリンクする場合、実行ファイルと同じディレクトリに dbghelp.dll と symsrv.dll を置かなければならない。より詳しくいう…

ドルジきたあああああああああああああああああああああああ!!

むしゃくしゃして書いたら

ちょっと助言をもらったので反映してみる。ありがとう、ありがとう。 // // GetCommandLineEx.c // #include <windows.h> #include <tchar.h> #include <winternl.h> #ifndef NT_ERROR #define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3) #endif // // 指定したプロセスのコマンドラ</winternl.h></tchar.h></windows.h>…

「ぼくらの」を観た

今のところ11話まで。むさぼるように観てます。美味しそうな鯵買ってきたのにそっちのけ。 歌いいよね ちょっと観てみようかな わりとよさそう? 2話から早くも陰鬱な展開キタ-(大好き) 各話のサブタイトルが怖い怖い怖い ダイチがかっこよすぎる #翌00:11 …

むしゃくしゃして書いた

おかげでコメントをGetCurrentDirectoryのものから修正し忘れたがいい加減もう眠い。会社じゃへまするし、もうぬるぽ。

NtQueryObject

NtQueryObject はハンドルと動作モードを与え、構造体ポインタで結果を受け取る典型的なNativeAPI。たとえば NtQuerySystemInformation(SystemHandleInformation, ... で取得したハンドルテーブルを順繰りに喰わせてやることで、システム全体のハンドルに関…

HINSTANCE_ERROR

偶然見つけた定数。winbase.h に次のとおり定義されている。 #define HINSTANCE_ERROR 32 HINSTANCE/エラー/32 といえば ShellExecute かな? と思い検索してみると意外にも LoadLibrary の戻り値と比較し、この値以下ならばエラーとするコードばかりが出て…

モーダルおよびTOPMOSTの解除

SetWindowLong/SetWindowPosあたりでさっくり作れるかと思ったら、モーダル/モードレスはウィンドウスタイルに依存しないで実現されているっぽい*1。しょうがないのでDialogBox系をフックしてしまおうと Vista(SP1) のコールスタックを取ってみた。 ↓はDialo…

資格

おらっしゃあぁぁ!!! ∩∧ ∧ ヽ( ゚Д゚) \⊂\ O-、 )〜 ∪というわけでVCPとったよ! これで名刺にVMのロゴを入れることができるようになるよ! VMの尖兵だね。あとWorkstationのライセンスももらえるんだ! ServerはサーバOS以外での動作をサポートしない…

VMWare Serial Line Gateway使うだけのメモ

すでにVMのシリアルポートデバッグ環境があり、それをもとに変更する方法のメモ。 VMWareGateway.exe に /t(/t /v で詳細モード)オプションを付けて起動する このときに netstat /a すると TCP567 で LISTENING していることが確認できる VM の [Use named…

簡単なドライバのロード

Rootkits: Subverting the Windows Kernelの読書レポート。Sysinternals 製ツールのようにサービスとして登録することなくドライバをロードするには、ntdll.dllがエクスポートする非公開関数 ZwSetSystemInformation を使う。この関数を使うと、レジストリキ…

WinDbgを再起動する

目的としてはVMwareの仮想シリアルポートでも書かれているように「WinDbgの再起動が面倒くさいよね、なんとかしたいね」というところ。再起動させるスクリプトでも書いてしまえば良さそうなのだけれど、例のごとくDLLで実装して、メッセージフックでシステム…

Binary2.0

という嗜好の合いそうなリングを見つけたので参加してみた。このリングで何か面白いブログを探そう。ちなみに同様にC++のものもあって、どーしよーかなーと思ったが、このブログにおけるC++の重要度はかなり低いのでやめておくことにした*1。 Binary2.0 プロ…

デスクトップを[詳細]表示にする #2

以前にVBScriptの形で紹介した、デスクトップアイコンの詳細表示機能をTClock2chに組み込んでみました(tclock-080304-analog.cab)。 対応状況 機能 2000 XP Vista 変更しない ○ ○ ○ リストビュー ○ ○ ○ 詳細ビュー アイコンが表示されなくなる ○ 背景色が…

デバッグシンボル学習 名前修飾

いつもお世話になっているデバッグシンボルを扱ってみたくなったので、いろいろ調べたり書いたりしたメモ。まず、sbs-w2k-1-windows-2000-debugging-support.pdf によるとシンボルの名前修飾は次の規則に従うらしい。 TABLE 1-4. Symbol Decoration Categori…

AntiAccessChk更新 v1.10

NTカーネルが実装するアクセスチェックを無効化します。基本的にはカーネル関数フックのサンプルとしての位置づけです(AntiAccessChk.cab - Readme) SeAccessCheckというntoskrnl.exe実装の関数をフックし、アクセス拒否された場合に強引にフルコントロー…