
Patch AMSI and ETW
questa repo contiene informazioni per patchare AMSI ed ETW usando una patch a singolo byte per entrambi.
L'idea era limitare il rilevamento della patch stessa dato che è un singolo byte.
L'idea è che AMSI esegua molti controlli di validazione prima di raggiungere il codice critico del "check" di AMSI. Puoi semplicemente commutare uno dei jz in jnz e viceversa.

La freccia rossa nell'immagine sopra mostra dove si trova il codice critico.

Esempio di controlli che possono essere commutati per evitare di chiamare il codice critico.
In questo caso patchiamo il jnz dopo cmp dword ptr [rbx], 49534d41h.
la patch è semplicemente l'indirizzo di AmsiScanBuffer + 0x83 = 0x74 (x64)
Invece di patchare EtwEventWrite, patcha semplicemente la syscall NtTraceEvent che è chiamata da molte funzioni.

Come mostrato nella figura sotto, NtTraceEvent è usata da molte funzioni all'interno di ntdll.dll

La patch consiste semplicemente nel forzare un return quando viene chiamata la funzione NtTraceEvent NtTraceEvent = 0xc3 (x64)