開いているファイルハンドルを一覧表示するプログラムを作成しています。私は実際にはあまりにも多くの結果を得ています。私のリストにはウイルススキャナのようなものが含まれています。私は、私が望むように見えないオブジェクトタイプ43の束を得ています。これらの値のリストはどこにありますか?SYSTEM_HANDLE_ENTRY.ObjectTypeの可能な値のリストはありますか?
0
A
答えて
2
NtQueryObject
には、ObjectTypesInformation
情報クラスを指定して電話をかけることができます。これにより、現在システムに登録されているすべてのオブジェクトタイプに関する情報が得られます。対応するオブジェクト型に関する情報を取得するには、返された配列のインデックスとしてSYSTEM_HANDLE_ENTRY.ObjectType
を使用します。または、NtQueryObject
とObjectTypeInformation
を使用して、指定されたオブジェクト(ハンドルで指定)に関する型情報を取得できます。
このコードは、すべての型オブジェクトに関する情報を取得する必要があります。
typedef enum _OBJECT_INFORMATION_CLASS {
ObjectBasicInformation,
ObjectNameInformation,
ObjectTypeInformation,
ObjectTypesInformation,
ObjectHandleFlagInformation,
ObjectSessionInformation,
} OBJECT_INFORMATION_CLASS;
typedef struct _OBJECT_TYPE_INFORMATION {
UNICODE_STRING TypeName;
ULONG TotalNumberOfObjects;
ULONG TotalNumberOfHandles;
ULONG TotalPagedPoolUsage;
ULONG TotalNonPagedPoolUsage;
ULONG TotalNamePoolUsage;
ULONG TotalHandleTableUsage;
ULONG HighWaterNumberOfObjects;
ULONG HighWaterNumberOfHandles;
ULONG HighWaterPagedPoolUsage;
ULONG HighWaterNonPagedPoolUsage;
ULONG HighWaterNamePoolUsage;
ULONG HighWaterHandleTableUsage;
ULONG InvalidAttributes;
GENERIC_MAPPING GenericMapping;
ULONG ValidAccessMask;
BOOLEAN SecurityRequired;
BOOLEAN MaintainHandleCount;
ULONG PoolType;
ULONG DefaultPagedPoolCharge;
ULONG DefaultNonPagedPoolCharge;
} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
typedef struct _OBJECT_TYPES_INFORMATION {
LONG NumberOfTypes;
// OBJECT_TYPE_INFORMATION TypeInformation [1];
} OBJECT_TYPES_INFORMATION, *POBJECT_TYPES_INFORMATION;
NTSTATUS QueryObjectTypesInfo(POBJECT_TYPES_INFORMATION *TypesInfo)
{
ULONG StartBufferLength = 28;
ULONG BufferLength = 0;
NTSTATUS status = 0xC0000001;
status = STATUS_SUCCESS;
*TypesInfo = (POBJECT_TYPES_INFORMATION)malloc(StartBufferLength);
if (*TypesInfo != NULL) {
status = NtQueryObject(NULL, ObjectTypesInformation, TypesInfo, StartBufferLength, &BufferLength);
if (status == STATUS_INFO_LENGTH_MISMATCH) {
*TypesInfo = NULL;
while (status == STATUS_INFO_LENGTH_MISMATCH) {
if (*TypesInfo != NULL)
free(*TypesInfo);
*TypesInfo = (POBJECT_TYPES_INFORMATION)malloc(BufferLength);
if (*TypesInfo != NULL)
status = NtQueryObject(NULL, ObjectTypesInformation, *TypesInfo, BufferLength, &BufferLength);
else status = STATUS_INSUFFICIENT_RESOURCES;
}
if (!NT_SUCCESS(status)) {
if (*TypesInfo != NULL) {
free(*TypesInfo);
*TypesInfo = NULL;
}
}
}
} else status = STATUS_INSUFFICIENT_RESOURCES;
return status;
}
上記のコメントに記載されているとおり、このようなものは全く文書化されていません。しかし、上記のコード(若干の変更を加えて、例えば、NtQueryObject
ルーチンのアドレスを取得し、いくつかのNTSTATUS
contantsを定義する必要があります)は、64ビット版Windows 8.1で動作します。完全なコードについては
(それはかなり古いとチェコにコメントしている)、私(チェコ)のウェブサイトからこのプロジェクトをダウンロードします。 https://jadro-windows.cz/download/ntqueryobject.zip
使用qo.exe --list-types
コマンドこれらは文書化されていない種類の情報
関連する問題
- 1. UILabelには選択可能な値がありますか?
- 2. dylib内の編集可能な/パッチ可能なリソースはありますか?
- 3. F#変更可能な値は変更可能ではありません
- 4. UIImagePickerControllerのイメージにCGImage値がない可能性はありますか?
- 5. jQuery UI(またはjQueryはありません)の並べ替え可能/ドラッグ可能なリスト項目
- 6. couchdb:IDリスト機能はありますか?
- 7. Windows用のThriftのダウンロード可能なディストリビューションはありますか?
- 8. ブール値はシリアライズ可能ではありませんか?
- 9. 可能、ホストインベントリのリストを定義する方法はありますか?
- 10. DataSnapshotの値がnullである可能性はありますか?
- 11. CSSフィルタのアニメーション可能な遷移プロパティはありますか?
- 12. ダウンロード可能なタイムゾーン行のデータベースはありますか?
- 13. 「.NET Framework Class Library」のダウンロード可能なドキュメントはありますか?
- 14. プラグイン可能なオンラインのPythonコンソールはありますか?
- 15. iframeのセッションが異なる可能性はありますか?
- 16. Elmの埋め込み可能なコードエディタはありますか?
- 17. 値は値のリストにありますか? (のOracle SQL)
- 18. MYSQLカンマ区切りのリスト。値の追加と削除は可能ですか?
- 19. wxPython関数の可能なすべての引数のリストはどこにありますか?
- 20. vars_promptの値を表示する可能性があります
- 21. あなたのUWPパッケージを辞退する可能性はありますか?
- 22. このコードにはメモリリークの可能性はありますか?
- 23. Selenium.Chrome利用可能なすべてのChromeOption引数のリストはどこにありますか? C#
- 24. 利用可能なすべてのXulrunner設定のリストはどこにありますか?
- 25. 特定のAndroid Widgetの可能なXML属性のリストはどこにありますか?
- 26. CComBSTR :: AssignBSTR()の可能な戻り値は何ですか?
- 27. クリック可能な領域はイメージビュー内にありますか?
- 28. NATURAL JOINで再生可能なビューはありますか?
- 29. Javaで利用可能なSMS Pduパーサーはありますか?
- 30. ruby実行可能なドキュメントはどこにありますか?
を取得しますMSFTによって。あなたのオプションは、型情報のためにNt/ZwQueryObject()を呼び出すか、列挙について他の人の前提を信用することです。 Process Hackerプロジェクトのソースコードを見てください。 –