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

CRTを使わない

標準ライブラリなどのCRTを使わないコードを書くためTips #1 Windowsの各種DLLがエクスポートする関数群、すなわちWinAPIのみを使ったコードを書くことでバイナリサイズを劇的に抑えることができる。数KBにまとまることもざらである。 それとは逆にCRTを静的…

自重 最近かなり時間が少ないにも関わらず、その少ない残り時間をニコニコ動画があまりにもスポイルするので、自分のアカウント削除してやった。 日記帳 Twitterの存在を忘れていた。こういうくだらない日記ネタはTwitterのほうが適しているから、活用してい…

Detours移植

ディスアセンブラ部分のコードのカーネルモードへの移植を試みたところ、意外にも2・3時間程度でさっくり移植できてしまった。作業的にどのくらいさっくりかというと disasm.cpp のプリプロセッサ(include とか define)を調整して、プロジェクトに組み込む…

水道 現金書留送って、月曜日には水道課に受領確認依頼の電話を入れたので問題なく使用できました。ごめんね、おかあさん ひっしだったから。ごめんね。 夢想歌 ニコニコで初見。いいねえ。アニソンいいねえ。 にとりがめっちゃ光ってる 最近、仕事で京浜東…

Windows System Call Table on Vista(SP0)

Vista無印 win32k.sys のシステムコールインデックスです。ジェバンニが一晩でやってくれました。次のページの補完として使ってください。 Windows System Call Table NT系 ntoskrnl.exe のシステムコールインデックス Windows XP Build 2600 System Service…

はてなの文字数制限

6万数千文字までしか受け付けないらしい。新規エントリーにしようとしたら、障害情報と表示され正常に登録できなかった。が、おかしなことに、障害と表示されたにも関わらずエントリーは登録されていた。ばっさり切り捨てられた格好で。 既存のエントリーの…

DDKWizardを入れてみた

DDKWizardを導入するとVisualStudio上でドライバ関係のプロジェクトを扱えるようになる。Coolな点をいくつか。 VSの新規プロジェクトにドライバとネイティブアプリ*1が追加される。 VS上から「どのバージョンのDDKで」「どのターゲット環境向けか」を指定し…

GDI/USER系カーネル関数フック #2

前回の続報。時間が作れそうもないので、暫定版をあげます(sdt_shadow.cab)。次のような制約がありますが、参考になる部分があればどうぞー。 XP限定です(構造体定義がXPのものしかない) GUIとか「使う」ためのコードは入ってません 構造体定義は必要最…

停止します

暖かな陽気に誘われて、ふらふらとお買い物。帰宅し郵便受けを見ると、そこには一枚のはがき。中には…… あなたへの給水は、料金未納のため 平成20年2月21日 からその理由の継続する間、神奈川県県営上水道条例第50条3号の規定により停止します あなたへの給…

kernel-mode implementation of Win32 GetModuleHandle() and GetProcAddress().

Alter.Org.UA - Implementation of GetProcAddress and GetModuleHandle for Windows NT3.51/NT4/2000/XP/2003 kernel mode ntdll.dllがエクスポートしている関数アドレスをどうやって動的に取得するのですか? 私たちは関数の名前を知っているだけで何もで…

マクロとかカーネルモードAPIのメモ

CONTAINING_RECORD(address, type, field) リンクを辿るために使う。リンクリスト、欲しい型、リンクリストが指し示す欲しい型のメンバを渡す。こんな感じ。 ETHREAD* Thread = CONTAINING_RECORD(Process->ThreadListHead.Flink, ETHREAD, ThreadListEntry)…

Vistaの詳細の設定が失われる問題

が解決した。Vista フォルダの種類 設定を忘れる。あるいは勝手に変更する。 スラドいい仕事します。それにしてもVistaのエクスプローラは好きになれない。

メモリ2GB増設

メモリを買った。2GBで、4000円で、しかもとびっきり小さくて。 でも残念なことに、どう見てもUSBです。本当にありがとうございました。

Vistaフリーズ

