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

Tips

WBINVD FlushInstructionCache に相当するAPIがカーネルモードにはなさそうな雰囲気。一応 NtFlushInstructionCache があるにはあるのだけれど、公開されていない。ReactOS による NtFlushInstructionCache の実装を見てみると WBINVD という命令ひとつで実…

ldsys更新 v1.03

ドライバをロード/アンロードできるCUIのツールです。ドライバ一覧表示を実装しました。よければどうぞー(ldsys.cab) v1.02→1.03 01/27 :-ls オプションを追加 ドライバの開始に失敗したときサービスを削除するよう変更 requireAdministratorからhighestA…

AntiAccessChk v1.00

NTカーネルが実装するアクセスチェックを無効化します(AntiAccessChk.cab - Readme) ちなみに "青画面ってなんだぜ?" ってひとはお引取りください。あと「なぜか有効にならない……」ってときはどこかしらでエラーになってます。安全にエラー処理するように…

おぷぱっ!

MUGEN 凶悪キャラグランプリ part3 4:00から怒涛のおぷぱっ!

detoursが復元なしで元関数を呼び出す仕組み

以前、単純なJMP方式のフックとして紹介したやり方は、元関数を呼び出すために一時アンフックするという実装だった。 図解するとこう。 1.初期状態 2.ExitProcessフック実施後。関数の先頭5バイトがNewExitProcessへのJMPに改竄される。 3.ExitProcessが呼び…

英語の本とか

誰でもわかるデバイスドライバ講座 WDMの絵と実装を交えた説明資料。こういう会社に行くにはちょっとプログラミングを知るのが遅すぎた orz ドライバのヒント : すべてのドライバ作成者が知る必要のある事項 Writing kernel-mode drivers in C++: should you…

リネーム

Vistaのひまじん専用。

進捗とメモ

SeAccessCheckをトランポリンでフックするソースは、2000 SP4/XP SP2/Vista無印でバイナリ互換があったところまでは調子が良い。が、CPUが2つ以上あるとシパンされるという罠。そりゃあクリティカルセクション張ってないですから当然ですわ*1。でもそんなも…

SeAccessCheckの無効化リベンジ

APIフックメモまとめ #2を書いていて、JMP方式ほど単純な仕組みならカーネルモードでも実装できるのではないかと考え、ProxyHookクラスをちょっと書き換えた。そしたら、わりとあっさりできた。 // DriverEntry // フック p = new ProxyHook(SeAccessCheck, …

急進的ツンデレ左派

冷やし中華樹形図。これは、すばらしい。

APIフックメモのまとめ #2

#1の続き。 単純なJMP 関数の先頭5バイトを JMP NN NN NN NN という命令に書き換え、JMP先に代替関数を用意する方法。TRAMPOLINE(トランポリン)と呼ばれているらしい。最近知った。日本語では、過去に香り屋というサイトで紹介されていたが今はページが見…

Detoursのデバッグ情報が直せない

ステップ実行してるとでたらめな場所が表示される。DETOUR_BREAKマクロがあるとおかしくなるらしい。DETOUR_DEBUGを定義してリビルドすれば、DETOUR_TRACEマクロとともに有効になるのだが、デバッグシンボルが上手いこと作れていないようだ。DETOUR_DEBUGに…

APIフックメモのまとめ #1

いろいろ参考に、ごく基本的な機能を実装した(apihook.cab)。この実装から、不特定多数のプロセスに対してのAPIフックを行うための適性、という観点からメモのまとめ。不特定多数の、というのがポイントで、要するにできるだけ副作用が起こらないことを重…

ドライバをロード/アンロードできるCUIのツール

>>540です。書きましたです。まだ使い込んでないのでバグがあるかも*1です。よければどうぞー(ldsys.cab) usage: >ldsys.exe filename [-r] [-f] [-s{ b | s | o | d }] filename: ドライバファイルを指定します -r: 指定したドライバが既にインストールさ…

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

