質問

ネイティブのAPI Microsoft輸出の二つのバージョンのapi呼び出し、頭ZwとNt、例えば.ZwCreateThreadとNtCreateThread.

私にとっての違いは二つのバージョンの電話がか一つを使うべきZwやNt専用?私の理解Zw版ることで、呼び出し側に存在カーネルモードでは、Ntは来ない。

私の疑問について、具体的な意味Zw Ntの接頭語/略称?でもNtだろうとは、NT(新技術)Windowsの家族またはネイティブ(おそらくいない)?てZwなスタンド?????

役に立ちましたか?

解決

更新:

外からはLarry Osterman答えるべき 読みものもある:

以降、NtXxx異をチェックもの来からユーザーモードでは、この場 他のバッファを渡すNtXxs機能に居住ユーザーモードのアドレス空間は、カーネルモード.なお問い合わせいただいた場合には、 NtCreateFile には、ドライバーでポインタのカーネルモードのバッファを取得しま戻る STATUS_ACCESS_VIOLATION ってます。


使用Nt、Zwバージョンのネイティブシステムサービスのルーチン.

カーネルモードドライバを呼び出Zw版のネイティブシステムサービスを日常的にルーチンのパラメーターから信頼され、カーネルモードソースです。この場合、通常これを安全に利用できるパラメータな妥当性を検証します。ただし、パラメータがどちらからユーザーモードソースまたはカーネルモードソース、ドライバの代わりに電話をNt版のルーチンによって決めに基づき、歴史の呼び出し側スレッドからのパラメータ発祥のユーザモードまたはカーネルモードになります。

ネイティブシステムサービスのルーチンを付加条件のパラメータをいいます。場合にルーチンを受けるポインタをバッファが割り当てられた、カーネルモードドライバーの日常的なこのバッファが割り当てられたシステムメモリは、ユーザモードます。場合にはルーチンを受け取扱いにオープンした、ユーザーモードの申請は、通常の取扱いのユーザーモードの対応表ではなく、カーネルモード対応表に示す。

また、 Zw なにあります。見 どのようなZw Prefixを意味するのか。:

Windowsネイティブシステムサービスのルーチン名を持つことから始まる接頭辞Nt、Zw.Nt prefix"などの略称でWindows NT、Zw接頭辞がない意味があります。Zwたの選択したもの可能性を回避名紛争とその他のApiでは、一部を利用するのは避ける潜在的に有用な二文字の接頭辞ることが必要な場合があります。

他のヒント

っこしてコメントMerhdadの答えだった。---

Mehrdadの回答は、100%の精度です。でも若干の誤解を招きます。の"PreviousMode"第リンクの使用Nt、Zw..."第Mehrdad入でいます。言い換え:一次差のNt、Zw APIの呼び出しは、Zw話を通システムコールをディスパッチャが ドライバー, 御電話は直接の呼び出しAPIに含まれています。

時のドライバに電話をかける受ける.Zw APIの実効果を走るシステムコールをディスパッチャが設定しますKeGetPreviousMode()をKernelModeの代わりにUserModeろに、ユーザーモードのコードでは、Zwおよび形態は全く同じものです。時の様々なシステム呼び出しがExGetPreviousModeはKernelMode、バイパスのアクセスチェック(ドライバーできないとか付けたやつでも強い

場合にドライバを呼び出NT形式のApiできることに失敗しまでのアクセスの確認をしています。

具体例:場合にドライバーの電話NtCreateFile、NtCreateFile通SeAccessCheck()を参照された場合、アプリケーションと呼ばれる、ドライバのアクセス権を作成します。場合その同じドライバーと呼ばれZwCreateFile、NtCreateFile API呼び出しなコSeAccessCheckでExGetPreviousMode返KernelModeこのドライバとアクセスのファイルです。

このためドライバの著者の違いを理解するのかについての影響のためのセキュリティ---

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top