PrintScreen キーを押すと、即座に、必ず、フリーズする。それはもうカチコチになる。Ctrl+Alt+Delete は当然として NumLock キーのREDさえ切り替わらない。再現性があるので調べてみたら、どうもbcdeditで{current}のデバッグを有効にしていることが原因だ…

Perlは

まあ、あとで(笑) いまwin32k.sysのフックができそうなのでそれどころじゃない。

GDI/USER系カーネル関数フック

ができた! とりあえず大まかな流れまで。 KeServiceDescriptorTableShadow を取得する。 これはOSバージョンごとにテーブルを使う。 winlogon.exe を探す 見つかったら PsCreateSystemThread でフックスレッドを作成する 見つからなかったら PsSetCreatePro…

PE

URL

Microsoft Portable Executable and Common Object File Format Specification Microsoftの資料。 EXEファイルの内部構造(PEヘッダ) 体系的な解説。解りやすい。 07年5月セキュリティコラム 悪性コード分析担当者が見たPE構造 IATに依存しないプログラム、…

マルウェア解析講習会

URL

Spring 2008: Malware Analysis and Antivirus Technologiesでその資料が読めます。今のところ3つしか公開されて無いけれども、順次追加されそうなので興味のある方はどうぞ。綺麗な図解で見やすいです。 ちなみに以前にこのブログで "トランポリン方式のフ…

Process Injection?

The Art of Unpacking(bh-usa-07-yason-WP.pdf)を読んでいたらProcess Injectionなるマルウェアの実装技法が紹介されていた。CREATE_SUSPENDなプロセスの初期化フェーズを書き換えたりすっ飛ばしたりするようだが、いまひとつイメージが湧かず、結局実装で…

Perlを勉強してみる

目的はWinDbgがdtコマンドで出力する定義情報をC言語スタイルに加工すること。コマンドはこんな感じで出力される。 > dt nt!_eprocess nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x06c ExitStatus : Int4B +0x070 LockEvent : _KEVENT +0x080 LockCount : Uint4…

SDT一覧

Metasploit Project なるサイトに Windows System Call Table (NT/2000/XP/2003/Vista) を発見。すばらしい。

GPL感染につき治療中

Rootkitな実装で紹介している技術は、定義をWindows driver examplesの ntifs.h に依存している。こいつはGPLなので、ここ最近はNYSLでのリリースに向けて依存部分を除去・修正しております。来月中旬ぐらいには、AntiAccessChkと同じGUI組み込みの形でリリ…

WDK更新

タイトル WDK - Windows Server 2008 RTM リリース日 2008/02/04 サイズ 633.78 MB バージョン 6001.18000.080118-1840 カテゴリ ビルド マイルストーン RTM 説明 WDK - Windows Server 2008 RTM 以下、通知メールからの抜粋。 A few highlights in this rel…

DllMainでCreateThread

と書いたら複数の指摘をもらった。しかし理解できなかったので聞き返したが反応が無い。ただの屑鉄のようだ。そのままスレが落ちてしまったので回答欲しさに引っ張ってみる。 以下その流れ。846が私です。

shared_ptr の排他制御を抑止する。

C++

BOOST_SP_DISABLE_THREADS マクロについて。私はパフォーマンスが問題になるソースを書いたことが無いし*1、これからも無いのだろうけど、同じようにマルチスレッドのプログラムも殆ど書かないので、活用の機会は少なくないという意味で、これは嬉しい発見。…

デバッグ情報を含めないドライバビルド

ドライバはなぜか Free Build 環境でビルドしてもデバッグ情報(リンカオプション /debug)が含まれる。そのためバイナリには pdb ファイルまでのフルパスが含まれることになるのだが、フルパスが残るのは個人的にあまり気分が良くない*1。そこで、Free Buil…

AntiAccessChk更新 v1.01

NTカーネルが実装するアクセスチェックを無効化します(AntiAccessChk.cab - Readme) 具体的には、SeAccessCheckというntoskrnl.exe実装の関数をフックし、アクセス拒否された場合に強引にフルコントロール許可をするようにします。判りやすい影響として Sy…