Вопрос по описанию struct _LIST_ENTRY InLoadOrderModuleList

Тема в разделе "WASM.BEGINNERS", создана пользователем novIce, 8 сен 2008.

  1. novIce

    novIce New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    45
    Адрес:
    Russia
    Сама структура struct _PEB_LDR_DATA есть в ntoskrnl.pdb, ntdll.pdb и т.д.

    Но где искать описание структур:
    struct _LIST_ENTRY InLoadOrderModuleList;
    struct _LIST_ENTRY InMemoryOrderModuleList;
    struct _LIST_ENTRY InInitializationOrderModuleList;

    google приводит к

    typedef struct _LDR_MODULE
    {
    LIST_ENTRY InLoadOrderModuleList;
    LIST_ENTRY InMemoryOrderModuleList;
    LIST_ENTRY InInitializationOrderModuleList;
    PVOID BaseAddress;
    PVOID EntryPoint;
    ULONG SizeOfImage;
    UNICODE_STRING FullDllName;
    UNICODE_STRING BaseDllName;
    ULONG Flags;
    SHORT LoadCount;
    SHORT TlsIndex;
    LIST_ENTRY HashTableEntry;
    ULONG TimeDateStamp;
    }

    Вопрос где (*.pdb или *.h) найти описания структур struct _LIST_ENTRY InLoadOrderModuleList и соседей.
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    winnt.h
    Код (Text):
    1. //
    2. //  Doubly linked list structure.  Can be used as either a list head, or
    3. //  as link words.
    4. //
    5.  
    6. typedef struct _LIST_ENTRY {
    7.    struct _LIST_ENTRY *Flink;
    8.    struct _LIST_ENTRY *Blink;
    9. } LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
     
  3. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    немного поискал и нашел вот что: _PEB_LDR_DATA содержит 3 вышеозначенных идентификатора InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList имеющих тип LIST_ENTRY, так вот Flink и Blink каждой указывает на структуру LDR_MODULE, а используются они для сортировки по 3 критериям соответственно "порядок загрузки" "порядок в памяти" "порядок инициализации"
     
  4. novIce

    novIce New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    45
    Адрес:
    Russia
    Описание структуры
    struct _LIST_ENTRY {
    /*<thisrel this+0x0>*/ /*|0x4|*/ struct _LIST_ENTRY* Flink;
    /*<thisrel this+0x4>*/ /*|0x4|*/ struct _LIST_ENTRY* Blink;
    };
    есть в том же ntoskrnl.pdb. Где *Flink и *Blink это (я так думаю) указатели на начало структур InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList

    Вопрос: Где найти описание этих структур. Откуда взято что они соответствуют структуре struct _LDR_MODULE?
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    novIce
    От отца к деду передается, через коменты в сорцах
     
  6. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    не, ненужно хранить конец структуры :), InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList и есть структуры LIST_ENTRY, их *Flink и *Blink хранят указатели на начало структур LDR_MODULE. И LDR_MODULE в свою очередь тоже имеет InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList, *Flink и *Blink которых хранит указатель на следующую и предыдущую LDR_MODULE и т.д., вроде так
     
  7. novIce

    novIce New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    45
    Адрес:
    Russia
    Похоже ясности нет :dntknw:

    Тогда может кто-нибудь знает откуда взялось описание структуры _LDR_MODULE:

    typedef struct _LDR_MODULE
    {
    LIST_ENTRY InLoadOrderModuleList;
    LIST_ENTRY InMemoryOrderModuleList;
    LIST_ENTRY InInitializationOrderModuleList;
    PVOID BaseAddress;
    PVOID EntryPoint;
    ULONG SizeOfImage;
    UNICODE_STRING FullDllName;
    UNICODE_STRING BaseDllName;
    ULONG Flags;
    SHORT LoadCount;
    SHORT TlsIndex;
    LIST_ENTRY HashTableEntry;
    ULONG TimeDateStamp;
    }
    Из какого *.pdb или *.h
     
  8. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    вычитал что структура LDR_MODULE недокументирована, и это ее ошибочное название, правильное LDR_DATA_TABLE_ENTRY. По самому вопросу скажу неясность у вас из за недостатка знаний о языке
     
  9. novIce

    novIce New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    45
    Адрес:
    Russia
    defaultplayer
    "По самому вопросу скажу неясность у вас из за недостатка знаний о языке"
    Согласен, подскажите где пробелы.
    А структура LDR_DATA_TABLE_ENTRY описана в ntdll.pdb
     
  10. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    defaultplayer
    интересный вопрос, но пока внятного и четкого, при этом исчерпываеющего ответа не увидел! ;)
     
  11. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    пробелы с типами данных и объвлении переменных

    вот хорошая литература
    http://www.opu.odessa.ua/lib/up/c/h12.htm#121
     
  12. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    defaultplayer
    Нее, тут у человека вопрос не в типах, а в том что как ты говоришь оригинал LDR_DATA_TABLE_ENTRY, а тут в символьной информация не какая-нить _LDR_DATA_TABLE_ENTRY* или что-то вроде этого, а _LIST_ENTRY* , да к тому же народ откуда-то взял LDR_MODULE. Вот и вопрос, раз ты говоришь что оригинальное название LDR_DATA_TABLE_ENTRY, то тоже это должен где-то увидеть, прочитать,понять,догадаться или еще что-то, что привело тебя к этому знанию! Вот что привело тебя к этому знанию ? Как ты понял что LDR_DATA_TABLE_ENTRY это оригинальное назвние ? )

    т.е. вопрос автора заключается в следующем смысле: "Как можно пить водку так, чтобы вместо LIST_ENTRY увидеть LDR_DATA_TABLE_ENTRY ?" ;)
     
  13. novIce

    novIce New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    45
    Адрес:
    Russia
    defaultplayer
    thx
     
  14. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    EvilsInterrupt

    если честно, я понял только вот этот ваш вопрос :)

    прочитал здесь на васме в одной из статей