タグ

ブックマーク / egggarden.hatenadiary.org (11)

  • 削除されようとしたファイルをバックアップコピーするツール - やや温め納豆

    EXE、TMP、SYS、BAT ——— 何でも一緒だ。マルウェア解析では、どんなものからも目を離してはいけない。 ファイルが削除されようとしたタイミングで、そのファイルをバックアップコピーするフィルタドライバを書いてみました(ScavengerFolk.cab)。よければどうぞー。 以前に、デバイスドライバを自動的にバックアップコピーするツールを作りました。このツールを使って、マルウェアが生成したデバイスドライバファイルを効率的に収集することができるようになりました(たぶん!)。このツールはデバイスドライバ以外のファイルには関知していませんでしたが、実際にはデバイスドライバ以外にもマルウェアが自身の痕跡を消すためにファイルを削除してしまうケースは珍しくありません。 そこで今回は、ファイルが削除されようとしたタイミングで、そのファイルを自動的にバックアップコピーするツールを作成しました。これ

    削除されようとしたファイルをバックアップコピーするツール - やや温め納豆
  • 細かいWinデバッグテクニックのメモ - やや温め納豆

    (12/05)追記したら記事の方向性がわかりやすくなったのでタイトルも変えた(笑 UserDebuggerHotKey GUIアプリケーションに対してデバッガがアタッチしているとき、このレジストリキーで設定されたキーを押すと、ブレークが発生しデバッグすることができようになる。環境によってはできないこともあるみたい? .ocommand (WinDbg) WinDbg上でプロセスにアタッチする .ocommand メタコマンドを実行する 以後 OutputDebugString のプレフィックスに がついているものは 以降がWinDbgコマンドとして解釈される 残念ながら、カーネルランドでは利用できない。 指定したプロセスの起動を置き換える(MSDN) HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution

    細かいWinデバッグテクニックのメモ - やや温め納豆
  • 実行可能属性のページとDEP - やや温め納豆

    何をもってしてコードセクションとするか、を会社の昼休み中に調べていたら、なんだかいつの間にかDEPという深淵を覗き込んでいたので、そのままDEPについて調べてみた。 まずコードセクション(実行可能セクション)はIMAGE_SCN_MEM_EXECUTEが設定してあるセクションだと思って良い。IMAGE_SCN_CNT_CODEという似たようなフラグもあるが、これは少なくとも実行可能属性には影響しない。IMAGE_SCN_MEM_EXECUTEさえ設定されていればそのまま実行できる。 ただここでDEPが話に絡んでくる。DEPが有効でなければ、IMAGE_SCN_MEM_EXECUTEがあろうがなかろうが、アクセス可能なページは常に実行可能となる。そして何をもって「DEPが有効」とするかについてが、いくぶん深淵を覗き込むような話になる。 結論から言えば、64ビットプロセスは常にDEPが有効で、

    実行可能属性のページとDEP - やや温め納豆
  • なんとなくわかるO記法 - やや温め納豆

    私のように数字に弱い人でも、状況によってはスムーズにコミュニケーションをとるために理解しておかないといけないことがある。そういうときは、とりあえず、感覚だけでもこの辺を覚えておけば概ね困らない。 困らない、と思う(笑)。たぶん。 名称 記法 だいたいこんな感じ おおよその意味 (縦軸がコストの場合の例) 定数 O(1) 定数 対数 O(log n) 大丈夫そう 線形 O(n) だめかも、、、 二乗 やばい、これやばい! 指数 わろすっす すいません、正直この辺はいっぱいいっぱいです! 参考:ランダウの漸近記法

    なんとなくわかるO記法 - やや温め納豆
    mitsuki_engawa
    mitsuki_engawa 2009/10/21
    必然性のある使用例をあまりみないアレ。
  • IsBadXXXPtrを使うべきでないたった一つの理由 - やや温め納豆

    Windows Vista および Windows Server 2008 アプリケーション互換性解説書 以前のバージョンの Windows では、IsBadReadPtr および IsBadWritePtr 関数を使用してパラメータを検証していました。Windows Vista および Windows Server 2008 では、これらの関数は禁止されました。 なぜ? IsBadXXXPtr Function ... Important This function is obsolete and should not be used. Despite its name, it does not guarantee that the pointer is valid or that the memory pointed to is safe to use. For more inform

    IsBadXXXPtrを使うべきでないたった一つの理由 - やや温め納豆
  • Windows 7でのAppInit_DLLsの変更 - やや温め納豆

    AppInit_DLLsとはHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\以下にあるレジストリーキー群で、 AppInit_DLLs インフラストラクチャにより、アプリケーションは任意の DLL をすべてのユーザー モード プロセスに読み込むことができます。この機構の最も一般的な用途は API フックです。Windows 7 および Windows Server 2008 R2 のシステム上で動作しているコードの整合性および可視性を向上させるために、AppInit_DLLs インフラストラクチャがこれらのシステム用に変更されました。 AppInit DLLs in Windows 7 and Windows Server 2008 R2 とのこと。要点をまとめると以下の通り。 RequireS

    Windows 7でのAppInit_DLLsの変更 - やや温め納豆
  • WOW64サービステーブルをWinDbgでみる - やや温め納豆

    WOW64サービステーブルというのは、wow64.dllのなかに実装された関数テーブル。WOW64プロセスがシステムコールを発行したときに、x64システムコールへの変換を行うため透過的に呼び出される。前回までの調査でこいつのシンボル名はwow64!ServiceTablesであることがわかっているので、これを元にWinDbgでテーブルの構造をダンプしてみることにする。 結論としては、SERVICE_DESCRIPTOR_TABLE構造体とほぼ同じ型で、それが4個の配列(sdwhnt32, sdwhwin32, sdwhcon, sdwhbase)になっている。 まず調査するアドレスの構造がよくわからない場合、dcコマンドで16進数とASCII文字列にしてみる(いくつかのWinDbgコマンドは、アドレスを2つ渡すことで、始点と終点を指定できる)。このコマンドはASCIIが出るので、文字列や、

    WOW64サービステーブルをWinDbgでみる - やや温め納豆
  • WOW64で和訳の練習 - やや温め納豆

    WOW64 Implementation Details Best Practices for WOW64 Registry Reflection in Windows あたりを読んでめぼしい情報をメモ。さすがに全部和訳するのはだるい。 (追記)日語のドキュメントが公開されました! 64 ビット Windows プログラミング ガイド WOW64の概要 WOW64は以下のユーザーモードDLL群から成る。 wow64.dll コアエミュレーションインフラと、ntoskrnl.exeのエントリーポイント関数のためのサンクを提供する。 wow64win.dll win32k.sysのエントリーポイント関数のためのサンクを提供する。 wow64cpu.dll Itaniumプロセッサにおけるx86命令のエミュレーションを提供する。これはプロセッサのモード遷移命令を実行する。このDLLはx64プロ

    WOW64で和訳の練習 - やや温め納豆
  • Intel VT-xを使ってみた - やや温め納豆

    id:rootkitの人に会うのに手ぶらで行けるわけがない! というわけで(?)私もvmxcpuをリファクタリングして、Intel VTを使った仮想マシンモニタのコア部分を書いてみました。独自性のないデモとソース(動作環境:私のPC!)です。 嬉しいのでエントリーにしてますが、vmxcpuを理解している人にとっては見るべきものは無いです^^; これは仮想マシンモニタといっても、大多数の人(IT技術者)がイメージするようなOS on OSを実現する凄まじいもの(これは当に凄まじいのです)ではなくて、単にプロセッサモードをVMX operationモードに切り替えて、いくつかの命令を適切にトラップして、最後に正しく終了するだけのものです。 一応、マルチコアに対応していたり、アセンブラを極力排除したり、日語でコメントを書いたりしていますが、特段面白い要素はないです。Core i7のPCがあれ

    Intel VT-xを使ってみた - やや温め納豆
  • Intel VT-xを使ってみた(経過) - やや温め納豆

    Intel VT-xを利用して基礎的なVMMを書いてみた日記。アセンブラの話題でも、Windowsの話題でもないのでカテゴリ選択が非常に微妙(笑) 02/27 久しぶりにVT勉強してみる気になってきたから、vmxcpuを読んだり弄ったりしはじめている。 02/28 なんどやってもUNEXPECTED_KERNEL_MODE_TRAPで死んでしまう。おかしいと思い、配布されたままのvmxcpuを実行するがやはり同じ。Windows 7で実行させていたのが悪かったのかもしれない(そういえば、Vistaでは動かしていたが、7では動かしていなかった)。Vistaをインストールして検証してみることにする。 03/01 やはりVistaならvmxcpuは動く。原因は分からないが、今はそういうレベルではないので、動かすことが肝要。しかし、vmxcpuもデバッガでアタッチしていると、デバッガに例外が届かな

    Intel VT-xを使ってみた(経過) - やや温め納豆
  • Windows 7でのリファクタリング - やや温め納豆

    Microsoft Partoner Program - Windows 7にある「Windows 7 アプリケーション品質(互換性 信頼性 パフォーマンス)を高めるための開発者ガイド」には、Windows 7へ移行するにあたっての開発者向け変更点が記述されている。Windowsプラットフォームの開発者は必読である。 人によってこの文書の見所はいろいろかと思うが、個人的には「新しいバイナリ: リファクタリング」が面白い。kernel32.dllとadvapi32.dllの実装はkernelbase.dllに集約された。 新しいバイナリ: リファクタリング (中略) 具体的な影響や現象 新しい低レベルのバイナリへ機能面の再配置を行いました。たとえば、kernel32.dll および advapi32.dll の機能は、kernelbase.dll に集約されます。今後、既存のバイナリは、呼び

    Windows 7でのリファクタリング - やや温め納豆
  • 1