Не работает enigma protector

Больше не энигма. Ломаем защиту приложений Enigma x64 актуальных версий

Содержание статьи

Бы­тует рас­простра­нен­ное мне­ние, что к катего­рии кру­тых, хороших год­ных защит отно­сят­ся 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 при­дет на помощь чуть поз­же, пока же поп­робу­ем извлечь всю выгоду из малень­кой победы, которую мы толь­ко что одер­жали.

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

Источник

Не работает enigma protector

Для защиты нашего программного обеспечения в основном мы используем Enigma Protector.

А значит Keygen так же будут от этого коммерческого протектора.

В использовании Keygen максимально просты и понятны и всё же, есть некоторые тонкости о которых вам стоит знать.

После покупки Keygen вы получите два файла, а именно:

1) Файл программы. Который вам нужно будет выслать вашему клиенту, запустив данный файл клиент увидит вот такое окно. В котором ему нужно будет скопировать уникальный Hardware ID . Далее клиент высылает ID вам. 2) Keygen файл . На основании Hardware ID , вам нужно создать уникальный ключ, который в комплексе с Registration name позволит клиенту зарегистрировать программное обеспечение и приступить к его использованию.

Для предоставления безлимитного доступа к программе, вам нужно:
Registration name — Ввести имя клиента, обычно лучше использовать почту для уникальной идентификации клиента, что позволяет более эффективно решать спорные вопросы, если таковые возникнут в будущем.
Hardware ID — Поставить галочку и ввести ID ранее полученный от клиента, иногда клиенты пытаются получить ID из свойств своего ПК такой ID не подходит. Нужен именно тот, который клиент получит при запуске программного обеспечения.
Select sections for descryption — В данном пункте всегда ставьте галочку напротив Section 1 и больше нигде
И нажимаете Generate
Появится Registration key , который в комплексе с Registration name и нужно выслать клиенту

Если же вам нужно предоставить разовый доступ, для этого вам понадобится пункт Executions , поставьте галочку и введите нужно число запусков, данное число будет отображено в созданном Registration key

Читайте также:  Как настроить трафик мтс

Не рекомендуется создавать ключи привязанные к датам и времени, так как существует большое количество утилит для заморозки или изменения системного времени, что позволит получить доступ к вашему программному обеспечению бесплатно.

Иногда Keygen может быть защищен не Enigma Protector, а тем же Themida protector порядок действий для данного протектора отличается от Enigma Protector

Для создания ключа вам нужно:

  • Запустить Keygen
  • Выбрать Lisence Manager
  • Add Lisence (в левом верхнем углу) — Заполняете два параметра — Customer (вводите имя или почту клиента) — Hardware ID (вводите ID клиента, который он получит при запуске Adjust)
  • Далее вверху кликаете на Create Lisence Key после чего в папке Keygen появится папка с именем клиента из которой вам нужно выслать клиенту файл название модели.key

Источник

Триальный конь. Как сломать trial, защищенный Enigma Protector

warning

Вся информа­ция пре­дос­тавле­на исклю­читель­но в озна­коми­тель­ных целях. Ни редак­ция, ни автор не несут ответс­твен­ности за любой воз­можный вред, при­чинен­ный матери­ала­ми дан­ной статьи.

Пос­тоян­ным читате­лям «Хакера», зна­комым с моей пре­дыду­щей стать­ей, мог­ло показать­ся, что взлом защиты Enigma пред­став­ляет собой какое‑то архислож­ное дей­ствие, дос­тупное лишь избран­ным спе­циалис­там, обла­дающи­ми навыка­ми работы с отладчи­ками и воору­жен­ными спе­циаль­ными инс­тру­мен­тами. Пра­виль­но показа­лось, имен­но такого эффекта я и собирал­ся добить­ся. Одна­ко я недаром делал ого­вор­ку о наличии сла­бых мест, которы­ми поль­зуют­ся мно­гочис­ленные сетевые авто­ры обу­чающих видео и «однокли­ковых ути­лит». Сегод­ня мы рас­смот­рим одно из таких сла­бых мест защиты Enigma — три­аль­ный режим.

