получение базового адреса NDIS.SYS

Тема в разделе "WASM.NT.KERNEL", создана пользователем drem1lin, 18 авг 2010.

Статус темы:
Закрыта.
  1. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Вопрос детский, но я запутался=( и собственно сабж, как получить этот адрес?? в интернете нашел такую функцию..

    Код (Text):
    1. PVOID
    2. HMODULE GetModuleHandle(IN PSTR ModuleName)
    3. {
    4.     PVOID SystemModulesInformation;
    5.     PSYSTEM_MODULE_INFORMATION ModulesInformation;
    6.     ULONG ModulesCount;
    7.     ULONG i;
    8.     HMODULE ModuleHandle = NULL;
    9.  
    10.     // получаем информацию о загруженных модулях
    11.     if (!(SystemModulesInformation = GetSystemModulesInformation()))
    12.         return NULL;
    13.  
    14.     ModulesCount = *((PULONG)SystemModulesInformation);
    15.     ModulesInformation = (PSYSTEM_MODULE_INFORMATION)(
    16.         PTR_OFFSET(SystemModulesInformation, sizeof(ULONG)));
    17.  
    18.     // получение SystemModuleInformation
    19.  
    20.     // поиск модуля запрашиваемого модуля
    21.     for (i = 0; i < ModulesCount; i ++)
    22.     {
    23.         // сравниваем текущее имя с запрашиваемым
    24.         if (strstr(_strlwr(ModulesInformation[i].ImageName),_strlwr(ModuleName)))
    25.         {
    26.             ModuleHandle = (HMODULE)ModulesInformation[i].Base;
    27.             break;
    28.         }
    29.     }
    30.  
    31.     // освобождаем используемый буфер
    32.     ExFreePool(SystemModulesInformation);
    33.  
    34.     IFDEBUG(DbgPrint("GetModuleHandle: %s - 0x%x\n", ModuleName,
    35.         ModuleHandle));
    36.  
    37.     // возращаем адрес загрузки используемого модуля
    38.     return ModuleHandle;
    39. }
    40.  
    41. PSYSTEM_MODULE_INFORMATION
    42.     GetSystemModulesInformation(void)
    43. {
    44.     PVOID SystemModulesInformation = NULL;
    45.     ULONG SystemModulesInformationLength = 0;
    46.     ULONG ReturnLength;
    47.  
    48.     // увеличиваем буфер до тех пор, пока в него не поместится вся
    49.     // требуемая информация
    50.     do
    51.     {
    52.         // освобождаем буфер (если он был выделен)
    53.         if (SystemModulesInformation)  
    54.             ExFreePool(SystemModulesInformation);
    55.  
    56.         // увеличиваем буфер
    57.         SystemModulesInformationLength += 4096;
    58.         SystemModulesInformation = ExAllocatePool(NonPagedPool,
    59.             SystemModulesInformationLength);
    60.         if (!SystemModulesInformation)  
    61.             return NULL;
    62.     } while (!NT_SUCCESS(ZwQuerySystemInformation(SystemModuleInformation,
    63.         SystemModulesInformation, SystemModulesInformationLength,
    64.         &ReturnLength)));
    65.  
    66.     return (PSYSTEM_MODULE_INFORMATION)SystemModulesInformation;
    67. }
    но при компиляции говорит что ZwQuerySystemInformation undefined=(( я так понимаю ее из Ntddl.dll выдергивать надо??
     
  2. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Тему можно закрыть,я во всем разобрался
     
Статус темы:
Закрыта.