2008-01-01から1年間の記事一覧

年越し日記帳

しばらくアセンブルコードを眺めたりさまざまなcrackmeに手をつけたりしていたが、しばらくすると何か書きたくなる衝動に駆られるので、勢い任せに仮想メモリの隠蔽技法を実装してみた。その日記帳。 12/29 どうしても、なにかがうまくいかないと思ったら実…

Windowsダンプの極意

金額に比して内容がないような。と批判的に書く前に、自力でデッドロックのひとつも調査してから言ってやろうと、NtQueryObjectがデッドロックする問題をWinDbgで調査した。が、よくわからんかった^^; 著者にはぜひ、WinDbgのコマンドや出力の詳細について掘…

%wZ書式指定子はCRTで

UNICODE_STRING型のポインタを渡すことで構造体内部に持つ文字列を出力することができる。UNICODE_STRINGのバッファはNULL終端ではないため、正しく処理するにはこの%wZ書式指定子を使用すべきである。%wZ書式指定子はWin32のprintf系APIに渡すと、Windowsの…

NtOpen系のハンドルもCloseしなければならない

ドキュメントを参照する(たとえばNtOpenSymbolicLinkObject) ドキュメントに従って使用する ドキュメントに指示がないのでハンドルはCloseしない ここまでは正しい姿勢だ。 ただし追加で注意も必要。上記例は、明らかにハンドルリークする。Closeする方法…

アンチリバースエンジニアリング

URL

