Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Видео уроки
Популярные статьи
Наш опрос



РЕКЛАМА


ВАША РЕКЛАМА
16-01-2021, 00:00
Больше не энигма. Ломаем защиту приложений Enigma x64 актуальных версий - «Новости»
Рейтинг:
Категория: Новости

раз­верну­тые статьи по дизас­сем­бли­рова­нию при­ложе­ний и не собира­емся оста­нав­ливать­ся на дос­тигну­том. Одна­ко мно­гие прог­раммы исполь­зуют раз­личные механиз­мы анти­отладки, из-за которых под­сту­пить­ся к ним ста­новит­ся неп­росто. Сегод­ня мы погово­рим о том, как вскрыть популяр­ную у раз­работ­чиков защиту Enigma вер­сии 5 и выше, исполь­зующую прод­винутые инс­тру­мен­ты про­тиво­дей­ствия ана­лизу и взло­му.

Бы­тует рас­простра­нен­ное мне­ние, что к катего­рии кру­тых, хороших год­ных защит отно­сят­ся VMProtect и Themida. В них, мол, и крип­тование, и вир­туаль­ные машины, и анти­отладка. Все осталь­ное — так, для лохов и млад­ших школь­ников. Нап­ример, для какой-нибудь «Эниг­мы» в сети мож­но най­ти кучу тутори­алов и видосов с инс­трук­циями по взло­му, вос­поль­зовав­шись которы­ми, любой нуб может почувс­тво­вать себя кул­хакером.


От­части утвер­жде­ние спра­вед­ливо: туторов, вклю­чая видео, в интерне­те дей­стви­тель­но пол­но, а при желании мож­но най­ти и однокли­ковые тул­зы для взло­ма при­ложе­ний. Некото­рые из них даже работа­ют. С неболь­шой ого­вор­кой — это каса­ется ста­рых вер­сий защиты, которая была, мяг­ко говоря, не очень. В пос­ледних вер­сиях Enigma соз­датели пос­тарались как мож­но силь­нее осложнить жизнь хакерам.


Боль­шинс­тво решений они поза­имс­тво­вали у «взрос­лых» защит (ниже читатель смо­жет в этом убе­дить­ся). Одна­ко, как извес­тно, в этом мире нет ничего нового, и исполь­зование извес­тных решений не дела­ет взлом защиты более прос­тым и при­ятным. Ско­рее наобо­рот. Давай убе­дим­ся в этом, хорошень­ко пощупав Enigma собс­твен­ными руками.


Эксперимент


Ра­ди экспе­римен­та ска­чаем какую-нибудь прог­рамму (для прос­тоты — дот­нетов­скую) и нат­равим на нее, нап­ример, Exeinfo. Пред­положим, ана­лиза­тор опоз­нал упа­ков­щик как Enigma Protector x64 [v.5.0 — 7.0]. Вот и отлично, мыс­ленно выдыха­ем мы: не VMProtect и не Themida, а по Enigma точ­но что-то мож­но най­ти на YouTube. Лезем в гугл — и прав­да, видосов пол­но, одна­ко мак­сималь­ная лома­емая вер­сия — 4, а по x64 нет вооб­ще ничего.


Ну что ж, дума­ем мы, не боги гор­шки обжи­гают: не мог­ли же они при­думать что-то прин­ципи­аль­но новое? Поп­робу­ем дей­ство­вать по обра­зу и подобию, авось получит­ся. И вот тут нас под­жида­ет неп­рият­ный сюр­приз.


Прак­тичес­ки все «кул­хакер­ские» ману­алы начина­ются с одной и той же неиз­менной фра­зы: «заг­рузите прог­рамму в отладчик» или «соз­дай­те дамп при­ложе­ния». Имен­но на этом шаге иссле­дова­теля под­сте­рега­ет пер­вый ковар­ный облом. В любимый все­ми x64dbg прог­рамма не гру­зит­ся вооб­ще, дам­перы запущен­ную соф­тину тоже не жела­ют дам­пить, а если это и уда­ется, то на выходе получа­ется совер­шенно нерабо­тос­пособ­ный (и уж и близ­ко не дот­нетов­ский) кусок памяти. Даже в работа­ющем при­ложе­нии .NET не рас­позна­ется от сло­ва «сов­сем», dnSpy ее род­ной не приз­нает и атта­чить не хочет. При­атта­чить прог­рамму уда­ется раз­ве что в x64dbg, но при малей­шей попыт­ке сдви­нуть­ся с точ­ки оста­нова про­цесс мгно­вен­но зак­рыва­ется. В общем, налицо все приз­наки взрос­лой защиты — шиф­рование кода, защита от дам­па и отладчи­ка.


