0

私のコードは、文書化されていないwinnt関数NtQuerySystemInformation()を使用して、実行中のすべてのプロセスを取得しています。公式に文書化されていませんが、サードパーティのドキュメントがたくさんあります ( http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/System%20Information/NtQuerySystemInformation.htmlおよびhttp://www.exploit-monday .com/2013/06/undocumented-ntquerysysteminformation.htmlから始めます)。関数は動的にロードされます (とLoadLibrary()を使用GetProcAddress()) 。NtQuerySystemInformation()

PSYSTEM_PROCESS_INFORMATION pspi = NULL;
ULONG info_length = 0;
NTSTATUS result = NtQuerySystemInformation(SystemProcessInformation, NULL , 0, &info_length);
pspi = (PSYSTEM_PROCESS_INFORMATION ) HeapAlloc ( .. , info_length , ..);
result = NtQuerySystemInformation(SystemProcessInformation, pspi , info_length, &info_length);
if ( result != NT_SUCESS ) return ;
while (..)
{
  ...

  cout << pspi.ImageName.buffer ; 

  ...
}

この[疑似]コードは、呼び出しプロセスを除いて、マシン上で実行されているすべてのプロセスを出力します。何がこの動作を引き起こすのかわかりません。

4

0 に答える 0