Собсно вопрос. Что такое LIST_ENTRY MemoryOrder; и LIST_ENTRY InitializationOrder; Объясните плиз. С чем их есть ? Это в ядре
Это связанный список структур: Код (Text): typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; LIST_ENTRY InMemoryOrderLinks; LIST_ENTRY InInitializationOrderLinks; PVOID DllBase; PVOID EntryPoint; ULONG SizeOfImage; UNICODE_STRING FullDllName; UNICODE_STRING BaseDllName; ULONG Flags; USHORT LoadCount; USHORT TlsIndex; union { LIST_ENTRY HashLinks; struct { PVOID SectionPointer; ULONG CheckSum; }; }; ULONG TimeDateStamp; } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; Вообще глянь https://forum.antichat.ru/thread28766.html. Правда я там писал про р3, но в р0 структура та же, насколько я помню.
Как из PROCESS_BASIC_INFORMATION добраться до LDR_DATA_TABLE_ENTRY ? PROCESS_BASIC_INFORMATION->PebBaseAddress->...........->LDR_DATA_TABLE_ENTRY
Вроде нашёл PebBaseAddress+0x0C->PEB_LDR_DATA PEB_LDR_DATA+0x0C->LIST_ENTRY LIST_ENTRY+0x04->LDR_DATA_TABLE_ENTRY Единственно непонятно, нашёл такую оговорку: После LIST_ENTRY.BLink может находиться все что угодно Всегда ли после BLink идет LDR_DATA_TABLE_ENTRY? Или это зависит от билда и т.п.?
Что значит "в ядре"? Ты ядерные модули имеешь в виду или что? Для ядерных модулей эти списки невалидны, только InLoadOrderLinks.