• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Реверс-инжиниринг для начинающих [Часть 13 \ -EXE-]

-EXE-

RAID-массив
Пользователь
Регистрация
07.08.2022
Сообщения
55
Реакции
349
A-13.png

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

У каждой, из сегодняшних программ, свой алгоритм защиты. Я, не просто так, подбираю софт, основная цель - показать больше нюансов, с чем вы можете столкнуться (при анализе). Если предыдущие статьи понравились, то и эта не подкачает. Ну а теперь приступим к анализу программ.

Программа: AntiPlagiarism.NET (Официальный сайт: https://antiplagiarism.net/ru/)

st-soft-1.jpg

Предназначение: Это программа для поиска плагиата текста. Что работает с такими поисковыми ситтемами как Google, Yandex, Bing и другие. Более подробная информация на официальном сайте.
Версия программы: 4.125.0.0 (Актуальная на сегодня).
Софт Exeinfo PE (Анализатор исполняемых файлов), показал что: на программе нет пакера и написана она на C#

st-soft-2.jpg


Для того, что бы начать анализ (крякинг), нам нужно знать какие ограничения в программе. Как обычно, переходим на официальный сайт программы и читаем там информацию. В большинстве случаев, разработчики программ, публикуют подобную информацию на своих сайтах. В нашем случае так и есть, мы узнаем что: Демонстрационная версия программы работает 1 день. После чего проверка текста будет недоступна. Для справедливости скажу, что не все разработчики: публикуют, всю, подробную информацию о ограничениях, могут быть и подводные камни, что всплывают в процессе работы программы.

st-soft-3.jpg

Отлично, информацию получили, теперь запустим программу и посмотрим на принцип активации. В меню "Справка" расположено подменю "активация". При запуске которого, программа нам напишет что триал период - 1 день (в моем случае написано что Trial-период истек). И для активации программы требуется ключ, отлично принцип активации понятен. Но теперь возникает еще один вопрос: По какому принципу проверяется триал в один день ?. То есть локально или проверка идет через интернет ?.

st-soft-4.jpg

На такие вещи нужно, всегда, обращать внимание, изначально. Для проверки мы используем программу HTTP Analyzer что производит мониторинг http и https трафика в режиме реального времени. Запускаем анализатор (нажимаем на кнопку Start) и после этого запускаем программу, смотрим на полученный результат. Как видим наши предположения оказались правильными. А именно: программа отправляет запрос на сайт разработчика, с параметрами, где записывается: триал период, сколько дней прошло, и еще какие то зашифрованные строки (что именно мы пока что не знаем). А также идет проверка обновлений, выхода новых версий, если обновление есть то будет запущен процесс обновления программы.

st-soft-5.jpg

Основную, нужную, информацию мы собрали а теперь приступим к анализу (просмотру) программы под отладчиком DnSpy. На заметку, несколько слов, касательно того: какую версию DnSpy x32 или x64 использовать. Так как, выше, анализатор ExeInfo PE не определил разрядность исполняемого файла (x32 или x64) то при анализе отладчик вам подскажет. А именно выведет сообщение такого плана:

st-soft-6.jpg

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

Переходим к точке входа. Кстати, говоря понятным, простым языком, точка входа в C#: это место что представлено статическим методом Main. И с этого места начинается запуск программы, с соблюдением условия что наша программа будет иметь .exe - расширение, то есть является исполняемым файлом. Бывают и случаи когда в программе несколько точек входа, что размещены статическом методе Main.
В точке входа ничего интересного не наблюдается. Но вот в глаз бросается class ActivationForm. Но это еще ни о чем не говорит, понятно что мы нашли место где вызывается проверка активации программы. Сначала анализируем а потом делаем выводы и принимаем решения, это работает только так. Бывают ситуации что думаешь вот она победа, но на самом деле, оказывается что это не так (к слову говоря).

st-soft-8.jpg

Пройдясь по коду, я остановился на функции setSerialNumberAntiplagiarism. Что сама по себе намекает на установку настроек регистрационного ключа (условно говоря). Можно, только, предположить что: при вводе неверного серийного номера, программа выдаст нам сообщение что ключ не верный. Тем более что формат ключа мы не знаем, как это проверить ?. Все очень просто, поставим точку останова в начале функции. Запустим программу под отладчиком, введем выдуманы серийный номер, посмотрим что вернет нам функция (как отработает).

Я ввел ключ активации "123456789", функция отработала, и вернула результат. Показывая нам что введен неверный лицензионный ключ, чего и следовало ожидать. Значит, мои предположения, оказались верными, идем далее, не отходя от кассы 😉 . Тут же, обращаем внимания на функцию !ProgramActivation.ValidateUnlimitedSerialNumber. Судя по названию, снова предполагаю, она отвечает за проверку введенного ключа активации. И вызывается она уже из класа ProgramActivation. Давайте перейдем и посмотрим на её код, после чего будем делать выводы.

st-soft-9.jpg

Но, перед тем как начнем, забегая немного наперед, скажу так: В этом месте, способов взломать программу, существует, как минимум - 3. И как мне кажется, интересно будет, рассмотреть все, что мы и сделаем.
  1. Написания генератора лицензий для программы (KeyGen).
  2. Сгенерировать ключ активации прямо, с под отладчика DnSpy.
  3. Крякинг программы, внесение изменений, после чего, программа активируется любым ключом.
Способ №1: Написание KeyGen для программы.
Собственный генератор лицензий, всегда хорошая штука, под рукой. Особенно, если вы сливаете в сеть, подобные творения. Каждый сможет сгенерировать себе ключ активации, при этом ни одной правки в коде программы. Тут главное разобрать логику, работы, алгоритма. И так приступим, для начала давайте посмотрим что делает наша функция.

st-soft-10.jpg

Для удобства, я все выделил блоками, на картинке.
  1. Идет проверка ключа активации (строки serialNumber), если его нет (поле пустое) то функция возвращает результат false (запрет). То есть говорит нет активации.
  2. Определение количества символов (длину строки). Если не соответствие то функция, также, возвращает результат false (запрет).
  3. Цифры и буквы, собственно, то из чего будет состоять наш ключ активации.
  4. int[] array = new int одномерный массив для создание которого используется оператор new.
  5. Цикл, в котором происходит генерация ключа.
  6. В финале если ключ не верный мы получим результат false (запрет).
То есть, проще говоря, когда мы вводим ключ активации в программу, то функция ValidateUnlimitedSerialNumber проверяет правильность ключа. Имеется в виду что: если, даже, формат ключа правильный, на но не соответствует алгоритму то программа не зарегистрируется (Как это происходит я покажу в Способ №2: генерация ключа под отладчиком).

Также, мы выяснили, что: длина нашего ключа активации состоит из 30 символов и после каждых 5 символов стоит разделитель, то есть знак "-". Выходя из этого,
формат, ключа активации, имеет вид: XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX. А с разделителем длина состоит из 35 символов (Это и есть правильный формат ключа).

Ну а мы пока вернемся к нашему KeyGen. Я заранее приготовил заготовку, ну как заготовку, написал алгоритм для генерации ключа активации. Сам цикл, генерации не такой уж и сложный, разбираясь в переменных, написать генератор можно на любом языке программирования. Как видите в коде генератора - нет ничего лишнего.

st-soft-11.jpg

Для уточнения: Мы нашли функцию, что проверяет ключ активации, посмотрели на её алгоритм и написали свой генератор ключей. Алгоритм можно переделать, если будет желание, сделав так что бы генератор выводил не по одному ключу а сразу список. Для этого, нужно только изменить цикл for i = и добавить визуальный компонент memo (для вывода списка ключей, к примеру). Но я сделал так, потому как смотрится красивее. Как я всегда говорю, тут главное фантазия, все зависит только от этого, в программировании.

Демонстрация работы на видео (Активация программы используя KeyGen): Видео: ANTI-1.wmv (Имеется и в архиве, на всякий пожарный).

В результате проделанных манипуляций: Мы имеем генератор лицензионных ключей, что удобно, особенно для массового распространения. Программа активируется сгенерированными ключами и чувствует себя хорошо. С этим я думаю понятно. Исходники и скомпилированный файл прикрепил к файлам статьи. Для самых ленивых, ничего не нужно делать, запустил и сгенерировал себе ключ. 😉

st-soft-12.jpg

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

Способ №2: Генерация ключа, прямо, с под отладчика.
Если первый способ сложный для вас, то: можно сгенерировать, себе ключ, применив возможности отладчика DnSpy (я выше про это говорил). И так, возвращаемся к нашей функции ValidateUnlimitedSerialNumber. Как мы уже знаем: Она отвечает за проверку ключа (верный или нет). Для того что бы получить ключ нам нужно поставить точку останова, в конец функции, запустить программу и посмотреть как отработает эта функция (что нам вернет, в конце).

st-soft-13.jpg


В результате, что произошло: Формат ключа мы узнали (определили выше). Тут важно, стоит обратить внимание: Выдуманный ключ, нужно вводить, в верном формате. Если этого не сделать то: функция не отработает до конца и выдаст вам False (запрет). Это за того что, выше, мы выяснили что, в начале функции, идет проверка длины ключа и разделитель.

1. Я ввел (выдуманный ключ, в правильном формате), функция отработала и остановилась на return false (Запрет на активацию). Естественно так как ключ не валидный.
2. Но, в окончании, в отладчике, отобразился правильный ключ активации.

Проверяем активируется программа или нет. И получаем результат:

st-soft-14.jpg

Что бы закрепить материал предлагаю посмотреть видео (Там все доступно показано):

Все манипуляции, с кодом , Видео: ANTI-2.wmv (Имеется и в архиве, на всякий пожарный).


Ну и теперь переходим к третьему способу крякинга - этой программы.

Способ №3: Крякинг, внесение изменений.

Суть этого способа в следующем: изменить код программы так что бы она принимала любой ключ активации (с минимальными правками). Из функции мы убираем ненужный код, а оставляем только return true (то есть делаем что бы она всегда говорила разрешить, активировать 😉 ). Можно было и не убирать весь код, а только изменить в конце функции на return true (Это уже дело каждого, на работу программы это не повлияет). В финале, программа активируется любым ключом, формата: XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX.

st-soft-15.jpg

Ну и для красоты, вставляем свое авторство: Что бы вместо текущего ключа отображалась, нужная вам, надпись. Это не обязательно, но смотрится намного красивее, нежели взломанный софт без инициалов. То есть вот так:

st-soft-16.jpg


Ну и в этом случае, я продемонстрировал, все на видео, советую посмотреть:

Все манипуляции, с кодом, на видео: ANTI-3.wmv (Имеется и в архиве, на всякий пожарный).

Ну и после проделанных манипуляций, способ крякинга, наша программа активируется любым ключом и окно активации имеет вот такой вид. Ну и как замечаете что после активации, текущий лицензионный ключ не изменяется (это очевидно), так как место его вывода мы установили текстовое значение в виде копирайтов (рекламы форума), но программа все равно активируется.

st-soft-17.jpg

Как видите, ничего сложного, главное правильный подход. Какой способ, из 3 показанных, выбрать - решать Вам. Мое дело было показать как это работает, можете сами потренироваться и увидите: все не так сложно как кажется. Исходный код и скомпилированный (исполняемый файл) KeyGen - также прикреплен к файлам статьи.

Несколько нюансов, по этой программе, если кому будет интересно. Желательно, ознакомится.​

1. Данные активации программа записывает в реестр, при смене ключа в том же месте и перезаписывает.

st-soft-18.jpg


2. Тот факт: что программа стучит в интеренет, для проверки ключа активации, ничего не меняет. Если захотите - можно взять и под отладчиком убрать все ссылки (куда стучит программа), просто вырезать.

К примеру вот тут, и таких не много. Просто воспользуйтесь поиском по коду.

st-soft-19.jpg


То есть, после удаление всех ссылок, из кода, что отвечают за активацию - софт все равно будет работать. Единственное что, при таком подходе, придется ключ активации прописать в ручную, в реестре.
То есть взять и добавить строковой параметр в реестр к ключом активации. Что я имею в виду:

1. Если ключа активации, в реестре, по какой то причине нет, то добавляем строковой параметр с именем psk
2. И там, где значение, вводим ваш ключ.

st-soft-20.jpg

После чего софт, также активируется, и будет работать. Тут я оставляю выбор за вами, но факт того что софт побежден равен - 100%. Ну и в окончании, справедливости ради, скажу что вариантов крякнуть этот софт много, я показал Вам три, выбор за вами.

Ну по этой программе я разжевал уже все, проще некуда. Теперь идем далее и приступаем к анализу следующего софта.

st-soft-20.1.jpg

Предназначение: Программа TestsEditor (официальный сайт: http://kompleksprogram.narod.ru) для создания тестов с возможными вариантами ответа (можно размещать тесты онлайн). Более подробное описание на официальном сайте программы.
Версия программы: 1.1 (Актуальная на сегодня).
Софт Exeinfo PE (Анализатор исполняемых файлов), показал что: на программе нет пакера и написана она на C#

st-soft-21.jpg


Но, если открыть исполняемый файл, в отладчике DnSpy, то мы увидим обратную картину, присутствие обфускатора. Такое бывает, что утилита Exeinfo PE
неправильно выдала результат (иногда). Также, неправильно определена разрядность приложения (x32 или x64) - для отладки будем использовать DnSpy X64.

st-soft-22.jpg

Для того, что бы очистить код, использует утилиту de4dot версии 3.1.4. Тут все просто, ничего сложного.
1. Перетащить исполняемый файл на TestsEditor.exe на de4dot.exe
2. После чего, вы, получите очищенный файл TestsEditor-cleaned.exe

st-soft-23.jpg

С мелочами разобрались, теперь приступим к анализу программы. На официальном сайте программы, можно увидеть, что эта программа входит в комплекс программ
(она является основой, так как служит для создания тестов). О покупке софта нет никакой информации, наоборот говорится о том что софт бесплатный.

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

st-soft-24.jpg

Ошибка подключения, может говорить об одном: скорее всего, идет проверка, каких то данных, через интернет (запрос на сайт разработчика). Если их нет то программа выводит сообщения и блокирует все меню. Это я к тому что: возможно, разработчик давал пользоваться софтом бесплатно, но софт был зависим от сайта, после чего взял и отключил доступ (Бывают разные ситуации, причины).

Для того, что бы проверить зависимость программы от её сайта, используем HTTP Analyzer. Снова запустим анализатор (нажимаем на кнопку Start) и после этого запускаем программу, смотрим на полученный результат. И мои предположения оказались верными, программа обращается, по ссылке, к своему сайту и уже от туда идет редирект (перенаправление на http://testsprogram.narod.ru/STS.txt).

А в текстовом файле STS.txt располагается, какая то информация, в зашифрованном виде.

st-soft-25.jpg

Ну хорошо, информацию мы собрали, закидываем программу в отладчик DnSpy. Я предлагаю действовать так, в этот раз, если у нас есть вывод сообщения с ошибкой, то давайте, просто, поищем - вызов этого сообщения. Это, для справки, один из подходов, тут главное включить фантазию.

Переходим к точке входа и видим что тут, сразу же, идет запуск главной формы программы. Далее мы переходим в главную форму (к функциям) и ищем фразу "Ошибка подключения". Может все показаться просто, но далее мы будем анализировать, происходящие, события в коде. И постепенно дойдем до истины, как обычно.

Переход к точке входа и сразу же переход на главную форму (в код).

st-soft-27.jpg

Поиск сообщения и событий связаных с ним. После того как сообщение найдено мы видим структуру кода. Как заметно, что при определенном условии, срабатывает вызов сообщения в котором фигурирует method_4. Также, замечаем что method_4 работает с флагом как True так и False. И вызывается он, в разных местах, это наводит на мысль - нужно посмотреть внутренности. Этим я навожу на мысль что скорее всего именно с этим методом завязаны эти ограничения (Блокировка меню программы).

st-soft-28.jpg

Переходим в method_4 и смотрим на его код. А тут все просто, именно то что нам нужно, то есть это и есть наши ограничения (события что с ними связаны). Сначала проверяются условия, если они не соблюдаются, то программа говорит визуальному компоненту, на форме, Enabled = false. То есть запрещает его использования, делая его неактивным.

На картинке
1. Условие что делает активным или неактивным меню "Файл" в программе.
2. Другие условия что также отвечают за (True или False) визуальных компонентов программы. При этом параметр bool_8 играет у нас роль выключает и включателя. Выходя из увиденного можно, смело, изменить этот параметр, то есть принудительно установить параметр True (Разрешить). После этого, у всех, запрещенных (зависящих от bool_8 ), визуальных компонентов, параметр Enabled будет равен True.

st-soft-29.jpg


Что я имею в виду и как это делается - посмотрите на видео. В финале мы изменили параметры и получили вот такую картину.

st-soft-30.jpg

Для закрепления материала предлагаю посмотреть видео.

Все манипуляции, с кодом, на видео: TestsEditor.wmv (Имеется и в архиве, на всякий пожарный).

А вот сообщение, что появлялось при запуске программы, заменили на свой текст "Рекламного характера" и добавили копирайты в название программы.
К примеру, если сообщение не нужно, вообще, то просто убираете вызов сообщения в коде и при запуске программы не будет никакого сообщения.
Выглядит все это вот так (после изменения в коде):

st-soft-31.jpg

При запуске программы, появляется наше сообщение, что софт взломан и реклама форума xss.pro, все меню разблокированы. Победа! 😉.

Небольшое дополнение:
1.Вы можете спросить: А что будет если сайт разработчика перестанет работать, ведь туда же обращается программа ?. Ответ прост, ничего не будет, все будет работать как работало. Даже, если вы вырежете ссылки на сайт разработчика софт, все равно, будет работать. Можете это сами проверить, это так для справки.

2. Остальные программы, этого разработчика, я также добавил к файлам статьи (на всякий пожарный) - они без ограничений. На тот случай, если его сайт перестанет работать. Тогда, в арсенале, будет полный комплект программ что требуются для создания тестов.

И с этим софтом разобрались, переходим к следующей программе.

Предназначение: Программа File Juggler (Официальный сайт программы https://www.filejuggler.com) для автоматической сортировки файлов по папкам (С применением правил, умеет: переименовывать, перемещать, копировать, удалять файлы и многие другие функции). Более подробная информация на официальном сайте.
Версия программы: 2.0.22 (Актуальная на сегодня).
Софт Exeinfo PE (Анализатор исполняемых файлов), показал что: на программе нет пакера и написана она на C#

st-soft-33.jpg


Теперь осталось вычислить ограничения в программе, так как на официальном сайте, ничего, не сказано. Тогда запустим программу и посмотрим визуально, как обычно. При запуске программы, нам показывается регистрационный диалог, с намеком что триальний (пробный) период программы - 30 дней. То есть, по сути дела: Все функции доступны, пока не закончится триал.

st-soft-34.jpg

Поскольку, мы выяснили, что при запуске программы проверяется ключ активации то будем копать в этом направлении. Закинем программу в отладчик DnSpy, перейдем в точку входа и посмотрим, где именно, вызывается проверка. В нашем случае это самый идеальный способ, хотя (забегая немного наперед), сломать софт можно по разному.

Опустившись, немного по коду, так как функция у нас тут не одна, обращаем внимание на класс LicenseHelper.

st-soft-35.jpg

Так вот, если перейти и посмотреть код далее, то получается очень интересная картина. Сейчас постараюсь все пояснить, так как тут: Если пойти неправильным путем то работы добавиться не мало. Это про то что я ранее, всегда, говорил - анализировать и делать правильные решения. Заметно, что в классе LicenseHelper много функций, где используются криптографические алгоритмы. Что я имел в виду под фразой "неправильным путем": IsLicensed получает статус выходя из манипуляций в IsEvaluationLicense.

st-soft-36.jpg

Так вот, если перейти в код IsEvaluationLicense то мы переместимся в динамическую библиотеку LogicNP.CryptoLicensing.dll (файл что расположен возле исполняемого файла программы).
1. Она под обфускатором.
2. Функций там не мало, все завязано с проверкой ключа, различные крипто-манипуляции.
3. Что бы анализировать динамическую библиотеку, сначала нужно снять обфускатор.

Так тоже можно делать, если есть в этом надобность, в нашем же случае можно пойти путем - намного проще. Выше я говорил про IsLicensed, так вот: Скажу простым языком, как бы там не крутился код, в динамитеской библиотеке, финальное решение принимает IsLicensed (То есть активировать лицензию или нет). Тогда, есть смысл, посмотреть на его код и помочь ему правильно принять решение, в пользу крякера 😀. Это вариант лучше, нежели копаться в крипто-алгоритме. То есть тут на выбор, я только подсказываю, более проще вариант, тем более что это сработает и времени уйдет намного меньше. Плюс еще в том что: при таком подходе, патчить мы будет только исполняемый файл а не динамическую библиотеку (или то и другое, в зависимости от ситуации).

st-soft-37.jpg

Так вот, переходим в IsLicensed и тут, изменяем параметр, на return true. То есть, говоря простыми словами, заставляем программу активироваться без всяких ключей. При этом, при таком подходе, программа запустится, сразу же - активированная. Ну давайте это проверим, изменили параметр, сохранили в исполняемый файл.

st-soft-38.jpg


А теперь, запускаем, модифицированную, программу и смотрим. При запуске программы никаких окон, с регистрацией, не запустилось. Программа активировалась, и в окне "О программе" установлен статус Registered to. Понятно, что на кого зарегистрирована программа, отображаться не будет. Почему ? - потому что это патчинг, информация о лицензии не загрузилась. Выглядит все это дело вот так:

st-soft-39.jpg

Ну если, для вас принципиально и хотите навести красоту, добавив авторство или какой ни будь ключ то: Переходите в код окна About (О программе). И добавляете какую угодно информацию, то есть сделать вот так:

st-soft-40.jpg

После чего, текст в окне About изменится и результат будет таким.

st-soft-41.jpg

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

Все манипуляции, с кодом, на видео: F-juggler.wmv (Имеется и в архиве, на всякий пожарный).
После всех манипуляций, программа активирована и в финальном варианте будет выглядеть вот так:

st-soft-42.jpg

Как видите, самое главное, правильно оценить ситуацию, далее все пойдет как по маслу ;). И эту программу победили, идем далее и рассмотрим еще одного пациента.

Предназначение: Программа Сsv Еasу (официальный сайт: https://csveasy.com) для работы с громадными CSV файлами. Как говорит разработчик: софт может открывать файлы что состоят из 10 000 000 строк и 10 000 столбцов. Более подробное описание на официальном сайте программы.
Версия программы: 1.1.16 (Актуальная на сегодня).
Софт Exeinfo PE (Анализатор исполняемых файлов), показал что: на программе нет пакера и написана она на C#

st-soft-44.jpg


На официальном сайте, программы, написано что триал версия доступна в течении 10 дней. Это вся информация что нам доступна. А когда закончится триальный период то программа будет ограничена в обработвке строк (не более 1000, невозможно сохранить). Забегая, немного наперед, скажу что: Эту программу можно пролечить по разному. Можно подобрать ключ активации, можно сделать так чтобы она принимала любые ключи активации (неверные). А можно сделать так что бы она сразу была зарегистрирована, то есть никаких ключей не нужно, запустил сразу же лицензионная версию. Вот и по этому пути, сегодня, мы пойдем.

При запуске программы, появляется форма, где сообщается что у вас триальная версия программы и предлагается купить её. А в меню Help - Enter License Key, есть
форма активации. Если ввести неверный ключ то программа проверит его и покажет сообщение, ну это естественно. Вот от этого мы будет и отталкиваться.

st-soft-45.jpg

Сейчас, я покажу, кратчайший путь к взлому этого софта. И так, форма активации вызывается с меню About (О программе), давайте перейдем в код под отладчиком и посмотрим что там происходит. А код About, я специально, разделил на блоки (На картинке). Так удобней и понятней будет воспринимать информацию.

st-soft-46.jpg


Так вот, что происходит, в каждом блоке:
1. Отображается информация о продукте: название, версии программы, описание.
2. Если значение (что вернет функция ValidLicense) неверное то мы получим Триал-Лицензию.
3. Загружается лицензионный ключ. То есть принимается значение ключа и после 5, 10, 15 символов вставляется разделитель (знак -).
4. Типы лицензии, при условии.
5. Типы лицензии устанавливаются, в зависимости, от того что вернет нам функция GetLicenseType.

Думаю понятно ?, все что нам нужно у нас есть. Теперь, давайте перейдем в GetLicenseType и посмотрим на код, после чего будет делать выводы и изменения, в зависимости от ситуации.

st-soft-47.jpg

А тут, у нас, в зависимости от условия, активируется тип лицензии: Для одного пользователя или универсальная. Но по стандарту установлена триальная лицензия. Нам, никто не мешает, изменить код так чтобы активировалась, сразу же, максимальная лицензия. Делается все это вот так, то есть 99% кода просто убирается. Зачем нам эти условия, если мы хотим сразу максимальную лицензию. В результате код выглядит вот так, после изменения, то есть, устанавливается единый статус лицензии (без лимитная).

st-soft-48.jpg

Но тут, есть еще один нюанс. Так как, мы убрали 99% кода, то если не подправить значения в About (Где загружается информация о лицензии), то при открытия этого окна возникнет ошибка. Последствия будут такие: информация о лицензии не отобразится а программа выдаст исключения. Я имею в виду вот это:

st-soft-48.1.jpg

Что бы этого избежать нужно внести минимальную правку в коде About. А именно: Settings.Default.LicenseKey; заменить на текстовое значение, то есть выдуманный, свой ключ. В моем случае я изменил так: string licenseKey = "CrackCrackCrackEXE-, ну и по желанию добавить копирайт. Выглядит это вот так:

st-soft-49.jpg

После чего, при открытии информации о лицензии, в окне About, никаких ошибок, не будет.Для укрепления материала советую ознакомится с видео, там все от а до я показано.

Все манипуляции, с кодом, на видео: CEasy.wmv (Имеется и в архиве, на всякий пожарный).

Финальный вариант софта, после всех правок, будет выглядеть вот так.

st-soft-50.jpg

И с этой программой разобрались.

Несколько слов, после всего проделанного, скажу так:
В этой статье, я старался, рассказать все, максимально доступным языком. Даже мелкие нюансы, мы разобрали, для кого то просто а для кого то сложно. Все мы разные, как по знаниям так и по восприятию. Мое дело, заключается в пояснении материала: максимально просто, доступно, что бы понимал каждый человек. На сегодня у меня все, надеюсь было интересно?!. :).

В архиве, находятся:
st-soft-51.jpg


KeyGen (генератор ключей для AntiPlagiarism.NET \ исполняемый файл) Virustotal: https://www.virustotal.com/gui/file/6888dbed1e7de86ffd8c9c24d80e9d317fc2eabaf0bf060f17b2f43f406f5a80

Инсталляторы Virustotal:
AntiPlagiarism.NET \
Virustotal: https://www.virustotal.com/gui/file/d6ed511644eb68a3ed2892bee962a37eae35620f54212592a86fff7e35c37778
TestsEditor \ Virustotal: https://www.virustotal.com/gui/file/744d528e047e90c68e68472f702d3d8295d6eec818750f60a2f25c552aa3ce60
Filejuggler \ Virustotal: https://www.virustotal.com/gui/file/eb80f7bf7256c2860e7a607caef313ba897f55fcab4f591422c062a760429d7a
Сsveasy \ Virustotal: https://www.virustotal.com/gui/file/960cd1c69419b152b74e45fc8557726ad8de7b7e1dcc531aeb18a4e909a1f648


Инструменты для анализа:
HttpAnalyzer / virustotal:
https://www.virustotal.com/gui/file/f25541dee8f859b62c642d2e6e835c247900b5bc94a00cdbc4d894bab83796dd
DnSpy x32 / virustotal: https://www.virustotal.com/gui/file/7ce05f1aafaaa87d046bbad1b07801777e724251b084bc7f70cef71c98b08105
DnSpy x64 / virustotal: https://www.virustotal.com/gui/file/cc15f3f7836f5c976e058aabdd55af8635b484a6b9a5e94a2cb048856965f9e2
ExeinfoPe / virustotal: https://www.virustotal.com/gui/file/32e6df44a529d3bd543aae01365852990c0e7f3b4f84b5a7f9d7dfc18d6a46fd
de4dot(x32).exe / virustotal: https://www.virustotal.com/gui/file/1ef4d880b16efb49271463e1b9c0de68e637320c1be40f1e7f1603538f3e289d
de4dot(x64).exe / virustotal: https://www.virustotal.com/gui/file/89582c764c5cdeb58656a60f8419fdcd8c5eb6caa2e5f332d2658e89555693cb

Файлы к статье:

Скрытый контент для зарегистрированных пользователей.
 
Ждем курс по реверсу С бинарей . Помню что тс говорил про сложность и необходимость базового знания С и асмы , поэтому предлагаю прикрепить в начале материалы для самостоятельного изучения .
 
Спасибо за ваши труды, было очень интересно. Благодаря вам я узнал много нового, жду новых статей. Хотелось бы ещё углубиться в эту тему и разобрать более сложные программы и их защиту.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх