MXStat
MXStat
Введите текст для поиска
Расширенный поиск каналов
  • Вход на сайт
  • Каталог
    Каталог каналов Региональные подборки Поиск каналов
    Добавить канал
  • Рейтинги
    Рейтинг каналов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Max
Похек

23 Sep, 10:10

Открыть в Max Поделиться

Лоадер без секретов в main: как малварь прячет пейлоад в TLS Callbacks

Стандартный брейкпоинт на OEP не гарантирует перехват первой инструкции: системный загрузчик Windows вызывает функции из директории IMAGE_DIRECTORY_ENTRY_TLS задолго до передачи управления на AddressOfEntryPoint.

При старте процесса вызов ntdll!LdrpInitializeProcess инициирует ntdll!LdrpCallTlsInitializers. Загрузчик находит массив указателей через поле AddressOfCallBacks в структуре IMAGE_TLS_DIRECTORY и поочерёдно выполняет зарегистрированные коллбэки с причиной DLL_PROCESS_ATTACH.

В MSVC массив создаётся без явных API-вызовов через атрибут слияния секций #pragma section(".CRT$XLB", read). На этапе линковки адреса сортируются по алфавиту и упаковываются в .rdata с NULL-терминатором на конце.

На практике это даёт малвари окно для скрытого выполнения: коллбэк напрямую читает флаг BeingDebugged в структуре PEB или зануляет отладочные регистры Dr0–Dr7 через SetThreadContext. Если отладчик обнаружен, процесс тихо завершается через ExitProcess, так и не дойдя до main().

Статически наличие коллбэков проверяется через dumpbin /tls <binary> или парсинг секций в PE-bear. Чтобы поймать выполнение динамически, в x64dbg нужно заранее выставить флаг TLS Callbacks в меню Options -> Preferences -> Events.

blog.poxek

@poxek | @poxek_ai | MAX

173 3
Каталог
Каталог каналов Подборки каналов Поиск каналов Добавить канал
Рейтинги
Рейтинг каналов Max
Контакты
Написать в Max Написать в Telegram Написать на почту
Всякая всячина
Пользовательское соглашение Политика конфиденциальности
Наши каналы
MXStat в Telegram MXStat в Max
Наши боты
MXAuthBot MXAnalyticsBot
Made by TGStat