При­дет­ся брать­ся за дело осно­ватель­но. Для начала уста­новим пла­гины ScyllaHide и Scylla, что­бы хоть как-то зарабо­тала отладка. Бла­года­ря пер­вой тул­зе прог­рамма наконец-то поз­воля­ет заг­рузить себя в отладчик. Одна­ко радость ока­зыва­ется преж­девре­мен­ной: пос­ле пре­рыва­ния в про­цес­се никакие нас­трой­ки ScyllaHide не поз­воля­ют нам прод­винуть­ся даль­ше, прог­рамма зах­лопыва­ется с завид­ным упорс­твом. Scylla при­дет на помощь чуть поз­же, пока же поп­робу­ем извлечь всю выгоду из малень­кой победы, которую мы толь­ко что одер­жали.


Итак, прог­рамма заг­ружена в отладчик и пошаго­во трас­сиру­ется. Потихонь­ку дви­гаем­ся, минуя нес­коль­ко саморас­шифро­выва­ющих­ся учас­тков кода, и обна­ружи­ваем, что они — все­го лишь обвязка для огромной упа­кован­ной и зашиф­рован­ной сек­ции, стар­товая точ­ка которой выг­лядит так:


push rcx
push rdx
push r8
push r9
mov r8,000B5ED8E
call .00007FF7`BA4D9610
mov r8,0
mov rdx,1
mov rcx,[rsp][000000018]
call .00007FF7`BA4E49A0
mov r8,0
mov rdx,1
mov rcx,[rsp][000000018]
call .00007FF7`BA13E400
pop r9
pop r8
pop rdx
pop rcx
call .00007FF7`BA12A210

Вот тут нам и при­годит­ся ранее уста­нов­ленная Scylla — эту сек­цию мож­но сдам­пить в EXE-файл. Тол­ку, прав­да, от это­го мало: модуль нерабо­тос­пособ­ный. Вдо­бавок это явно не наш иско­мый защищен­ный модуль, дот­нетом там по-преж­нему не пах­нет, одна­ко пах­нет — сюр­приз! — Delphi. Ока­зыва­ется, Enigma написа­на на дель­фи! Но это вов­се не упро­щает нам жизнь.


Уг­лубля­ясь пошаго­во в пос­ледний call, мы доволь­но быс­тро вяз­нем в мешани­не безум­ного кода. Похоже, мы не силь­но прод­винулись в нашем иссле­дова­нии: замуча­ешь­ся пошаго­во переме­щать­ся до бли­жай­шего осмыслен­ного мес­та, а без­болез­ненно прер­вать­ся в про­цес­се выпол­нения кода анти­отладчик по-преж­нему не дает.


Поп­робу­ем зай­ти с дру­гой сто­роны. Вни­матель­но пос­мотрев на сдам­плен­ный модуль, мы обна­ружи­ваем, что он не такой уж и бес­полез­ный. У него, вне­зап­но, есть экспор­тиру­емые сим­волы:


0 .00007FF7`BABBD06E EP_RegHardwareID
1 .00007FF7`BABBD073 EP_RegHardwareIDA
2 .00007FF7`BABBD078 EP_RegHardwareIDW
3 .00007FF7`BABBD07D EP_RegCheckKey
4 .00007FF7`BABBD082 EP_RegCheckKeyA
5 .00007FF7`BABBD087 EP_RegCheckKeyW
6 .00007FF7`BABBD08C EP_RegSaveKey
7 .00007FF7`BABBD091 EP_RegSaveKeyA
8 .00007FF7`BABBD096 EP_RegSaveKeyW
9 .00007FF7`BABBD09B EP_RegLoadKey
10 .00007FF7`BABBD0A0 EP_RegLoadKeyA
11 .00007FF7`BABBD0A5 EP_RegLoadKeyW
12 .00007FF7`BABBD0AA EP_RegLoadAndCheckKey
13 .00007FF7`BABBD0AF EP_RegCheckAndSaveKey
14 .00007FF7`BABBD0B4 EP_RegCheckAndSaveKeyA
15 .00007FF7`BABBD0B9 EP_RegCheckAndSaveKeyW
16 .00007FF7`BABBD0BE EP_RegDeleteKey
...

Как нет­рудно догадать­ся, EP — это Enigma Protection, а точ­ки вхо­да ука­зыва­ют на какие-то очень полез­ные ниш­тяки, содер­жащи­еся внут­ри.


Теги: CSS

Просмотров: 130
Комментариев: 0:   16-01-2021, 00:00
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме:
Комментарии для сайта Cackle