Тестовая статья
Сегодня мы разберемся с одним из самых неприятных .NET-обфускаторов — Eazfuscator.NET, который защищает код не только шифрованием строк и запутыванием control flow, но и полноценной виртуальной машиной. Мы исследуем вирт
уализованный код, модифицируем устаревший девиртуализатор EazyDevirt под новую версию защиты и шаг за шагом доберемся до скрытых методов, несмотря на сломанные шаблоны и измененные механизмы обфускации.
Если после статьи «Конфуз, сэр! Добываем код из ConfuserEx без готовых деобфускаторов» тебе не надоели .NET-обфускаторы, сегодня мы перейдем к обсуждению еще более зловредного представителя этого семейства — Eazfuscator.NET. Зловредность его заключается в том, что, помимо уже встречавшегося нам ранее джентльменского набора фич вроде обфускации control flow, шифрования констант, строк и имен идентификаторов, в нем присутствует вполне себе натуральная виртуальная машина. Наподобие тех, которые мы встречали во взрослых защитах Enigma, Obsidium, Themida или даже в VMProtect.
До этого мы разбирали способ сокрытия IL-кода путем шифрования отдельных классов или методов с расшифровкой непосредственно перед JIT-компиляцией, что делало его уязвимым для реверса на этом этапе. В рассматриваемом же случае набор IL-инструкций преобразуется в шифрованную последовательность псевдокоманд шитого кода, пошагово исполняемую встроенным интерпретатором. Разумеется, это чертовски замедляет работу приложения, однако на что не пойдешь ради приватности кода? Ну что же, давай посмотрим, что можно предпринять в столь запущенном случае.
Итак, у нас есть некое приложение. Требуется отследить в нем вызов определенного диалогового окна и по возможности научиться управлять им. К сожалению, Eazfuscator пока еще не детектируется стандартными средствами, Detect It Easy видит в нем обычное обфусцированное .NET-приложение PE32:
- r;e;fre;
- er;fe;r
- prepgelp
Operation system: Windows(95)[I386, 32-bit, GUI]
Linker: Microsoft Linker(6.0)
Compiler: VB.NET
Language: VB.NET
Library: Microsoft Edge Chromium WebView
Library: .NET Framework(CLR 4.0.30319)
Sign tool: Windows Authenticode(2.0)[PKCS #7]
- уыкц/
- кцац
- кыкуц
(Heur)Protection: Obfuscation[Virtualization Calls encrypt Anti-ILDASM Bad namings Math inversions]
(Heur)Protection: Anti analysis[Anti-debug]
Overlay: Binary(Store)[Offset=0x00321c00,Size=0x2978]
Certificate: WinAuth(2.0)[PKCS #7]
- frerfe
- wrefw
- укацк
