+ Reply to Thread
Results 1 to 6 of 6

Thread: Флаг в TEB

  1. #1

    Default Флаг в TEB

    есть ли такой флажек? и где его найти. собственно интересует - как определить что в данный момент выполнять вызовы лоад либа нежелательно.

  2. #2

    Default Re: флажек в теб о том что тред в данный момент выполняет дллмейн

    Ну флажек вроде как бы и есть - WaitingOnLoaderLock, но он не используется. А так могу только предложить сравнивать ИД потока владельца критической секции ntdll!LdrpLoaderLock с ИД целевого потока.

  3. Пользователь сказал cпасибо:
    nosos (23-07-2015)
  4. #3

    Default Re: флажек в теб о том что тред в данный момент выполняет дллмейн

    а есть ли технологии поиска данной секции?..естествено без таскания с собой отладочной инфы.

  5. #4

    Default Re: флажек в теб о том что тред в данный момент выполняет дллмейн

    Поправочка: WaitingOnLoaderLock таки используется, но он выставляется если происходит реальное ожидание критической секции - RtlpWaitOnCriticalSection. Искать можно через какой-нибудь более-менее ОС-независимый паттерн функции, например, LdrpAcquireLoaderLock.

  6. Пользователь сказал cпасибо:
    nosos (23-07-2015)
  7. #5

    Default Re: флажек в теб о том что тред в данный момент выполняет дллмейн

    ..сталобыть дизасм и все такое прочее =( ..думал может по каким то косвенным признакам можно. эх надеялся что кто то такую работу уже проводил и есть статья.

  8. #6
    Mosc's Avatar

    Message Re: флажек в теб о том что тред в данный момент выполняет дллмейн

    В структуре PEB — struct _RTL_CRITICAL_SECTION* LoaderLock, в структуре LDR_DATA_TABLE_ENTRY — ULONG Flags (LDRP_LOAD_IN_PROGRESS, LDRP_UNLOAD_IN_PROGRESS). И ещё есть процедуры в ntdll.dll — LdrLockLoaderLock, LdrUnlockLoaderLock как раз для синхронизации загрузки в многопоточном процессе.

    ...кто то такую работу уже проводил и есть статья
    Угу, кто-то проводил и "статья" есть — сорцы (Windows 2000 Leaked Sources, Windows Research Kernel 2.1, ReactOS).

    N.B. LoadLibraryA вызывает LoadLibraryExA, LoadLibraryExA вызывает LoadLibraryExW, LoadLibraryW вызывает LoadLibraryExW, LoadLibraryExW вызывает LdrLoadDll, LdrLoadDll лочится на критической секции NtCurrentPeb()->LoaderLock, если другая нить выполняет код в DllMain (_DllMainCRTStartup, DLL entry point).
    Last edited by Mosc; 01-08-2015 at 12:40.

  9. Пользователь сказал cпасибо:
    nosos (02-08-2015)
+ Reply to Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:25
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org