首先需要获取该函数的地址,获取Native API地址的方法或直接调用的技术可参照 我的文章-《用户态应用程序调用 Native API 的方法》和《 用户态应用程序调用Native API的一种最简便的方法》。
下面即为示例代码:
DWORD dwTemp;
DWORD dwIndex;
PDWORD pdwBuffer;
DWORD dwNumBytes;
DWORD dwNumEntries;
PSYSTEM_MODULE_INFORMATION pDriverInfo;
ZwQuerySystemInformation (SystemModuleInformation, &dwTemp, 0, &dwNumBytes);
//
// Allocate buffer
//
PUCHAR pBuffer = new UCHAR [dwNumBytes];
pdwBuffer = (PDWORD)pBuffer;
if (pdwBuffer == NULL)
{
return false;
}
//
// Get driver list from ntdll
//
ZwQuerySystemInformation (SystemModuleInformation, pdwBuffer, dwNumBytes, &dwNumBytes);
dwNumEntries = pdwBuffer[0];
pDriverInfo = (PPROCESS_MODULE_INFORMATION)(pdwBuffer + 1);
for (dwIndex = 1; dwIndex <= dwNumEntries; dwIndex++)
{
//
// Dump module information here
//
......
pDriverInfo++;
}
delete [] pBuffer;