Код (Text): #ifndef LDR_MODULE typedef struct _LDR_MODULE { LIST_ENTRY InLoadOrderModuleList; //<-- InLoad points here LIST_ENTRY InMemoryOrderModuleList; //<-- PInMem points here LIST_ENTRY InInitializationOrderModuleList; //<-- InInitia points here PVOID BaseAddress; PVOID EntryPoint; ULONG SizeOfImage; UNICODE_STRING FullDllName; UNICODE_STRING BaseDllName; ULONG Flags; SHORT LoadCount; SHORT TlsIndex; LIST_ENTRY HashTableEntry; ULONG TimeDateStamp; } LDR_MODULE, *PLDR_MODULE; #endif #ifndef PEB_LDR_DATA typedef struct _PEB_LDR_DATA { ULONG Length; UCHAR Initialized; PVOID SsHandle; LIST_ENTRY InLoadOrderModuleList; LIST_ENTRY InMemoryOrderModuleList; LIST_ENTRY InInitializationOrderModuleList; PVOID EntryInProgress; } PEB_LDR_DATA, *PPEB_LDR_DATA; Почему эти три списка неодинаковые? LIST_ENTRY InLoadOrderModuleList; LIST_ENTRY InMemoryOrderModuleList; LIST_ENTRY InInitializationOrderModuleList; Всмысле не порядок интересует, а почему к примеру в InLoad есть некоторые длл, и самое главное есть сам ехе, а в InInitialization - нет?
Вас забанили в гугле? InLoadOrderModuleList - список модулей в порядке загрузки InMemoryOrderModuleList - список модулей в порядке расположения в памяти InInitializationOrderModuleList - список модулей в порядке инициализации. Ищите. dt ntdll!_ldr_data_table_entry (addr-@@(#FIELD_OFFSET(ntdll!_ldr_data_table_entry, InInitializationOrderLinks))
Нет, в гугле конечно же не забанили и что означает каждое поле я знаю. Просто вот как к примеру дллка может присутствовать в списке InLoadOrderModuleList, и в тоже время отсутствовать InInitializationOrderModuleList? Я ж написал Т.е. с порядком там все понятно. А вот с количеством неясно
Подниму тему. Тот же вопрос возник. На чистой Windows количество длл в разных списках разное. Почему?