ZwQuerySystemInformation 関数呼び出しを使用して、プログラムがシステム モード デバッガーで実行されているかどうかを判断しようとしています。
これまでのところ、ntdll.dll ライブラリをロードして ZwQuerySystemInformation のアドレスを取得する次のコードがあります。次に、返されたハンドルを適切な引数で呼び出して、SystemKernelDebuggerInformation 情報を取得する必要があります。
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <Winternl.h>
int _tmain(int argc, _TCHAR* argv[])
{
/* load the ntdll.dll */
HMODULE lib = LoadLibrary(_T("ntdll.dll"));
FARPROC fun = GetProcAddress(lib, "ZwQuerySystemInformation");
if(fun == NULL) {
printf("Error: could not find the function ZwQuerySystemInformation in library ntdll.dll.");
exit(-1);
}
printf("ZwQuerySystemInformation is located at 0x%08x in ntdll.dll.\n", (unsigned int)fun);
SYSTEM_INFORMATION_CLASS sic = SystemKernelDebuggerInformation;
SYSTEM_BASIC_INFORMATION sbi;
NTSTATUS WINAPI temp = NtQuerySystemInformation(sic, &sbi, sizeof(sbi), NULL);
/* wait */
getchar();
return 0;
}
その関数を呼び出して SystemKernelDebuggerInformation 情報を含むシステム情報を取得する方法を教えてください。それで十分だろう、あとは俺がやろう。
ありがとうございました