
تصحيح AMSI و ETW
يحتوي هذا المستودع على معلومات لتطبيق تصحيح (patch) على كل من AMSI وETW باستخدام تصحيح من بايت واحد لكليهما.
كانت الفكرة هي الحد من اكتشاف التصحيح نفسه نظرًا لأنه يتكون من بايت واحد.
الفكرة هي أن AMSI يُجري الكثير من عمليات التحقق قبل الوصول إلى كود الفحص الحرج. يمكنك ببساطة تبديل أحد تعليمات jz إلى jnz والعكس صحيح.

السهم الأحمر في الشكل أعلاه يوضح موقع الكود الحرج.

مثال على عمليات التحقق التي يمكن تبديلها لتجنب استدعاء الكود الحرج.
في هذه الحالة نقوم بتصحيح تعليمة jnz التي تلي الأمر cmp dword ptr [rbx], 49534d41h.
التصحيح هو ببساطة عنوان AmsiScanBuffer + 0x83 = 0x74 (x64)
بدلاً من تصحيح EtwEventWrite، قم ببساطة بتصحيح استدعاء النظام الذي يتم استدعاؤه بواسطة الكثير من الدوال.
NtTraceEvent
كما هو موضح في الشكل أدناه، يتم استخدام NtTraceEvent بواسطة الكثير من الدوال داخل ntdll.dll

التصحيح هو ببساطة فرض الإرجاع عند استدعاء الدالة NtTraceEvent أي NtTraceEvent = 0xc3 (x64)