An Anti-Reverse Engineering Guide知らない方法も多くて面白い。仕掛けるほうも、避けるほうも良くやるわ┐(´ー`)┌ といった感じ。

名前付きカーネルオブジェクトの一覧を取得

任意のプロセスが使用している名前付きカーネルオブジェクトの一覧を取得したいのですが。 それ、Win32でできるよ! ということで書いてみた*1。よければどうぞー(named_kernel_object.cab)。 動作確認は 2008x64 のみだけど、適当に修正すれば大抵の環境…

for each 文

VC8からの拡張機能で生のC++においてもfor each文が使える。VC8まではコンテナに対してのみだったが、9からは配列に対しても可。知らなかった。 // in vc9 #include <iostream> template<typename T, unsigned long N> inline void for_each_print(T (&array)[N]) { for each (const T& n in array) </typename></iostream>…

情報セキュリティアドミニストレータ試験

受験番号 SUx の方は,合格です。 午前試験のスコアは,660 点です。 午後I試験のスコアは,645 点です。 午後II試験のスコアは,655 点です。 おめでとうございました。周りの合格した人もおめでとう。基本情報とか受けて、午前のほうが楽に感じたタイプの…

CreateRemoteThread

CreateRemoteThread 対象プロセスのアドレス空間にスレッドを作成し、その実行を開始する。 相手は死ぬ ごめん、言いたかっただけ。我慢できなかった。

最近

故あってLinux(CentOS 5.2)を使っているのだけど、これが非常に楽しい。vimのカスタマイズ具合とか感動。一応目的があってLinuxに乗り換えた*1はずなのに、Linux初心者なのでわからないことを調べ回っているだけですぐに時間が経ってしまう。今日も5ボタン…

MSDN サブスクリプションの比較

12/07 追記 ええと、すばらしいコメントが寄せられているので、OSライセンス等をアグレッシブに使用したい場合はコメント欄のURLを参照のこと。 以下、本文 MSDNを購読(年間登録)すると、契約期間中は複数バージョンのOSライセンス等を使用することができ…

8.9W型用のぞき見防止フィルム

ray-out製のものを買った。4980円なり。比較するだけの知識がないので製品の評価はしないが、特に不満なところもない。対象のPCは私用のみなので本来神経質になる必要はないが、それでも他人がのぞき見ることができるというのは気持ち悪い。ちなみに自宅周辺…

プロセッサ数の取得とアフィニティ

プロセッサ数の取得は、Vista SP1や2008より前はntoskrnl.exeのエクスポート済み変数KeNumberProcessorsで正しかったが、Vista SP1や2008からは非推奨となった。代わりにKeQueryActiveProcessorsを使うべきである。

Gain Exclusivityを実装してみる

Gain Exclusivityはカーネルモードにおいて、自身以外のプロセッサの動作を一時的にロックする処理。他のプロセッサがロックされている間に共有リソースを編集するコードを実行することで、書き換え中の不完全な状態でアクセスされたり、書き換え中に別の変…

あわせて読んでみた 15-25

ASM

引き続きWisdomSoftさんのC言語入門をアセンブルコードで見ていく。C言語のソース表示を隠しているので、もはやどのソースについて言及しているのか第三者にはわからないがキニシナイ。今回は配列とポインタ。ポインタはC言語の概念が理解できてれば、アセン…

知られざる事実

世間一般は今日は休日である。勤労感謝の日とかいうなにかの振り替えらしい。

あわせて読んでみた 1-14

ASM

WisdomSoftさんのC言語入門をアセンブルコードの視点で見ていく。恐らく備忘録ではないかと思われる。期待してはいけない。 ということで、とりあえず1〜14までやってみた。制御構文とプリミティブな変数操作の内容。次は配列・ポインタ・関数・構造体等の内…

Vistaの起動を最適化してみた

せっかくVista搭載の実機を買ったのだし、Windows Performance Analyzerを使って起動を最適化してみた。細かい手順は以前の記事のとおり。速くなったんじゃないかな、たぶん。以下の画像は最適化前後のディスク使用率。記録時間全体から見て特徴的なのは、14…

第1回ローレイヤー勉強会いってきた

Windowsカーネルハックというネタでしゃべってきたのでその資料をアップ(llbenkyo1_win.cab)。よく知っている人には「それはどうなのよ」というところがあると思うので、その辺は突っ込んでもらえるとうれしいです。以下にデモごとの主要な動作・コンセプ…

ユーザーモードからシステムコール番号調べられる

ジャン☆ と思ったので書いてみた(sdt_dump2.cab)。2000以降のx86/x64両方で動作する見込み。コマンドラインにシンボルを参照するパスを指定することができる。以下のように指定すればカレントディレクトリにシンボルをダウンロードしてくれる。コマンドラ…

イメージからのSDTリストア

ntoskrnl.exeをディスクから開き、PEヘッダを解析してプロセスメモリにマッピングした後、コードセクションを読み取りカーネルメモリと比較することでフックを検出する技法がある。これの発展系として、SDT RestoreではKeServiceDescriptorTableを比較し異常…

DllMainでCreateThreadは動作する

以前にDllMainでCreateThreadを呼び出すことはWindowsのマナーに反する、という指摘をもらったことについて、その理屈がわからんという趣旨の記事を書いた。今日知ったのだがBest Practices for Creating DLLsに拠れば、これは条件付きで正しく動作する。こ…

ねこ喫茶いってきた

URL

町田にあるねこのみせへ。有給とって、Advanced Windows持ってね。猫だらけで、まじおすすめ。池袋とか吉祥寺にもあるっぽいです。

BSOD Properties NT公開

ブルースクリーン(Blue Screen Of Death = BSOD)の色を変更するGUIツールです。よければどうぞー(BSOD_Properties_NT.cab / Readme)。

あわせて読みたい

ASM

IDA Pro 4.9 Freeware Versionを導入して、リリースビルドされた自作GUI(x86)アプリのアセンブラを眺めているが、なにもかも初めてなので面白い。たとえば、関数がインライン化されているのが判ったり、ラベルの多いswitchがcmp/jzの連続じゃなかったり、sta…

アセンブラめも(x64)

昨日の続き。今度はx64用にビルドしたものを追いかけてみる。スタックまわりがわからん。

WDK SP1 for Windows Server 2008/SP1

Here are few highlights in this release: New Setup Environment Updates/fixes to Headers Added Bluetooth 2.1 headers and samples Added support for Server 2008 to DifX Updated WDF 1.7 co-installers Updated Device Simulation Framework (DSF) U…

アセンブラめも

ASM

C言語とアセンブラの対応を理解するには最適化の為のアセンブラ入門がとってもわかりやすい。昼休みに読める。とりあえず頭を整理するためにちょっと書く。アセンブラがちょっとずつ読めるようになってきて楽しい。

DNSとかのキャッシュのメモ

Windowsのネットワーク関連のメモリキャッシュに関連して、いくつか気づいたところをひとまずメモ。やりたいことが一杯あって、このネタで掘り下げられそうも無いのが残念。 種類 >arp -a MACアドレスとIPアドレスの対応表 >route print ルーティングテーブ…

ノートPC(SX3WP06MA)購入

巷で話題の EeePC 901 との決定的な違いは、SX3WP06MA の Atom Z520 プロセッサではIntel VTをサポートする点。EeePCの Atom N270 はこの機能を持たない。故あって両方の端末に触ったので、CPUIDを取得したスクリーンショットをどうぞ。画像左側のVirtual Ma…