Я новичок в C ++ и windows. Я пытаюсь распечатать все три списка модулей PEB_LDR_DATA (InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList).
После того, как я понял, что Microsoft показывает только структуру InMemoryOrderModule_DR_MD_L_B_100_5_5_5_5_5_5_5_DATA это более подробная структура.
Мне удалось получить доступ к InMemoryOrderModuleList и распечатать список модулей. Получение первого модуля в InMemoryOrderModuleList:
// ldrData data type is PPEB_LDR_DATA
PLIST_ENTRY inMemoryOrderModuleList = &ldrData->InMemoryOrderModuleList;
PLIST_ENTRY currentitem_InMemoryOrderModuleList = inMemoryOrderModuleList->Flink;
LDR_DATA_TABLE_ENTRY inMemoryOrderModuleListItem = *(PLDR_DATA_TABLE_ENTRY)currentitem_InMemoryOrderModuleList;
Но при попытке доступа:
// ldrData data type is PPEB_LDR_DATA
PLIST_ENTRY inLoadOrderModuleList = &ldrData->InLoadOrderModuleList;
я получаю сообщение об ошибке:
class _PEB_LDR_DATA has no member InLoadOrderModuleList
Я знаю, что это не так правильный путь, но также пытался получить доступ к списку следующим образом:
PLIST_ENTRY inLoadOrderModuleList = (PLIST_ENTRY)(ldrData+ 0x0010);
inLoadOrderModuleList Flink и Blink имеют значение null.
Как получить доступ к спискам?