
لقد وثّقت جميع تصحيحات AMSI التي تعلّمتها حتى الآن
لقد وثّقت جميع تصحيحات AMSI التي تعلمتها حتى الآن


a. لتخطي الدخول إلى amsi!AmsiOpenSession+0x4c عبر jne، إذا نجحت جميع التعليمات قبل استدعاء jne
=> سننتقل مباشرة إلى amsi!AmsiCloseSession.
رابط الفيديو: https://drive.google.com/file/d/1H0JheGNGzIyWZ62HNLmJ_oeAAUtDGIKd/view?usp=sharing
jne من amsi!AmsiOpenSession Github. لقد استخدمت قالب كود تصحيح AMSI الخاص به وأضفت طرقًا أخرى عملت عليها حتى الآن.b. لتخطي الدخول إلى amsi!AmsiOpenSession+0x4c (يفتح جلسة يمكن من خلالها ربط طلبات فحص متعددة) عبر ret، بلصق c3 مباشرة في بداية amsi!AmsiOpenSession
=> سننتقل مباشرة إلى amsi!AmsiCloseSession.
رابط الفيديو: https://drive.google.com/file/d/1_tpCfJ-aO1wzeEx3Id7b7bTJUyc5ExBw/view?usp=sharing
a. لتخطي تنفيذ التعليمات الرئيسية لـ amsi!AmsiScanBuffer عبر ret، بلصق c3 مباشرة في بداية amsi!AmsiScanBuffer
رابط الفيديو: https://drive.google.com/file/d/1PljZld1aXz89nCO3gQCjYpwSqbEbi4J_/view?usp=sharing
b. لتخطي الفرع الذي يقوم بالفحص الفعلي في amsi!AmsiScanBuffer ويعود، بلصق \\xB8\\x57\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070057; ret') مباشرة في بداية amsi!AmsiScanBuffer
هنا، تكون قيمة HRESULT (أو بالأحرى قيمة الخطأ) هي 'E_INVALIDARG' (المصدر: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
c. لتخطي الفرع الذي يقوم بالفحص الفعلي في amsi!AmsiScanBuffer ويعود، بلصق \\xB8\\x05\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070005; ret') مباشرة في بداية amsi!AmsiScanBuffer
هنا، تكون قيمة HRESULT (أو بالأحرى قيمة الخطأ) هي 'E_ACCESSDENIED' (المصدر: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
d. لتخطي الفرع الذي يقوم بالفحص الفعلي في amsi!AmsiScanBuffer ويعود، بلصق \\xB8\\x06\\x00\\x07\\x80\\xC3 ('mov eax, 0x80070006; ret') مباشرة في بداية amsi!AmsiScanBuffer
هنا، تكون قيمة HRESULT (أو بالأحرى قيمة الخطأ) هي 'E_HANDLE' (المصدر: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
e. لتخطي الفرع الذي يقوم بالفحص الفعلي في amsi!AmsiScanBuffer ويعود، بلصق \\xB8\\x0E\\x00\\x07\\x80\\xC3 ('mov eax, 0x8007000E; ret') مباشرة في بداية amsi!AmsiScanBuffer
هنا، تكون قيمة HRESULT (أو بالأحرى قيمة الخطأ) هي 'E_OUTOFMEMORY' (المصدر: https://pre.empt.dev/posts/maelstrom-etw-amsi/#Historic_AMSI_Bypasses)
بقلم Ritaban Das: https://github.com/dosxuz/TradecraftImrprovement
JE إلى JMP بحيث يعود مباشرة... : https://github.com/ZeroMemoryEx/Amsi-Killer