За­щищен­ные с помощью Enigma при­ложе­ния мож­но дизас­сем­бли­ровать — об этом под­робно рас­ска­зыва­лось в статье «Боль­ше не эниг­ма. Лома­ем защиту при­ложе­ний Enigma x64 акту­аль­ных вер­сий».

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

Для понима­ния про­цес­са ска­чаем с офи­циаль­ного сай­та пос­леднюю демовер­сию защиты, бла­го они ее сво­бод­но раз­дают. Запус­тив прог­рамму, мы уви­дим в меню Settings вклад­ку Trial Control. Здесь находят­ся нуж­ные нам раз­делы: Limitation by Executions Count (огра­ниче­ние на количес­тво запус­ков), Limitation by Days Count (огра­ниче­ние на количес­тво дней), Limitation of Execution Time (огра­ниче­ние на количес­тво прог­рам­мно­го вре­мени) и Time Control (про­вер­ка мух­лежа с перево­дом вре­мени).

Вклад­ка Trial Control ути­литы Enigma Protector

Осо­бен­ности этих режимов зак­люча­ются в том, что при пер­вом запус­ке прог­рамма «при­вязы­вает­ся» к текуще­му момен­ту и ведет отсчет сво­ей работы имен­но от него. Тех­нология сбро­са подоб­ного три­ала зак­люча­ется в том, что­бы вер­нуть сис­тему в сос­тояние, пред­шес­тву­ющее запус­ку, пос­ле чего прог­рамма будет стар­товать как буд­то в пер­вый раз пос­ле уста­нов­ки. Нап­ример, с режимом Limitation from Date till Date (огра­ниче­ние на запуск в кон­крет­ный вре­мен­ной отре­зок) такой номер не прой­дет, пос­коль­ку при­ложе­ние уже не при­вяза­но к момен­ту пер­вого запус­ка. Защита про­веря­ет лишь текущее сис­темное вре­мя, незави­симо от того, запус­калась прог­рамма до это­го на дан­ном компь­юте­ре или нет. Хотя, конеч­но, мож­но обма­нуть и этот метод защиты, сбро­сив три­ал (что­бы исклю­чить запоми­нание текуще­го вре­мени с целью обма­нуть Time Control, если этот режим так­же вклю­чен) и переве­дя часы на нуж­ный вре­мен­ной интервал.

Од­нако хва­тит лиричес­ких отступ­лений, пора брать­ся за дело! Давай защитим любое при­ложе­ние, огра­ничив количес­тво его запус­ков, а потом сбро­сим эту защиту. По счастью, раз­работ­чики Enigma и здесь пош­ли нам навс­тре­чу, бес­плат­но пре­дос­тавив такую воз­можность в демовер­сии сво­его про­тек­тора. Для это­го откры­ваем вклад­ку Limitation by Executions Count, уста­нав­лива­ем вер­хний чек­бокс и в окош­ке Maximal count of executions ука­зыва­ем нуж­ное количес­тво запус­ков (ска­жем, три).

Нас­тра­иваем огра­ниче­ние на количес­тво запус­ков

Те­перь соберем защищен­ную вер­сию прог­раммы, которая при каж­дом стар­те будет показы­вать пятисе­кун­дное окош­ко рек­ламы Enigma (что поделать, за халяву при­ходит­ся пла­тить) и счи­тать запус­ки. Через три запус­ка вмес­то прог­раммы ты уви­дишь сооб­щение о пре­выше­нии лимита, озна­чающее, что халява закон­чилась.

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

Name VirtSize RVA PhysSize Offset Flag
.text 00E8CEBC 00001000 00E8D000 00001000 60D00060
.data 000103F8 00E8E000 00010400 00E8E000 C0700040
.rdata 003C0A80 00E9F000 003C0C00 00E9E400 40600040
.qtmetad 00000620 01260000 00000800 0125F000 40600040
.eh_fram 002B5648 01261000 002B5800 0125F800 40300040
.bss 00003AC0 01517000 00000000 00000000 C0600080
.edata 00000E04 0151B000 00001000 01515000 40300040
.idata 000055C4 0151C000 00005600 01516000 C0300040
.CRT 00000038 01522000 00000200 0151B600 C0300040
.tls 00000008 01523000 00000200 0151B800 C0300040
.rsrc 000428B0 01524000 000428B0 0151BA00 C0300040
.reloc 00062CFC 01567000 00062E00 0155E400 42300040