Excelがある環境下で動くVBScript。SetWindowLongAに渡す値を調整すれば[一覧]などにもできます。 Option Explicit Dim Excel Set Excel = CreateObject("Excel.Application") Dim hWnd hWnd = Excel.ExecuteExcel4Macro("CALL(""user32"",""FindWindowA"", …

GsDriverEntry

VisualStudioでドライバを書くとき、リンカオプションでエントリーポイントをGsDriverEntry@8と指定する必要がある*1。こいつは何ぞやと思っていたが、逆アセを見るとGsDriverEntryの中ではKeTickCountと__security_cookieを呼び出していた。KeTickCountを何…

メモリ最適化ツール

などというものが昔確かに流行っていた気がするが、Windowsを知っている者であれば、意味が無いどころか、むしろ(一時的に)重くなるということを理解している。2GBが珍しくない現在では尚のこと(もっとも当時の時代背景は良く判らなかったりする。本当に…

ユーザーヒープ

ReactOSのwin32k.sysのDriverEntryでは UserCreateHeapという関数を実装して GlobalUserHeap というハンドルを生成している。ユーザーヒープとは何ぞや。軽く検索してみてもめぼしい情報が無い。ユーザランドの話だろうか? まあReactOSの詳細実装の話になる…

デスクトップヒープ

なんとか取得できないものかと連休中四苦八苦したが、結局ダメだった。さすがにこれ以上まとまった時間を取れる機会はなさそうなので、諦めることにする。以下アプローチの概略。 win32k.sysがエクスポートしている関数を調査 めぼしいもの無し デバッグシン…

ReactOS CreateProcess

URL

CreateProcessInternalW NtCreateProcessEx PspCreateProcess

WinDbg コマンドメモ

WinDbgはカーネルデバッグができるので欠かせないのだが、なにぶん情報が少ない。特にヘルプがwebベースになっていないのでなかなか大変。とりあえず、使った分だけメモしておくけど、構文とかはヘルプファイルを見てくださいな。 #08/05/10追記 MSDNにあり…

CreateProcessの流れ

CreateProcess系関数呼び出しの流れをアスキーアートにしてみた。確認したのはXP SP2。ユーザーモードのプロセスがNtCreateProcessを呼び出したときの流れは推測。 +---------ntoskrnl.exe-------------------------------+ | PspCreateProcess | | | |+----…

デバッグ情報か何か in Vista

Sysinternalsのstringsを使い、system32の中をのぞいて見ると、なにやらソースコードへのフルパスが文字列として残っているバイナリが複数見つかる。そのバイナリを調べるとSP1(まだ本リリースではない)で更新されたもののようである。 c:\Program Files\S…

狂犬の復讐 続報1

届いたのでレトルトカレーに投入してみた。とりあえずタバスコ1滴程度。以降、そのときの独り言です。 くろっ!! くさぁ・・・ 辛ッ! これはアカン、これはアカンでっ!*1 内輪の新年会のネタにもっていこうかなぁ、とも思っていたのだけれど、これは、だ…

タイトル付きメッセージボックス

TaskDialog というAPIを使う。実際には、より柔軟な TaskDialogIndirect のほうが便利そう。私は殆どGUIプログラムを書かないので、これらのAPIのお世話になることはあまり無いのですが、このあたりのVista新機能はcodeseek 11回勉強会資料で綺麗にまとめら…

ごみばこのなかにいる!

気づいたらVC9のプロジェクトフォルダごと、ゴミ箱の中に移動していた。いつ、なぜ移動したのか知らないが、普通に使えていた。ただWindowsを再起動したらどうなっていたかは知らない。怖い怖い。

家計簿辞めた

約半年間Vistaで家計簿を付けていたが、デュアルブートのXPで起動し、Vista側のゴミファイルを削除していたら家計簿のデータが飛んだ。12月末のバックアップがあるのでたいした問題ではないのだが、そもそも、この家計簿、一度も省みられていない。SOX法の資…

スーパープレイ

帰省した先の知人経由で東方のリプレイデータを見る機会を得た。まず画質が凄い(あほか)。ゲームは一切やらず、もっぱらニコニコで見るばかりだったので、本来の画質を知らなかったわけだが、かするとエフェクトが出るんだね。動きも滑らかだし。で、実際…

gdi++ loader

帰省直前にgdi++20071227版をDLしていた(目的は忘れた)。添付のHTML読んでたらQAに以下の文面を発見。 Q. gdippin、HookInjection などでエラーになる。 A. manifest を除去してあるので、対応ソフト以外では使えません。以下の対策をすれば使用可能。 fre…

ドライバ隠蔽片手落ち

温納豆 - Rootkitな実装において、ドライバ列挙から自分自身を隠蔽する簡単なコード片を書いたが、どうもこれは十分でないようだ。Process ExplorerなどEnumDeviceDriversを利用した列挙に対しては有効に働くが、msinfo32.exeやDriverWalkerからはしっかり見…