windows の内部を知る

14
わわわわわわ わわわわわわ #4 Windows わわわわわわ st.lain@ わわわわわわ

Upload: darcie

Post on 28-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

Windows の内部を知る. st.lain@ わんくま同盟. 自己紹介. ハンドル名は st.lain です 以下略 エセ名古屋人です 名古屋駅地下で迷子になります ふつ~の言語を触ってます VC++(MFC 中心 ), C#, JScript 等 一日に「ほげ」と何回打つか知りません. アジェンダ. 内部を知る必要があるの? Windows アーキテクチャの概要 ユーザーモードとカーネルモード などなど …. 適当に掻い摘んでいきます !. 内部を知る必要があるの?. 知る必要がないカモしれません Windows 使ってて普通は困ることないですよね. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

Windows の内部を知る

st.lain@ わんくま同盟

Page 2: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

自己紹介• ハンドル名は st.lain です

– 以下略• エセ名古屋人です

– 名古屋駅地下で迷子になります• ふつ~の言語を触ってます

– VC++(MFC 中心 ), C#, JScript 等• 一日に「ほげ」と何回打つか知りません

Page 3: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

アジェンダ1. 内部を知る必要があるの?2. Windows アーキテクチャの概要3. ユーザーモードとカーネルモード4. などなど…

適当に掻い摘んでいきます !

Page 4: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

内部を知る必要があるの?• 知る必要がないカモしれません

– Windows 使ってて普通は困ることないですよね

• こんな困ったころありませんか?– プロセス動かしてないのに、すっごぃ重いの– 何もしてないのにリブートかかっちゃった– 同上、青画面 (BSoD) が表示されちゃった

でもっっっ・・・・

Page 5: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

エクスプローラ

タスクマネージャ

csrss.exe

Windows アーキテクチャの概要

ユーザーモード

カーネルモード システムサービスディスパッチャWindows, User, GDI

グラフィックスドライバ

各種マネージャ ( I/O※ マネージャ )

デバイス・ドライバ , ファイル・システム・

ドライバ カーネル

HAL (ハードウェア抽象化レイヤ )

ハードウェア

Windowsサブシステム

Winlogon.exe

ユーザーアプリケーション

セッションマネージャ

イベントログ

印刷スプーラ

WMIサービス

システムプロセス サービス アプリケーション

Page 6: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

ユーザーモードとカーネルモード

• ユーザーモード– 普通によく使うモード。デスクトップでアプ

リを起動したり。– 変なアプリを起動しても早々に Windows が

ハングアップされることはありません ( 多分 )

• カーネルモード– ユーザーが意識しないところで使われている

モード。– ここで異常 ( 例えばメモリ違反 ) があると

Windows が落ちます

Page 7: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

タスクマネージャで確認

赤い部分がカーネル使用時間

単位時間 ( 全体 )

空きCPU使用時間

カーネル ユーザ

Page 8: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

CreateFile の例

ユーザーモード

カーネルモード

アプリケーション上で CreateFileを呼び出し

Windowsサブシステム上の NtCreateFileを呼び出し

SSDT上の ZwCreateFileを呼び出し

I/Oマネージャが IRP_MJ_CREATEを発行

各種ドライバが要求を処理

MyApplication.exe

Page 9: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

アプリケーションでの例 .1• Sysinternals の FileMon, RegMon あた

りが有名です

Page 10: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

アプリケーションでの例 .2• アンチウィルスソフトウェア

– OneCare など• 暗号化ドライブ等のソフトウェア

– Vista 搭載の BitLocker とか• 各種監視ソフト

– USB メモリを挿したりすると…

Page 11: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

何もしてないのにリブート ?• WindowsXP 以降では BSoD が表示され

ようとすると自動的にリブートがかかります

マイコンピュータ

プロパティ

システムの保護 (Vistaのみ )詳細設定

起動と回復 の設定

Page 12: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

自動再起動オプションを落とすと

STOP: 0x0000000Aエラー理由 - 関数呼び出

し時の IRQL が高すぎます

第 1 引数 0x03A28400

第 2 引数 0x00000002

第 3 引数 0x00000000

第 4 引数 0x804DBA69

不正参照のアドレス

違反時の IRQL =DISPATCH_LEVEL

メモリ操作 0= 読み取り時

違反を起こした命令アドレス

Page 13: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

よくある ?STOP エラーError Code

Message 内容

0x00000002

DEVICE_QUEUE_NOT_BUSY

デバイスの待ち行列がビジーであると予想されていたのにそうではなかったことを示しています

0x0000000A

IRQL_NOT_LESS_OR_EQUAL

ページ可能なメモリへのタッチ試行したプロセス割り込み要求レベル (IRQL)が高すぎることを示しています。通常、このエラーは不当なアドレスを使っているドライバによって引き起こされます。

0x0000000E

NO_USER_MODE_CONTEXT

中身のないユーザー モードを入力しようとしたことを示しています

0x00000012

TRAP_CAUSE_UNKNOWN

トラップの原因が不明であることを示しています

… …

引用元 http://park12.wakwak.com/~iktryc/diary/2005/stoperror.html

Page 14: Windows の内部を知る

わんくま同盟 名古屋勉強会 #4

参考文献• インサイド Windows 第 4 版

– Microsoft Press 出版 , David Solomon, Mark Russinovich 著

• Windows Vista カーネルの内部– http://technet.microsoft.com/ja-jp/magazine/cc162494.aspx

• STOP エラー一覧– http://park12.wakwak.com/~iktryc/diary/2005/stoperror.html

• etc…