
패치 AMSI 및 ETW
이 저장소에는 AMSI와 ETW를 단일 바이트 패치로 패치하는 방법에 대한 정보가 포함되어 있습니다.
패치 자체가 단일 바이트이므로 패치 자체의 탐지를 제한하는 것이 아이디어였습니다.
핵심은 AMSI가 중요한 AMSI "검사" 코드에 도달하기 전에 많은 유효성 검사를 수행한다는 것입니다. jz 하나를 jnz로, 그 반대로 간단히 토글할 수 있습니다.

위 그림의 빨간 화살표는 중요한 코드가 위치한 곳을 나타냅니다.

중요한 코드를 호출하지 않도록 토글할 수 있는 검사 예시입니다.
이 경우 cmp dword ptr [rbx], 49534d41h 다음의 jnz를 패치합니다.
패치는 단순히 AmsiScanBuffer + 0x83 주소를 0x74(x64)로 변경하는 것입니다.
EtwEventWrite를 패치하는 대신 많은 함수에서 호출되는 syscall 를 간단히 패치합니다.
NtTraceEvent
아래 그림과 같이 NtTraceEvent는 ntdll.dll 내의 많은 함수에서 사용됩니다.

패치는 NtTraceEvent 함수가 호출될 때 강제로 반환하도록 하는 것입니다. NtTraceEvent = 0xc3 (x64)