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

ドライバにオレオレ署名を埋め込む

x64 Windowsではデジタル署名されていないドライバはロードすることができないので、自分でビルドしたりその辺から拾ってきたドライバを読ませるときは適当な(オレオレの)署名をする必要がある。 んだけど、よくコマンドを忘れるのでドライバに署名を埋め…

堕落したWindowsプログラマのレベル -10

XPのタスクマネージャーで表示される「メモリ使用量」の意味を理解している。そのうえで、これを減らすためだけの技巧を凝らす。メモリ使用量が少なく見えれば、ユーザーの満足度は上がるさ! DLLインジェクション+APIフックが便利だ。フックする際は、IAT…

main が呼ばれる前に実行されるコードのコールスタック

プログラムのエントリーポイントは、main関数ではなく、PE内に定義されたアドレスであることはよく知られているが、それより以前にコード実行できるTLS Callbacksという仕組みはあまり知られていない。TLS CallbacksはPE内に適切にセクションとディレクトリ…

細かいWinデバッグテクニックのメモ

(12/05)追記したら記事の方向性がわかりやすくなったのでタイトルも変えた(笑 UserDebuggerHotKey GUIアプリケーションに対してデバッガがアタッチしているとき、このレジストリキーで設定されたキーを押すと、ブレークが発生しデバッグすることができよ…

WinDbgでコードパッチを簡単に検出する

!chkimgコマンドを使うと、コードパッチを簡単に検出することができる。以下の実行例では、ntカーネル(ntoskrnl.exe)に10byteの改ざんがあること、それらが5byteの改ざん2つ(そして関数フック)であることを確認している。 C:\>livekd ... 0: kd> .exepath …

SetThreadContextが変な動きをする

64bitプロセスがSetThreadContextをCONTEXT_CONTROLフラグなしで行うと、対象になったスレッドのCSがなぜか勝手に0x23になる場合がある。64bitプロセスのCSは本来0x33で、0x23はWOW64(32bitプロセス)のための値である。この異常な変更が行われると、そのス…

ハードウェアブレークポイントを使う

コードを実際に書いたことがなかったので書いてみた。デバッグレジスタは本来特権レベルでなければ操作できないが、Windowsの場合はSetThreadContext系APIを使って設定することができる。 ハードウェアブレークポイントはソフトウェアブレーク(int 3)ほど…

Visual Studioでasmファイルを使う

x64ではインラインアセンブラが使えないので生のMASMを書く必要がある。 asmファイルをプロジェクト内に追加する 追加したasmファイルのプロパティを開き、「カスタム ビルド ステップ」>「全般」の 「コマンドライン」に ml64 /c /Cx /W0 /Fo$(IntDir)\$(I…

実行可能属性のページとDEP

何をもってしてコードセクションとするか、を会社の昼休み中に調べていたら、なんだかいつの間にかDEPという深淵を覗き込んでいたので、そのままDEPについて調べてみた。まずコードセクション(実行可能セクション)はIMAGE_SCN_MEM_EXECUTEが設定してあるセ…

なんとなくわかるO記法

私のように数字に弱い人でも、状況によってはスムーズにコミュニケーションをとるために理解しておかないといけないことがある。そういうときは、とりあえず、感覚だけでもこの辺を覚えておけば概ね困らない。 困らない、と思う(笑)。たぶん。

真・猫の十戒

1.私の一生はだいたい15年くらいしかありませんが、たまに20年以上生きてしっぽが裂けます。 ほんのわずかな時間でも貴方が離れていると腹が立ちます。 私が家族になってやるから、そのことを覚悟しなさい。 2.あなたが私に望むことを理解するつもりはあり…

ここ最近のx86仮想化のHWアシスト性能

URL

VMwareが、MMUの仮想化をSW実装した場合と、ここ1年ぐらいのプロセッサのHW支援により実装した場合との性能比較レポートを出していました。これらのレポートから、最近のプロセッサの仮想化アシストは非常に高速であることが見て取れます。 Performance Eval…

swapgs命令

x64で追加された命令のひとつにswapgs(Swap GS Base Register)がある。この命令は、 現在の GS ベースレジスタ値を、MSR アドレス C0000102H(MSR_KERNELGSbase)に格納された値と交換する。 ――インテル® エクステンデッド・メモリ 64 テクノロジ・ソフトウ…

x86命令のバイトコードを理解する

ASM

ある命令をバイト表現でハンドアセンブルしたいとき、Intelのオペコード表の見方を理解していないと非常に苦労する。しかし、Intelのマニュアルはとっつきづらい*1ところがあり、理解するのに時間がかかるので、ヒントとしてまとめていく。ちなみに、小数点…

逆アセンブラライブラリ

Win32デバッグ(9)・・・逆アセンブラにまとめてありました。逆アセンブラは特にシステムコールを使うようなものではないので、カーネルモードのコードにも簡単に組み込めます。 個人的にはBSD相当のライセンスかつ軽量なHacker Disassembler Engineで十分だ…

仮想ディスクの最適化

URL

VMware Workstation 6.5 管理者マニュアルによると、ゲストデフラグ、VMwareとしてのデフラグ、ホストデフラグの順で行うのが良いらしい。内側からということ。メモ。 仮想ディスクを最適化するには、次の手順に従ってください。 1 ゲスト OS 内でディスク最…

墓場は暗く…

罠は時を刻みしもの この先には進まぬが得策。 さもなくば… 石の中にいる! ふと思い出したので、書いてみたくなっただけ。

ソフトウェアライセンスの基礎知識を読んだメモ

明らかに間違っている場合は指摘してくれるとうれしい。でも自分用めもだから、詳しくは調べてね。 「オープンソース」を名乗るための10の条件が定義されている コピーレフトとは、ソースコードをベースとした派生ソフトウェアのライセンスを、もとのソフト…

IsBadXXXPtrを使うべきでないたった一つの理由

Windows Vista および Windows Server 2008 アプリケーション互換性解説書 以前のバージョンの Windows では、IsBadReadPtr および IsBadWritePtr 関数を使用してパラメータを検証していました。Windows Vista および Windows Server 2008 では、これらの関…

ページをまたがる構造体とか

うん、わかるよ、カーネルもカーネル、コアな構造体だからページアウトとか関係ないのはわかるよ。けどさ、 version size(hex byte) size(byte) 2000 SP4 x86 0x7e0 2016 XP SP3 x86 0xb30 2864 Vista SP2 x86 0x2008 8200 7 x86 0x3620 13856 どうかしてる…

興味深いソースがあるサイト

Collaborative RCE Tool Library!というサイトを見つけた。 ここにあるツール、結構面白いものが多く、たとえばDream of every reverserは Engine used to perfrom stealth memory trace of a target. なツールでソースコードが付いている。ソースもPoCのよ…

ネタ

| | { ! _,, -ェェュ、 | ィ彡三ミヽ `ヽ ,ィハミミミミミミミミミヽ、| 彡'⌒ヾミヽ `ー /ililハilミilミliliミliliミ| ヾ、 /iiiiイ!ヾヾミ、ミニ=ー-ミ| _ `ー―' i!ハ:.:.\\_::::::::::::::/:.| このアドレスは 彡三ミミヽ i! ヽ:.:.:.:冫': : :::/,,∠| 彡' ヾ、 _ノ i!::: ̄二ー…

もうここ、いらないかなって

いろいろと変わったし。決して納豆嫌いの圧力があったとかじゃないよ^^; いや、よくわかんないけどさ、更新頻度は落ちるよ(すでに落ちてるけど)。 くだらない日常事だったらTwitterのほうが適当。

そろそろセキュリティ系ベンチャー企業について一言いっとくか

8月1日をもって転職しました。おめでとう、ありがとう。 これまでお世話になったみなさん、本当にありがとう! 新しくお世話になるみなさん、よろしくお願いします! 転職した理由について、少しだけ書く。

x86仮想化技術のメモ

カーネル/VM探検隊などに触発されたので、私もVM関連の情報をまとめていく。こうかと思ったが、ザーと書いているうちに飽きてきたので途中で終わってます(笑) ググればわかるような情報を書き出すのに時間を使うよりも、実際にソース読んでいったほうが面…

情報セキュリティスペシャリスト試験

受験番号 SC337-0787 の方は, 合格 です 午前I得点 85.00点 午前II得点 88.00点 午後I得点 70点 午後II得点 66点 おめでとう、ありがとう。 受験直後の「楽だな」という印象に反して辛勝といった感じ。

初心者のためのkgdbによるカーネルデバッグ環境構築めも

Windows 7 RC(x64)をホストとしてVMware Workstation 6.5.2 で2台のUbuntu 9.04(x64)を作成し、一台をデバッグする側、もう一台をデバッグされる側とする。

Windows 7でのAppInit_DLLsの変更

AppInit_DLLsとはHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\以下にあるレジストリーキー群で、 AppInit_DLLs インフラストラクチャにより、アプリケーションは任意の DLL をすべてのユーザー モード プロセスに読み込むこと…

Force of Will ?

オリコンが10〜40代の男女を対象に『夢や目標を達成させるために必要なもの』について調査を行ったところ、性別・世代別の全ての部門で【自分自身の強い信念・精神力】が1位となった。 目標達成に必要なもの、男性は「運」女性は「行動力」 カッコ良すぎわろ…

ええ、それに電源コンセントも重要でしょう?

はせがわさんの記事を見ていてふと思い出したわけですよ。 「LANケーブルを中継するように接続するだけでウイルス侵入・データ盗難の防止」とのことですが、昨今、イーサ経由ばかりではなく電源コンセントからの情報漏えいにも配慮しなければならないのだそ…