
पैच AMSI और ETW
इस रिपॉजिटरी में AMSI और ETW को पैच करने की जानकारी है, जो दोनों के लिए एक ही सिंगल-बाइट पैच का उपयोग करती है।
विचार स्वयं पैच की पहचान को सीमित करना था, क्योंकि यह एक ही बाइट का होता है।
विचार यह है कि AMSI महत्वपूर्ण AMSI "चेक" कोड तक पहुँचने से पहले बहुत सारे वैलिडेशन चेक करता है। आप आसानी से किसी एक jz को jnz में बदल सकते हैं और इसका विपरीत भी।

उपरोक्त चित्र में लाल तीर दिखाता है कि महत्वपूर्ण कोड कहाँ स्थित है।

चेक के उदाहरण जिन्हें महत्वपूर्ण कोड को कॉल करने से बचने के लिए टॉगल किया जा सकता है।
इस मामले में हम cmp dword ptr [rbx], 49534d41h के बाद वाले jnz को पैच करते हैं।
पैच केवल AmsiScanBuffer + 0x83 = 0x74 (x64) का पता है।
को पैच करने के बजाय केवल syscall को पैच करें, जिसे बहुत सारे फ़ंक्शन कॉल करते हैं।
EtwEventWriteNtTraceEvent
जैसा कि नीचे दिए गए चित्र में दिखाया गया है, NtTraceEvent का उपयोग ntdll.dll के भीतर कई फ़ंक्शन करते हैं।

पैच केवल NtTraceEvent फ़ंक्शन को कॉल करने पर return को मजबूर करता है NtTraceEvent = 0xc3 (x64)।