Читайте также:  Mercusys ретранслятор wi fi сигнала mw300re как настроить

В защищен­ной прог­рамме эти сек­ции тоже при­сутс­тву­ют, прав­да без наз­ваний, фла­гов и в зашиф­рован­ном виде:

1 00E8D000 00001000 0061CC00 00000600 E0000040
2 00011000 00E8E000 00001A00 0061D200 E0000040
3 003C1000 00E9F000 001E8E00 0061EC00 E0000040
4 00001000 01260000 00000200 00807A00 E0000040
5 002B6000 01261000 000BFA00 00807C00 E0000040
6 00004000 01517000 00000000 00000000 C0600080
7 00001000 0151B000 00000000 008C7600 E0000040
8 00006000 0151C000 00000800 008C7600 E0000040
9 00001000 01522000 00000200 008C7E00 E0000040
10 00001000 01523000 00000000 008C8000 E0000040
11 00043000 01524000 00000000 008C8000 E0000040
12 00063000 01567000 00000000 008C8000 E0000040

То, что они зашиф­рованы, — еще пол­беды, пос­коль­ку по мере заг­рузки сек­ции рас­шифро­выва­ются: в этом мы можем убе­дить­ся, «всплыв» отладчи­ком во вре­мя работы уже заг­ружен­ной прог­раммы. Одна­ко здесь нас ожи­дает неп­рият­ный сюр­приз — жиз­ненно необ­ходимые нам сек­ции импорта и экспор­та (в нашем при­мере . edata и . idаta ) запол­нены нулями. Злов­редная Enigma очи­щает их пос­ле заг­рузки при­ложе­ния в память, что­бы осложнить нам жизнь. В прин­ципе, таб­лица экспор­та у нас есть, но импорт, ори­гиналь­ные наз­вания и фла­ги сек­ций отсутс­тву­ют, не говоря уже о точ­ке вхо­да в при­ложе­ние.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

Взлом программы защищенной про­тек­тором Enigma

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

Может показать­ся, что взлом защиты Enigma пред­став­ляет собой какое‑то архислож­ное дей­ствие, дос­тупное лишь избран­ным спе­циалис­там, обла­дающи­ми навыка­ми работы с отладчи­ками и воору­жен­ными спе­циаль­ными инс­тру­мен­тами. Пра­виль­но показа­лось, но есть сла­бые места, которы­ми поль­зуют­ся мно­гочис­ленные сетевые авто­ры обу­чающих видео и «однокли­ковых ути­лит». Сегод­ня мы рас­смот­рим одно из таких сла­бых мест защиты Enigma — три­аль­ный режим.

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

Для понима­ния про­цес­са ска­чаем с офи­циаль­ного сай­та пос­леднюю демовер­сию защиты, бла­го они ее сво­бод­но раз­дают. Запус­тив прог­рамму, мы уви­дим в меню Settings вклад­ку Trial Control. Здесь находят­ся нуж­ные нам раз­делы:

  • Limitation by Executions Count (огра­ниче­ние на количес­тво запус­ков)
  • Limitation by Days Count (огра­ниче­ние на количес­тво дней)
  • Limitation of Execution Time (огра­ниче­ние на количес­тво прог­рам­мно­го вре­мени)
  • Time Control (про­вер­ка мух­лежа с перево­дом вре­мени)

Вклад­ка Trial Control ути­литы Enigma Protector

