
Патч AMSI и ETW
этот репозиторий содержит информацию о патчинге AMSI и ETW с помощью однобайтового патча для обоих.
Идея заключалась в том, чтобы ограничить обнаружение самого патча, поскольку он занимает всего один байт.
Идея в том, что AMSI выполняет множество проверок, прежде чем дойти до критического кода «check». Можно просто переключить один из jz на jnz и наоборот.

Красная стрелка на рисунке выше показывает, где расположен критический код.

Пример проверок, которые можно переключить, чтобы избежать вызова критического кода.
В данном случае мы патчим jnz после cmp dword ptr [rbx], 49534d41h.
Патч — это просто адрес AmsiScanBuffer + 0x83 = 0x74 (x64).
Вместо патчинга просто пропатчите системный вызов , который вызывается множеством функций.
EtwEventWriteNtTraceEvent
Как показано на рисунке ниже, NtTraceEvent используется множеством функций внутри ntdll.dll.

Патч просто принудительно возвращает управление при вызове функции NtTraceEvent: NtTraceEvent = 0xc3 (x64).