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

.NET Fx:Load ハンドラの中で Let's Close!

調査のきっかけ 注意事項 調査環境 検証用プログラムの概要 Form.Close() の実装 ウィンドウハンドルが作成されるまでの流れ Load イベントが発生するまで Let's Close! まとめ 調査のきっかけ Form.Load イベントハンドラの中で、Form.Close メソッドを呼び…

.NET Fx:ShowDialog、Show の実験

定期的に実行されるタイマーイベントハンドラの中で、フォームやメッセージボックスを条件を変えて表示し、その時の挙動を確認した。 実験コードの雛形は以下のようなコード。 public class Form1 : Form { public Form1() { ... this.timer1.Tick += new Sy…

ウィンドウメッセージを覗く (Spy++)

Spy++は、「特定のウィンドウに対して、どのようなメッセージが、どのような順番でWindowsから送信されているか」を調査する際に大変便利なユーティリティ。 インストール Visual Studio を起動し、[ツール] - [ツールと機能を取得] をクリックする [個別の…

Windows 標準コマンドでパケットキャプチャ

pktmon Windows の標準コマンド(Windows 10 October 2018 Update 以降) pktmon でパケットキャプチャを取れる。pcapng への変換も別ツールを使わずできて便利。後述の netsh の場合は別途ツールのダウンロードが必要。 フィルタを設定する 追加 MACアドレ…

管理共有

以下の共有がデフォルトで作成される。 共有名 リソース ドライブ名 + "$" (例:C$, D$) C:\ など ADMIN$ %SystemRoot% (C:\WINDOWS) 共有は net share で確認できる。 管理共有を無効にする レジストリで以下の設定をし、PC を再起動する。 キー : HKEY_LOC…

UWP アプリってなんだ

UWPアプリ UWP アプリとは Universal Windows Platform で動くアプリのこと 基本的に Microsoft Store から入手する WinRT (Windows Runtime) API を利用する アプリは Microsoft.SysinternalsSuite_2022.11.1.0_x64__8wekyb3d8bbwe のような AppX パッケー…

WinDbg コマンド

随時更新予定です。 疑似レジスタ $ip 命令ポインタレジスタ。x86: eip x64: rip。. も現在の命令ポインタの値に評価される $ra 現在の関数からのリターンアドレス $retreg 関数戻り値。x86: eax x64: rax $csp 現在のスタックポインタ。x86: esp x64: rsp $…

WPR (Windows Performance Recorder)

CLI 版 wpr.exe は Windows 10 で OS 標準のツールとなった。 GUI 版 wprui.exe は Windows SDK をインストールする必要がある。SDK の機能の中でインストールするのは Windows Performance Toolkit だけでよい。 CLI 版の使い方 管理者権限のコマンドプロン…

タスクマネージャーの見方 (Memory 編)

こちらのマイクロソフトの記事がとても分かりやすかった。 物理メモリ、仮想メモリ、システム領域と分けて見る コミット済みというのは仮想メモリに関すること MS:タスク マネージャーの見方(Memory) 物理メモリ ハードウェア予約済み (Hardware Reserved…

Window Handle の作成で例外発生!

"Error Creating Window Handle" 例外に遭遇した場合、特定のアプリでの現象なのか、システム全体での現象なのかによって話が変わってくる。 以下では、特定のアプリでの現象という想定で話を進める。 まずは、タスクマネージャーの「詳細」画面で、「ハンド…

NTFS 代替ストリーム

代替ストリーム インターネットからダウンロードしたファイルや、メールの添付ファイルを NTFS 上に保存すると、ファイルに 代替ストリーム (Alternate Data Stream: ADS) が追加されます。ファイルのプロパティを開くと以下のようなセキュリティメッセージ…

Windows Kernel Debug のやり方

ローカルシステムのデバッグ LiveKd を利用すると、ローカルシステムのカーネルメモリのスナップショットをメモリダンプとして作成し、そのダンプファイルにデバッガ―をアタッチしてデバッグができる。 livekd -k "C:\Program Files (x86)\Windows Kits\10\D…

COMってなんだ

COM (Common Object Model) について調べたり実験したりして分かったことを書きます。 想像で書いている箇所もあり、間違いも多くあると思いますのでご注意ください。 調べれば調べるほどどこまでも奥深く沼だなーという気分になりました。 以下は、x64 PC …

MSIアンインストールの詳細ログ出力コマンド

詳細ログを出力してアンインストールする msiexec /x <ProductCode> /l*vx! log.txt インストールオプション /i <Product.msi> - インストール /x <Product.msi | ProductCode> - アンインストール ログオプション /l[*vx!] <LogFile>:詳細出力 v - 詳細出力 x - 詳細デバッグ情報 ! - 各行をログにフラッシ</logfile></product.msi></productcode>…

32/64-bit exe, dll

Part 1. 64 ビット Windows OS の基本知識 アプリケーションを 64/32 ビットどちらで起動するのかは PE ヘッダー情報に基づいて行われる。 .dll ファイルにも x86 版、x64 版、IA64 版の区別が存在する。 .dll ファイルに関しては、ひとつのプロセスの中に同…

ダンプファイルの取り方

WER (Windows Error Reporting) を利用する タスクマネージャーを利用する procdump を利用する Microsoft Store からインストールした場合の注意事項 ダンプの種類 様々な条件を指定してダンプを取る ハンドルされない例外でクラッシュした時にダンプを取る…