問題タブ [nt-native-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows とネイティブ API のシステム コール?
最近、*NIX オペレーティング システムで多くのアセンブリ言語を使用しています。Windowsドメインについて疑問に思っていました。
Linux での呼び出し規則:
それでおしまい。これが、Linux でシステム コールを行う方法です。
Linux のすべてのシステム コールのリファレンス:
この参照を使用できる $SYS_Call_NUM & どのパラメーターについて: http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html
公式リファレンス: http://kernel.org/doc/man-pages/online/dir_section_2.html
Windows での呼び出し規則:
???
Windows のすべてのシステム コールのリファレンス:
???
非公式: http://www.metasploit.com/users/opcode/syscalls.htmlですが、呼び出し規約を知らない限り、アセンブリでこれらを使用するにはどうすればよいですか。
正式 : ???
- あなたが言うなら、彼らはそれを文書化していません。では、システム コールを知らずに Windows 用の libc を作成するにはどうすればよいでしょうか。Windows Assembly プログラミングはどのように行うのですか? 少なくともドライバーのプログラミングでは、これらを知る必要があります。右?
では、いわゆるネイティブ API はどうしたのでしょうか。Native API
& System calls for windows
both は同じものを指す別の用語ですか? 確認するために、2つの非公式ソースからこれらを比較しました
システム コール: http://www.metasploit.com/users/opcode/syscalls.html
ネイティブ API: http://undocumented.ntinternals.net/aindex.html
私の観察:
- すべてのシステム コールは文字で始まり
Nt
ますが、ネイティブ API は文字で始まらない多くの関数で構成されていNt
ます。 System Call of windows
のサブセットですNative API
。システム コールはネイティブ API の一部です。
誰でもこれを確認して説明できますか。
編集:
別の答えがありました。2回目の回答でした。とても気に入りましたが、回答者が削除した理由がわかりません。私は彼に彼の答えを再投稿するように頼みます。
c++ - ユーザー モードからの Windows ネイティブ API へのアクセス
Windows Native API に興味があります。私はネットを検索してきましたが、ユーザーモードからネイティブ API 関数を呼び出す例を見つけることができませんでした。これが何を伴うかについての基本的な理解があると思います。具体的には、プログラムで定数とネイティブ API 関数を定義し、GetProcAddress を使用して ntdll.dll で関数を見つけ、関数を呼び出す必要があります。
これは正しいですか、誰かが私を正しい方向に導くことができますか? サンプルコードは、まったく見つからないので、私の一日になります。
ここでこのコードに出くわしました(http://www.eggheadcafe.com/software/aspnet/31520494/native-application--ntc.aspx)が、カーネルモードで動作することを意図しているようです:
ユーザーモードで動作するように、このコードをどのように変更できますか? おそらくこの時点で推測されているように、私はc ++で作業しています。
前もって感謝します。
c++ - Windows NT Native API に関する最新の書籍や Web サイトはありますか?
NT には、"ネイティブ API" と呼ばれるほとんど文書化されていない API があります。この API には、共通のサブシステム (つまり、Windows API、OS/2 API、および POSIX (現在は通常 " Interix " と呼ばれます) サブシステム) が実装されています。
この API を文書化しようとする書籍や Web サイトがいくつかあります。
- これらの関数のいくつかは、Windows Driver Kitに記載されています。
- Undocumented Windows 2000 Secrets, A Programmers Cookbook, Sven V. Schreiber 著
- 文書化されていない NTernals
- Windows NT/2000 ネイティブ API リファレンス、Gary Nebbett 著
- NirSoft の Windows Vista カーネル構造
残念ながら、64 ビット バージョンの Windows に触れようとしている書籍や Web サイトは 1 つもありません (もちろん WDK は除きますが、WDK には制限があります...)。API 呼び出し自体は同じです。大きな問題は、構造定義自体に関係しています。つまり、ポインター値と DWORD は 32 ビット プラットフォームでは同じサイズですが、x64 プラットフォームでは異なります。したがって、DWORD の配列として定義されることが多い構造の「不明なパディング」ビットは、x64 ウィンドウでは正しくなく、結果は完全にゴミになります。
API呼び出しごとに手動で追加のパディングを追加することで、これらの種類のことを手動で回避してきましたが、これは本当にイライラしています.必要に応じて DWORD の代わりにポインターを使用して、1 つの構造定義で 32 ビットと 64 ビットの両方の Windows に対応できるようにします。
そのようなリソースは存在しますか?
windows - Windows の fs:[0x0] には何がありますか?
32 ビット Windows の TEB は にありfs:[0x0018]
ます。fs:0 と fs:0x18 の間の 24 バイトには何が含まれているのでしょうか? (はい、これは文書化されておらず、変更される可能性があることは知っていますが、知っておくと興味深いでしょう...)
windows - Windows ネイティブ API: Zw と Nt のプレフィックス付き API 呼び出しを使用するタイミングと理由は?
ネイティブ API では、Microsoft は各 API 呼び出しの 2 つのバージョンをエクスポートします。1 つは Zw で始まり、もう 1 つは Nt で始まります。ZwCreateThread と NtCreateThread。
私の質問は、呼び出しのこれら 2 つのバージョンの違いは何ですか?また、いつ、なぜ Zw または Nt を排他的に使用する必要があるのでしょうか? 私の理解では、Zw バージョンでは呼び出し元がカーネル モードに存在することが保証されますが、Nt ではそうではありません。
Zw および Nt 接頭辞/略語の特定の意味についても疑問に思っていますか? Nt はおそらく NT(New Technology) Windows ファミリまたは Native (おそらくそうではない) を指していると推測できますか? Zwは何かの略ですか?
winapi - SIGINTはNTネイティブAPIで何に変換されますか?
Windowsは、Ctrl-Cに応答して、コンソールアプリケーションでSIGINTをサポートしています。これは、Windowsにリモートスレッドから実行中のスレッドを中断し(プロセスも!)、シグナルハンドラーを呼び出す機能があることを意味します。
これはNTネイティブAPIレベルでどのように機能しますか?このスレッド中断APIは、ユーザースペースの他の目的に使用できますか?
winapi - 非同期 NtQueryDirectoryFile?
NtQueryDirectoryFileへの非同期呼び出しがどのように機能するかを理解できた人はいますか?
非同期呼び出しとは、FILE_SYNCHRONOUS_IO_ALERTまたは FILE_SYNCHRONOUS_IO_NONALERT で開かれていないNtQueryDirectoryFile
ディレクトリを呼び出すことを意味します。
私にとっては、通常のNtReadFileリクエストが通常のファイルに対して行うのとSTATUS_PENDING
同じように返されるようですが、ディレクトリでNtWaitForSingleObjectを使用しようとすると、正しく終了せず、まだすべてのデータを取得していません...なぜこれは起こりますか?
c++ - ユーザー モードから Windows Native API 関数を呼び出す方法はありますか?
C++ を使用して、ユーザー モードからネイティブ API 関数を呼び出したいと考えています。Windows API インターフェイスを完全に回避して、ユーザー モードからネイティブ API 関数を直接呼び出すことができるかどうか疑問に思っていました。
可能であれば、コード例は本当に役に立ちます。
windows-7 - ドライバーとユーザーモードの両方のコードが関係する可能性のあるWindows7のフリーズに関する情報を収集するにはどうすればよいですか?
アプリケーションでクラッシュが発生しています。つまり、Windows 7がクラッシュしていますが、デバイスドライバーやその他のカーネルスペースプロセスがシステム全体をクラッシュしたときに発生する従来の「死のブルースクリーン」クラッシュではありません。すべてのユーザースペースプロセスのロックアップ。
マシンの状態は次のとおりです。
(1)Windowsマウスの動きはまだ応答しており、Aeroコンポジションレイヤーはまだ機能しています(エクスプローラーの特定のマウスオーバー効果は引き続き機能します)が、win32プロセスは機能しておらず、GDIとユーザーセッションはフリーズしているようです。(2)Ctrl + Alt + Deleteは、タスクマネージャを起動しません。(3)クラッシュダンプはなく、死のブルースクリーンもありません。
クラッシュに関する詳細情報を収集する方法を知っている人はいますか?ドライバーレベルの問題があることは承知しており、デバイスドライバーレベルの人々が使用できる情報を収集したいと思います。ブルースクリーンオブデスを取得したら、メモリダンプ(DMP)ファイルを収集し、開発者に送信して支援を求めることができます。私が探しているのは、プロセスとシステムの状態を追跡する方法であり、おそらくカーネルデバッガーなどを接続します。私はカーネルデバッガーの仕事をしたことがないので、それを始める方法を探しています。
win7 / 32ビットVMでクラッシュを簡単に再現できますが、カーネルデバッグツールはまだインストールされていません。最初に疑問に思っているのは、価値のあるアプローチ(カーネルデバッグツール?)を選択したように思われる場合、カーネルモードの開発者が問題を特定するのに役立つ情報を収集するためにそれらのツールを使用する方法が本当にわかりません。 。
c++ - char配列をUnicodeに変換する
VisualC++でデバイスドライバーを開発しています。ドライバーで文字配列をUnicodeとワイド文字配列に変換する必要があります。
便利な機能へのポインタをいただければ幸いです。wcharをUnicodeに協調させる「RtlInitUnicodeString」を知っていますが、単純な文字配列の変換に助けが必要です。