Осо­бен­ности этих режимов зак­люча­ются в том, что при пер­вом запус­ке прог­рамма «при­вязы­вает­ся» к текуще­му момен­ту и ведет отсчет сво­ей работы имен­но от него. Тех­нология сбро­са подоб­ного три­ала зак­люча­ется в том, что­бы вер­нуть сис­тему в сос­тояние, пред­шес­тву­ющее запус­ку, пос­ле чего прог­рамма будет стар­товать как буд­то в пер­вый раз пос­ле уста­нов­ки. Нап­ример, с режимом Limitation from Date till Date (огра­ниче­ние на запуск в кон­крет­ный вре­мен­ной отре­зок) такой номер не прой­дет, пос­коль­ку при­ложе­ние уже не при­вяза­но к момен­ту пер­вого запус­ка.

Защита про­веря­ет лишь текущее сис­темное вре­мя, незави­симо от того, запус­калась прог­рамма до это­го на дан­ном компь­юте­ре или нет. Хотя, конеч­но, мож­но обма­нуть и этот метод защиты, сбро­сив три­ал (что­бы исклю­чить запоми­нание текуще­го вре­мени с целью обма­нуть Time Control, если этот режим так­же вклю­чен) и переве­дя часы на нуж­ный вре­мен­ной интервал.

Од­нако хва­тит лиричес­ких отступ­лений, пора брать­ся за дело! Давайте защитим любое при­ложе­ние, огра­ничив количес­тво его запус­ков, а потом взломаем эту защиту. По счастью, раз­работ­чики Enigma и здесь пош­ли нам навс­тре­чу, бес­плат­но пре­дос­тавив такую воз­можность в демовер­сии сво­его про­тек­тора. Для это­го откры­ваем вклад­ку Limitation by Executions Count, уста­нав­лива­ем вер­хний чек­бокс и в окош­ке Maximum count of executions ука­зыва­ем нуж­ное количес­тво запус­ков (ска­жем, три).

Нас­тра­иваем огра­ниче­ние на количес­тво запус­ков

Те­перь соберем защищен­ную вер­сию прог­раммы, которая при каж­дом стар­те будет показы­вать пятисе­кун­дное окош­ко рек­ламы Enigma (что поделать, за халяву при­ходит­ся пла­тить) и счи­тать запус­ки. Через три запус­ка вмес­то прог­раммы вы уви­дите сооб­щение о пре­выше­нии лимита, озна­чающее, что халява закон­чилась.

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

Читайте также:  Как самостоятельно починить гнездо для зарядки

В защищен­ной прог­рамме эти сек­ции тоже при­сутс­тву­ют, прав­да без наз­ваний, фла­гов и в зашиф­рован­ном виде:

То, что они зашиф­рованы, — еще пол­беды, пос­коль­ку по мере заг­рузки сек­ции рас­шифро­выва­ются: в этом мы можем убе­дить­ся, «всплыв» отладчи­ком во вре­мя работы уже заг­ружен­ной прог­раммы. Одна­ко здесь нас ожи­дает неп­рият­ный сюр­приз — жиз­ненно необ­ходимые нам сек­ции импорта и экспор­та (в нашем при­мере . edata и . idаta ) запол­нены нулями. Злов­редная Enigma очи­щает их пос­ле заг­рузки при­ложе­ния в память, что­бы осложнить нам жизнь. В прин­ципе, таб­лица экспор­та у нас есть, но импорт, ори­гиналь­ные наз­вания и фла­ги сек­ций отсутс­тву­ют, не говоря уже о точ­ке вхо­да в при­ложе­ние.

Как ни кру­ти, а при­дет­ся лезть в вир­туаль­ную машину. Заод­но пос­мотрим, как она выг­лядит в 32-бит­ной вер­сии (в прош­лой статье была опи­сана 64-бит­ная реали­зация). Уже при попыт­ке сдам­пить при­ложе­ние мы с огор­чени­ем обна­ружим, что при дан­ном спо­собе защиты из нее уже не тор­чат уши интер­пре­тато­ра в виде экспор­тиру­емых сим­волов, — интер­пре­татор при­дет­ся искать самим. Заг­рузив прог­рамму в отладчик (не забыва­ем о ScyllaHide) и тупо запус­тив, с ходу спо­тыка­емся о пер­вую попыт­ку исклю­чения на одной из двух рогаток:

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

