windows の内部を知る

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

Upload: kaden-craft

Post on 02-Jan-2016

62 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

Windows の内部を知る

st.lain@ わんくま同盟

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

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

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

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

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

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

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

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

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

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

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

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

でもっっっ・・・・

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

エクスプローラ

タスクマネージャ

csrss.exe

Windows アーキテクチャの概要

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

システムサービスディスパッチャWindows, User, GDI

グラフィックスドライバ

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

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

ム・ドライバ カーネル

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

ハードウェア

Windows サブシステム

Winlogon.exe

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

セッションマネージャ

イベントログ

印刷スプーラ

WMI サービス

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

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

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

– 普通によく使うモード。デスクトップでアプリを起動したり。

– 変なアプリを起動しても早々に Windows がハングアップされることはありません ( 多分 )

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

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

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

タスクマネージャで確認

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

単位時間 ( 全体 )

空きCPU 使用時間

カーネル

ユーザ

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

CreateFile の例

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

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

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

SSDT 上の ZwCreateFile を呼び出し

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

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

MyApplication.exe

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

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

あたりが有名です

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

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

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

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

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

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

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

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

マイコンピュータ

プロパティ

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

起動と回復 の設定

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

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

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

し時の IRQL が高すぎます

第 1 引数 0x03A28400

第 2 引数 0x00000002

第 3 引数 0x00000000

第 4 引数 0x804DBA69

不正参照のアドレス

違反時の IRQL =DISPATCH_LEVEL

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

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

わんくま同盟 名古屋勉強会 #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

わんくま同盟 名古屋勉強会 #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…