Тестовая статья

Се­год­ня мы раз­берем­ся с одним из самых неп­рият­ных .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]

  1. уыкц/
  2. кцац
  3. кыкуц

(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
  • укацк

Подписаться
Уведомить о
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии