Структуры RTL_PROCESS_MODULE_INFORMATION, RTL_PROCESS_MODULES

[ ] для раздела Блоги
В свое время были восстановлены недокументированные микрософтовские структуры ядра Windows NT, описывающие список загруженных драйверов:
RTL_PROCESS_MODULE_INFORMATION
RTL_PROCESS_MODULES
возвращаемые ZwQuerySystemInformation с SystemInformationClass=SystemModuleInformation=11

Их определение можно найти например в справочнике по NativeAPI (SYSTEM_MODULE_INFORMATION), книге "UNDOCUMENTED WINDOWS 2000 SECRETS" от SVEN B. SCHREIBER (MODULE_INFO,MODULE_LIST) и хедере rtltypes.h проекта reactos http://www.reactos.org/generated/doxygen/df/d6b/rtltypes_8h-source.html

Однако эти исходники не совсем соответcтвуют реальным микрософтовским - они вполне рабочие на 32 битных системах, но нерабочие - на 64 битных.

В результате исследования возвращаемых на 64 битной WinXP x64 значений и изучения (частичных) исходников ядра Win 2000 более-менее правдоподобными следует признать следующие описания данных структур:



//
// Information Structures for RTL Debug Functions
//
typedef struct _RTL_PROCESS_MODULE_INFORMATION
{
PVOID Reserved1;
PVOID MappedBase; // Always NULL
PVOID ImageBase;
ULONG ImageSize;
ULONG Flags;
USHORT LoadOrderIndex; // 0..RTL_PROCESS_MODULES.NumberOfModules-1
USHORT InitOrderIndex; // 0 for drivers, =LoadOrderIndex for user mode DLLs (NTDLL.DLL)
USHORT LoadCount;
USHORT OffsetToFileName;
CHAR FullPathName[MAXIMUM_FILENAME_LENGTH];
} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;
typedef struct _RTL_PROCESS_MODULES
{
ULONG NumberOfModules;
RTL_PROCESS_MODULE_INFORMATION Modules[];
} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;


Подпишитесь на наш канал в Яндекс.Дзен или telegram-канал @overclockers_news - это удобные способы следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают