LDR_DATA_TABLE_ENTRY

Тема в разделе "WASM.NT.KERNEL", создана пользователем k3internal, 16 фев 2007.

  1. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Собсно вопрос.
    Что такое
    LIST_ENTRY MemoryOrder;
    и
    LIST_ENTRY InitializationOrder;

    Объясните плиз. С чем их есть ?

    Это в ядре
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Список модулей в порядке следования в памяти и в порядке инициализации соответственно.
     
  3. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Great
    да это ясно. но в этих полях стоят я так понял смещения, на что они показывают ???
     
  4. EP_X0FF

    EP_X0FF New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2006
    Сообщения:
    450
    на структуры или следующие LIST_ENTRY
     
  5. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    k3internal
    Не смещения, а указатели на LIST_ENTRY для следующего LDR_DATA_TABLE_ENTRY
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Это связанный список структур:

    Код (Text):
    1. typedef struct _LDR_DATA_TABLE_ENTRY {
    2.     LIST_ENTRY InLoadOrderLinks;
    3.     LIST_ENTRY InMemoryOrderLinks;
    4.     LIST_ENTRY InInitializationOrderLinks;
    5.     PVOID DllBase;
    6.     PVOID EntryPoint;
    7.     ULONG SizeOfImage;
    8.     UNICODE_STRING FullDllName;
    9.     UNICODE_STRING BaseDllName;
    10.     ULONG Flags;
    11.     USHORT LoadCount;
    12.     USHORT TlsIndex;
    13.     union {
    14.         LIST_ENTRY HashLinks;
    15.         struct {
    16.             PVOID SectionPointer;
    17.             ULONG CheckSum;
    18.         };
    19.     };
    20.     ULONG   TimeDateStamp;
    21. } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
    Вообще глянь https://forum.antichat.ru/thread28766.html. Правда я там писал про р3, но в р0 структура та же, насколько я помню.
     
  7. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Как из PROCESS_BASIC_INFORMATION добраться до LDR_DATA_TABLE_ENTRY ?

    PROCESS_BASIC_INFORMATION->PebBaseAddress->...........->LDR_DATA_TABLE_ENTRY
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Вроде нашёл
    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?
    Или это зависит от билда и т.п.?
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Что значит "в ядре"? Ты ядерные модули имеешь в виду или что? Для ядерных модулей эти списки невалидны, только InLoadOrderLinks.