本書は、『Windows Internals, 7th Edition, Part 1』(Published 5/5/2017 → Microsoft / Microsoft Press Store)の日本語訳です。Part 2 (原書)はまだ出ていません。Part 2 の情報はこちら → 『Windows Internals, Part2, 7th Edition』(Microsoft Press Store)
2刷では...
●既知のErrataの内容を吸収(お詫び:一部修正漏れがあったようです。こちらで公開されると思います。→ http://ec.nikkeibp.co.jp/nsp/teisei/P53570.shtml)
●誤植の訂正
●URL参照リンクの確認と差し替え(msdn.microsoft.com の docs.microsoft.com への移行、古いサポート情報の削除と探し方など)
●より適切な訳への修正
●脚注(訳注)にその後の Windows 10バージョンでの変更点(名称変更や仕様変更など)を一部反映
●索引の一部変更
●「本書下巻の第X章を/で・・・」を「本書下巻を/で ・・・」に変更
を行っています。最後の変更ですが、1刷では原書の「See Chapter X in Part 2 for ・・・」は「本書下巻の第X章を/で・・・」と訳していますが、Part 2 が大幅に遅れおり、さらに新たに 3 つの章が加わり、章立ても変わるようなのでそうすることにしました。
1刷(およびたぶん電子版も)の既知の問題(2刷で反映)については「書籍の正誤表&最新情報 (2017~)」で確認してください。URLの変更は、現時点では旧URLでもほとんどがリダイレクトされるはずです。
難解な内容を含みますが、多くの実習が掲載されており、実際に試してみて理解を深めることができます。興味を持っていただくため、本書に掲載されている全実習(147の実習)の目次を作りました。なお、すべての実習を当時の Windows バージョンの日本語版(主に 1607、一部 1709 の内容を含む)で確認していますが、Windows 10 はその後もいろいろ変化していますので、実習の結果が期待どおりにならないこともあることをご了承ください。
本書掲載の実習一覧
(※ ページは 1 刷のもの。たぶん 2 刷でも変わっていないはず)第1章 概念とツール
実習:タスクマネージャーを使用してプロセス情報を参照する ・・・・・・・・ 9
実習:プロセスツリーを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13
実習:Process Explorerを使用したプロセスの詳細情報の参照 ・・・・・・・ 17
実習:カーネルモード vs. ユーザーモード ・・・・・・・・・・・・・・・・・・・・・・・・ 28
実習:エクスポートされた関数を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・ 37
実習:カーネル構造体の型情報の表示 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 44
第2章 システムアーキテクチャ
実習:ライセンスポリシーによって有効化される機能を調査する ・・・・・ 61
実習:チェックビルドを実行しているかどうかを判断する ・・・・・・・・・・・ 63
実習:イメージのサブシステムの種類を参照する ・・・・・・・・・・・・・・・・・・・ 69
実習:システムサービスディスパッチャーコードを参照する ・・・・・・・・・ 78
実習:KPCRとKPRCBを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 85
実習:Ntoskrnl.exeおよびHALイメージの依存関係を参照する ・・・・・・・・ 88
実習:インストールされているデバイスドライバーを参照する ・・・・・・・ 94
実習:インストールされているサービスの一覧 ・・・・・・・・・・・・・・・・・・・・ 107
実習:サービスプロセス内部でサービスの詳細を参照する ・・・・・・・・・・ 108
第3章 プロセスとジョブ
実習:EPROCESS構造体のフォーマットを表示する ・・・・・・・・・・・・・・・・・・ 117
実習:カーネルデバッガーの!processコマンドを使用する ・・・・・・・・・・ 119
実習:プロセス環境ブロック(PEB)を調べる ・・・・・・・・・・・・・・・・・・・・・ 121
実習:CSR_PROCESS構造体を調べる ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 122
実習:Process Explorerで保護されたプロセスを参照する ・・・・・・・・・・ 129
実習:セキュアプロセスを識別する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 140
実習:プロセスのスタートアップのトレース ・・・・・・・・・・・・・・・・・・・・・・ 163
実習:イメージローダーの動きを見る ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 170
実習:DLL読み込み検索順序の観察 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 178
実習:ロードモジュールデータベースをダンプする ・・・・・・・・・・・・・・・・ 181
実習:ジョブオブジェクトを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 195
実習:ホストサイロのSRMサイロコンテキストをダンプする ・・・・・・・・・ 203
実習:サイロモニターとコンテキスト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 204
第4章 スレッド
実習:ETHREADおよびKTHREAD構造体を表示する ・・・・・・・・・・・・・・・・・・・・ 212
実習:カーネルデバッガーの!threadコマンドを使用する ・・・・・・・・・・・ 213
実習:tlistを使用してスレッド情報を参照する ・・・・・・・・・・・・・・・・・・・ 216
実習:スレッド環境ブロック(TEB)を調査する ・・・・・・・・・・・・・・・・・・・ 218
実習:カーネルデバッガーでスレッド環境ブロック(TEB)を調査
する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 221
実習:CSR_THREAD構造体を調査する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 223
実習:ユーザーモードデバッガーでスレッドスタックを参照する ・・・・ 227
実習:ローカルカーネルモードデバッガーでスレッドスタックを
参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 229
実習:Process Explorerを使用して、保護されたプロセスのスレ
ッドの情報を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 231
実習:プロセスとスレッドの優先度の調査と指定 ・・・・・・・・・・・・・・・・・・ 238
実習:スレッドスケジューリングの状態の変化 ・・・・・・・・・・・・・・・・・・・・ 243
実習:準備完了スレッドを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 249
実習:クロック間隔の頻度を調査する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 251
実習:クォンタムごとのクロックサイクル数を調査する ・・・・・・・・・・・・ 253
実習:クォンタム構成変更の効果 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 257
実習:フォアグラウンドの優先度ブースト(引き上げ)と引き下
げの様子を見る ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 264
実習:GUIスレッドにおける優先度ブーストの様子を見る ・・・・・・・・・・・ 266
実習:CPU不足のための優先度ブーストの様子を見る ・・・・・・・・・・・・・・・ 268
実習:MMCSSドライバーの優先度ブースト ・・・・・・・・・・・・・・・・・・・・・・・・・ 274
実習:アイドルスレッドとアイドルプロセスの構造体を表示する ・・・・ 282
実習:ディープフリーズの発生を参照する ・・・・・・・・・・・・・・・・・・・・・・・・ 288
実習:論理プロセッサの情報を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・ 292
実習:NUMA情報を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 294
実習:プロセスのアフィニティの参照と変更 ・・・・・・・・・・・・・・・・・・・・・・ 300
実習:CPUセットの参照と変更 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 304
実習:実際のDFSS ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 317
実習:CPUレート制限 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 320
実習:スレッドプールを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 327
第5章 メモリ管理
実習:システムメモリ情報を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 334
実習:予約済みページ vs. コミット済みページ ・・・・・・・・・・・・・・・・・・・ 341
実習:メモリマップファイルを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・ 347
実習:プロセスに対するDEP保護を参照する ・・・・・・・・・・・・・・・・・・・・・・・ 352
実習:最大プールサイズを調べる ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 359
実習:プールリークのトラブルシューティング ・・・・・・・・・・・・・・・・・・・・ 363
実習:システムのルックアサイドリストを参照する ・・・・・・・・・・・・・・・・ 365
実習:基本的なヒープ情報を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 372
実習:ページヒープの使用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 379
実習:アプリケーションが大きいアドレスに対応しているかどう
かをチェックする ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 386
実習:セッションを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 389
実習:セッション領域の使用状況を参照する ・・・・・・・・・・・・・・・・・・・・・・ 390
実習:システムPTEの情報を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 391
実習:システム仮想アドレスの使用状況を照会する(Windows 10
およびWindows Server 2016) ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 369
実習:システム仮想アドレスの使用状況を照会する(Windows 8/
8.1およびWindows Server 2012/2012 R2) ・・・・・・・・・・・・・・・・・・ 398
実習:システム仮想アドレス制限の設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 399
実習:ユーザー仮想アドレス領域の解析 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 402
実習:Ntdll.dllのロードアドレスを計算する ・・・・・・・・・・・・・・・・・・・・・ 405
実習:プロセスのASLR保護を確認する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 407
実習:アドレスを変換する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 416
実習:ページファイルを確認する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 430
実習:ページファイルの推奨サイズを表示する ・・・・・・・・・・・・・・・・・・・・ 430
実習:スワップファイルと仮想ページファイルの情報を参照する ・・・・ 433
実習:タスクマネージャーを使用してページファイルの使用量を
参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 437
実習:最大数のスレッドを作成する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 439
実習:カーネルスタックの使用量を参照する ・・・・・・・・・・・・・・・・・・・・・・ 441
実習:仮想アドレス記述子(VAD)を参照する ・・・・・・・・・・・・・・・・・・・・・ 444
実習:セクションオブジェクトを参照する ・・・・・・・・・・・・・・・・・・・・・・・・ 448
実習:コントロールエリアを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 451
実習:プリフェッチのファイルの読み書きを追跡する ・・・・・・・・・・・・・・ 459
実習:プロセスのワーキングセットサイズを参照する ・・・・・・・・・・・・・・ 463
実習:ワーキングセット vs. 仮想サイズ ・・・・・・・・・・・・・・・・・・・・・・・・・ 464
実習:ワーキングセットリストをデバッガーで参照する ・・・・・・・・・・・・ 465
実習:メモリリソース通知イベントを参照する ・・・・・・・・・・・・・・・・・・・・ 470
実習:PFNデータベースを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 473
実習:空きページリストおよびゼロページリスト ・・・・・・・・・・・・・・・・・・ 476
実習:変更ページリストおよびスタンバイページリスト ・・・・・・・・・・・・ 477
実習:優先度設定されたスタンバイページリストを参照する ・・・・・・・・ 484
実習:ページフレーム番号(PFN)エントリを参照する ・・・・・・・・・・・・・ 490
実習:Memory Compressionプロセス ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 504
実習:メモリパーティションの参照 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 508
実習:メモリ統合の効果を確認する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 516
第6章 I/Oシステム
実習:読み込まれたドライバーの一覧を参照する ・・・・・・・・・・・・・・・・・・ 552
実習:デバイスオブジェクトを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・ 559
実習:ドライバーとデバイスオブジェクトを表示する ・・・・・・・・・・・・・・ 561
実習:デバイスのハンドルを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 566
実習:ドライバーの登録済みファストI/Oルーチンを参照する ・・・・・・・ 570
実習:ドライバーのディスパッチルーチンを参照する ・・・・・・・・・・・・・・ 576
実習:スレッドの未処理のIRPを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・ 578
実習:デバイススタックを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 581
実習:IRPを調べる ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 582
実習:強制終了できないプロセスをデバッグする ・・・・・・・・・・・・・・・・・・ 603
実習:I/Oスループットの「最低」vs.「通常」 ・・・・・・・・・・・・・・・・・・・・ 615
実習:I/O優先度ブースト/バンプのパフォーマンス解析 ・・・・・・・・・・・・ 617
実習:デバイスツリーをダンプする ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 629
実習:デバイスマネージャーでデバイスノードの詳細情報を参照
する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 636
実習:ドライバーのINFファイルを参照する ・・・・・・・・・・・・・・・・・・・・・・・ 640
実習:カタログファイルを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 642
実習:KMDFおよびUMDF 2.xドライバーを表示する ・・・・・・・・・・・・・・・・・・ 649
実習:システムの電源状態 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 663
実習:デバイスの電源状態マッピングを参照する ・・・・・・・・・・・・・・・・・・ 668
実習:システムの電源機能とポリシーを参照する ・・・・・・・・・・・・・・・・・・ 668
実習:電源可用性(パワーアベイラビリティ)要求を表示する ・・・・・・ 675
第7章 セキュリティ
実習:HKLM\SAMとHKLM\SECURITYの中を参照する ・・・・・・・・・・・・・・・・・・・ 682
実習:ハンドルのアクセスマスクを参照する ・・・・・・・・・・・・・・・・・・・・・・ 698
実習:PsGetSidとProcess Explorerを使用してSIDを参照する ・・・・・・・ 701
実習:プロセスの整合性レベル(IL)を調べる ・・・・・・・・・・・・・・・・・・・・ 704
実習:オブジェクトの整合性レベル(IL)を調べる ・・・・・・・・・・・・・・・・ 706
実習:アクセストークンを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 711
実習:整合性レベル(IL)「低」でプログラムを開始する ・・・・・・・・・・ 718
実習:フィルターされた管理者トークンを確認する ・・・・・・・・・・・・・・・・ 722
実習:仮想サービスアカウントを使用する ・・・・・・・・・・・・・・・・・・・・・・・・ 724
実習:セキュリティ識別子を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 731
実習:トラストSIDを参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 736
実習:有効になっている特権を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・ 754
実習:「走査チェックのバイパス」特権 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 756
実習:オブジェクトアクセスの監査 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 761
実習:グローバル監査ポリシーを設定する ・・・・・・・・・・・・・・・・・・・・・・・・ 764
実習:UWPプロセスの情報を参照する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 772
実習:アプリコンテナートークンを参照する ・・・・・・・・・・・・・・・・・・・・・・ 774
実習:アプリコンテナートークンの属性を参照する ・・・・・・・・・・・・・・・・ 775
実習:アプリコンテナーのセキュリティ属性を参照する ・・・・・・・・・・・・ 779
実習:アプリコンテナーのアトムテーブルを参照する ・・・・・・・・・・・・・・ 781
実習:アプリコンテナーのケーパビリティを参照する ・・・・・・・・・・・・・・ 786
実習:トークンに保存されたハンドルを参照する ・・・・・・・・・・・・・・・・・・ 791
実習:ブローカー ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 795
実習:アクティブログオンセッションを一覧表示する ・・・・・・・・・・・・・・ 802
実習:ファイルの仮想化の振る舞い ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 815
実習:CFGの情報をダンプする ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 834
実習:CFGビットマップを確認する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 839
実習:ソフトウェアの制限のポリシーの実施状況を参照する ・・・・・・・・ 858
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。