Мы наш­ли адрес 32-бит­ного интер­пре­тато­ра шитого кода 32-бит­ной вир­туаль­ной машины, ана­логич­ной той, что я опи­сал в пре­дыду­щей статье. Здесь он выг­лядит вот так:

Да­лее, с исполь­зовани­ем уже зна­комо­го нам спо­соба, ста­вим на него условную точ­ку оста­нова с печатью в лог < RAX> <[ RSP] >. Нам пред­сто­ит ана­лизи­ровать логи и искать раз­вилки в вир­туаль­ном коде на пред­мет экспи­рации три­ала или наличия уже рас­шифро­ван­ной, но еще не обну­лен­ной сек­ции импорта.

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

В этом слу­чае в опре­делен­ный момент защита обна­ружит наличие точ­ки оста­нова и выкинет ошиб­ку Internal Protection Error, please contact to author! . Поэто­му надо отсле­живать в вир­туаль­ном коде кри­тичес­кие точ­ки таких про­верок и акку­рат­но обхо­дить их. Воз­можно, я ког­да‑нибудь рас­ска­жу и об этом. Но в начале статьи я, кажет­ся, обе­щал рас­крыть прос­той спо­соб?

Вы будете сме­ять­ся, но, что­бы зас­тавить прог­рамму зарабо­тать вновь, нам не понадо­бит­ся даже отладчик. Что нам пот­ребу­ется, так это Process Monitor (ProcMon мож­но бес­плат­но ска­чать с сай­та Microsoft) и встро­енный редак­тор реес­тра RegEdit.

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

Но если мы выпол­ним в этом спис­ке поиск по сло­ву Enigma, про­изой­дет чудо! Пошур­шав нес­коль­ко секунд бай­тами, Process Monitor находит бли­же к середи­не спис­ка обра­щение к вет­ке реес­тра:

При­чем при пер­вом запус­ке нашей прог­раммы вет­ка соз­дает­ся, а при пов­торных — чита­ется. Не веря сво­им гла­зам (неуже­ли все так прос­то?), откры­ваем редак­тор реес­тра и акку­рат­но выпили­ваем дан­ную вет­ку (в катало­ге Enigma Protector может ока­зать­ся мно­го подоб­ных веток для дру­гих прог­рамм, тоже защищен­ных «Эниг­мой», их мы не тро­гаем).

Пе­реза­пус­каем прог­рамму, и тут нас под­сте­рега­ет облом — сно­ва сооб­щение о истекшем количес­тве запус­ков. Лезем в реестр: уби­тая вет­ка опять на сво­ем мес­те. Что ж, сно­ва уби­ваем, ее запус­каем ProcMon и прог­рамму — ага, пыта­ется обра­тить­ся к уби­той вет­ке, обла­мыва­ется, и сра­зу вслед за этим про­исхо­дит обра­щение к фай­лу C:\ Users\ Username\ AppData\ Local\ Temp\ 80EB2F5C . Стран­ный файл, рас­положен­ный во вре­мен­ном катало­ге, раз­мер 14 байт.

Про­буем уда­лить его вмес­те с вет­кой, и — бин­го! Три­ал‑вер­сия соф­тины, как ни в чем не бывало, запус­кает­ся и прек­расно работа­ет. Поэк­спе­римен­тировав с раз­ными три­ала­ми на раз­ных прог­раммах, мы видим, что, нес­мотря на свою дубовость, спо­соб получил­ся уни­вер­саль­ным. Хотя наз­вания вет­ки реес­тра и фай­ла Enigma генери­рует все вре­мя новые, для каж­дой прог­раммы они одни и те же. То есть дос­таточ­но пер­вый раз их опре­делить, и мож­но сме­ло в пакет­ном режиме уби­вать их перед запус­ком защищен­ной прог­раммы. Труд­но поверить, но надо приз­нать­ся, что все доволь­но прос­то.

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

Источник

Оцените статью