
Комментарии 14
Статья огонь, все показано на примере, и проблем с воспроизведением ни каких не будет.
Странно, что VirtualProtect с PAGE_EXECUTE_READWRITE не детектиться. По-моему это первое, что должно детектиться.
А кто ещё может добавлять флаг EXECUTE кроме малварей? Есть такие приложения?
Спасибо за вопрос!
VirtualProtect с PAGE_EXECUTE_READWRITE действительно детектится многими EDR, но не сигнатурно, а на поведенческом уровне.
Легитимные приложения - JIT-компиляторы (Chrome V8, .NET JIT, Java JIT, PowerShell JIT), установщики (NSIS, InnoSetup), драйверы, обфускаторы легитимного ПО и системные механизмы (например, ntdll!RtlMoveMemory с последующим исполнением). EDR не может заблокировать все вызовы VirtualProtect с EXECUTE, иначе сломается половина софта.
Никто не мешает сначала выделить с RW, записать, потом поменять на RE и запустить.
Вчитайтесь в код, в примере так и делается. Вопрос в комментарии как раз о детекте virtualprotect на изменение с RW на RE.
Фраза «Windows сама вызывает ваш код в своём потоке» вводит в заблуждение. Я понял её так, будто речь идёт о каком-то особом потоке, созданном операционной системой. Далее правильно написано, что это не так: «Код выполняется в контексте потока, который вызвал EnumWindows».
Делал подобное, подтверждаю. рабочий способ
Интересная техника. Но есть нюанс: callback injection через EnumWindows/EnumChildWindows работает только пока Defender не обновит сигнатуры на конкретный callback-вектор. Microsoft обычно закрывает такие штуки за 2-3 недели после публичного disclosure. Вопрос: вы тестировали на актуальных базах Defender (апрель 2026)? Потому что половина подобных техник из 2024-2025 уже не проходит
EnumDisplayMonitors ?
в WinAPI много такого.
Тесты проводились на двух свежих win10

Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут