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

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

-EXE-

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


Автор статьи: -EXE- (Профиль: https://xss.pro/members/275453/)
Статья для форума: xss.pro​

Продолжение, цикл статей по реверс-инжиниринг для начинающих. 14 статья, в которой, вас ждет, много чего интересного. Кстати, как я ранее говорил -
анализировать мы будем не только программы написанные на С#. Так вот это случится , но еще 2 статьи по С#. А в сегодняшней статьи рассмотрим не менее
интересные программы.

Кто читал предыдущие, мои статьи, тот увидел различные алгоритмы защиты. А подбирая сегодняшний материал я подготовил, тоже, интересный список софта. В некоторых, из программ, проверка (активация) может вызываться не только с основного исполняемого файла но и с динамических библиотек (файлов что имеют формат типа .dll). Ну и конечно же, все будет зависеть от наших знаний и выбора пути, по которому мы пойдем. Поскольку, не всегда все просто, бывают случае когда исполняемый файл или динамическая библиотека - занимают не маленький размер. А это, в свою очередь, вызывает некоторые неприятности, за громадной структуры кода. Бывают, даже, такие ситуации когда декомпилятор у отладчика DnSpy трещит при преобразовании кода, можно так сказать. И когда вы начинаете искать, разбирать логику, то сталкиваетесь с ситуацией когда: декомпиляция происходит очень долго. Все за того что: код у софта километровый. Ну а если, представить ситуацию,
когда защита завязана не только в исполняемом файле, но и в dll, тогда новичкам будет непросто.

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

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

Первая программа, защиту которой будем анализировать, CompаrseR 1.2.1 (Официальный сайт: https://parser.alaev.info/buy/). Как говорит разработчик программы -
это софт не имеющий аналогов, предназначенный для глубокого изучения индексации сайта. Среди seo-оптимизаторов, достаточно популярный софт, что обладает различными настройками.

Имеет парсер Яндекс, парсер Google и мощный краулер. Более подробную информацию о функционале программы, можно почитать, на официальном сайте. У нас же другая цель - снять ограничения с программы.

st14-1.jpg

И сразу, по стандарту, как мы делали в предыдущих статьях, проверяем ее на присутствия дополнительной защиты: пакер, протектор, обфускатор кода.
Утилита Exeinfo PE (Анализатор исполняемых файлов), показала что: программа написана на C#, это 32-битное приложение и дополнительной защиты не обнаружено. Ну и не смотря на рекомендации (4-пункт на картинке, мы будем использовать, как обычно, отладчик DnSpy). Отлично, ну а теперь, приступим к ознакомлению с информацией, касающиеся ограничений, на официальном сайте программы. Что бы иметь основу, от которой будем и отталкиваться.

st14-2.jpg


На сайте программы, разработчиком, указаны ограничения демо-версии. Если перейти в раздел Демо-версия, то мы узнаем что: Программа собирает информацию, только, с первых 150 страниц. Ну и не имеет механизма самообновления. Вот в принципе и вся информация что нам доступна, именно то что нужно - для начала.

Поскольку про активацию, демо-версии, нет никакой информации: я предлагаю ознакомится визуально с меню программы. Может, где то, есть форма активации или визуально видны ограничения. Запустив программу, открыв меню настроек мы замечаем такую картину: В настройках Краулер, Яндекс и Google: Присутствует одно и то же ограничение. А именно неактивный чекбокс (птичка) и возможность указать количество результатов. Это именно то ограничение про которое написано на официальном сайте. То есть, при любом раскладе, софт выдает первые 150 результатов по сайту и останавливается.

st14-3.jpg

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

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

Для начала, давайте запустим программу HTTP Analyzer, что производит мониторинг https \ http трафика в режиме реального времени. И проверим обращается ли программа к своему сайту, если обращается то какие данные отправляет и получает. Запускаем анализатор, нажимаем на кнопку Start, после чего запускаем наше программу. Да, действительно, программа обращается к своему сайту, после чего выводится сообщение что софт демо. Но ничего особенного не происходит, просто проверяется версия программы и отклоненный ответ 301. Пока что это все что нам удалось определить, но руки не опускаем.

st14-4.jpg

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

Теперь возникает вопрос: Как будем действовать, как убрать это ограничение, если зацепиться нам не за что ?.

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

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

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

st14-5.jpg

Но вот в InitializeComponent(), сам StartupUri указывает на пользовательский интерфейс для отображения при запуске приложения. А в самом конструкторе объекта Uri указан файл, с дескрипторным интерфейсом окна. Второй параметр отвечает за поиск по относительному пути от корня местонахождения сборки. Так вот, как раз все что нам нужно это перейти в MainWindow, что мы и сделаем.

Как мы уже знаем и понимаем что при запуске программы, а это у нас демо-версия, срабатывает и ограничение в 150 ссылок. То есть, выходя из этого, мы можем поступить очень радикально (решение на пролом). Поискать в коде MainWindow, например значение "> 150".

Важно, обратите внимание: Почему именно "> 150" а не "150". Потому что выходя из логики если ссылок больше 150 то должно срабатывать ограничение (остановка работы программы). Ну давайте поищем и посмотрим был ли я прав или все же нет. Что и требовалось доказать, но не спешим принимать действия, почему ? - сейчас я все прокомментирую и подскажу.

st14-6.jpg

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

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

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

bool isDemo = this.IsDemo, что в свою очередь имеет флаги (True и False). При этом эти флаги, в данном примере, отвечают за перевод программы в Демо или Лицензию, скажем так для простоты.
Так вот условие if (если) в котором включается это ограничение, срабатывает только в случае если bool IsDemo = true. А если bool IsDemo = false то никаких ограничений не будет.

Не верите ну давайте это проверим. А именно переходим в IsDemo и изменяем параметр True на False.

st14-7.jpg

После чего сохраняем результат в исполняемый файл, запускаем программу и смотрим что получилось. И о чудо 😉, как видите софт из демо режима - переместился в лицензионный а надпись демо пропала.
Мало того: Неактивные настройки стали активными и теперь можно ставить параметры без ограничений. Как видите, про то что я говорил выше: Проверка встречается не в одном месте, мы правильно исправили логику, тем самым избавили себя от лишней работы. Одно точечное изменение, но есть одно НО (Опишу ниже что именно)!

st14-8.jpg

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

st14-9.jpg

Но сообщение, реально будет раздражать при каждом запуске программы, выглядит все это не очень красиво. И его нужно убрать и навести красоту в финале. Делается это просто, что бы убрать это сообщение: Ищем по коду фразу из этого сообщения, например "Текущая версия". И видим что за вывод этого окна отвечает функция Update_Check. После этого, решение можно принять самое простое и радикальное, просто убрать весь код функции.

st14-10.jpg

Для того что бы закрепить материал посмотрите обязательно видео, я там все показал от и до. Все про то что мы говорили:

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


Ну и внеся все изменения, добавив нужные копирайты, я как обычно добавил свои и форума xss, софт работает на все 100%. Нет никаких всплывающих окон с демо, обновлений и прочих неудобств. Визуально, финальный вариант выглядит вот так, для теста я даже собрал 500 ссылок, что больше ограничения что было:

st14-11.jpg

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

Эту программу? я показал как победить, приступаем к следующему пациенту. Это уже другого направления программа, но будет полезна для своей аудитории.

Следующая программа Pop Art Studio 10.2 (Официальный сайт: https://popartstudio.nl/Fotoview/order_ru.htm). Программа для работы с фотографиями с применениями
различных эффектов. Можете открыть фотографию любого формата и отредактировать, распечатывать и сохранять. Поддерживает форматы TIFF, PSD, BMP, JPG, GIF, PNG. Сохранение идет без потери качества.более подробную информацию можете почитать на официальном сайте, наше дело вылечить её.

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

Как видите интерфейс программы напичкан разным функционалом и присутствует Русский язык, что приятно.

st14-12.jpg

Эту программу, также, чтобы не терять время, проверяем на наличие дополнительной защиты: протектор, пакер, обфускатор кода.
Exeinfo PE (Анализатор исполняемых файлов), показала что: программа написана она на C#, это 32-битное приложение и дополнительной защиты не обнаружено. 4-пункт, на картинке, (рекомендации по отладчику) а мы будем использовать, как обычно, отладчик DnSpy).
Сначала ознакомимся с информацией, касающиеся ограничений, на официальном сайте - программы. Как и с предыдущей программой. Что бы иметь основу, от которой будем и отталкиваться.

st14-13.jpg


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

Но перед тем как приступить, хотел отметить, что при запуске программа немного подгружается и не так быстро запускается. Это наводит на мысль, не проверяет ли она какие то данные при запуске - через интернет. Возможно ключ активации или что то в этом роде. Как и с предыдущей программой, под это дело, будем использовать HTTP Analyzer, что производит мониторинг https \ http трафика в режиме реального времени. В целом, не обязательно использовать именно этот анализатор их полно, главное понимать что вы делаете, это чисто для справки.

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

st14-14.jpg

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

st14-15.jpg

А теперь, давайте закинем программу в отладчик DnSpy и посмотрим на неё изнутри. Так как выше, утилита Exeinfo PE не определила разрядность исполняемого файла, то при анализе, отладчик нам подскажет что это 64-Битное приложение. Закидываем программу в отладчик и переходим к точке входа (Правой кнопкой, мыши, по программе - перейти к точке входа).

st14-16.jpg


И тут же, мы сразу же, перемещаемся на главную форму программы, то есть FormMain. Как можно заметить, список функция тут очень огромный, можно и запутаться. Но мы же помним ?, что если: при запуске программы, у нас, загрузилась форма активации то значит и при запуске проверяется ключ активации. В нашем случае это Имя и Код, вот как раз в этом направлении и поищем, в начеле функции, куда мы перешли. Это очень полезная информация, на такие вещи всегда нужно обращать внимания и использовать. Нежели бегать по коду и скать не зная что 😉.

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

st14-17.jpg

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

Переходим и наблюдаем картину, которую сейчас прокомментирую, главное тут не спешить.

А у нас тут ситуация такая:
  1. Функция GetRegCode вызывается с динамической библиотеки FotoviewLibrary.dll что расположена возле исполняемого файла программы Andy.exe
  2. Это у нас типы лицензии, что активируются, в зависимости от регистрационных данных. Можно сказать типа лицензии, так будет понятней.
  3. По стандарту, у нас статус у лицензии .NONE, то есть нет, то есть не активирована. Ну и если активирована то в staticVariables.regName записывается регистрационное имя.

А ниже, в этой же функции, идет код проверки регистрационных данных. И там решается судьба активации.

st14-18.jpg

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

st14-19.jpg

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

st14-20.jpg

Кстати, спросите вы, меня: а почему именно .BATCH а не другой статус лицензии ?. Да все просто, на официальном сайте это максимальная лицензия что стоит - 199 евро на один комп. Как говорится: Когда есть возможность увеличить до максимума, то почему бы и нет 😀. Ну и вот после изменений мы имеем:

1. Статус лицензии Batch Edition. Самой максимальной, дорогой я бы сказал.
2. Красиво отображается на кого зарегистрирована.
3. На картинке, для теста, моего профиля с форума, нет никаких водяных знаков.

Можете сами в этом убедится.

st14-21.jpg

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

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


Результата мы добились, на все 100%, кстати (не забываем про бонус) все остальные программы, этого же разработчика, ломаются таким же способом. Точно же таким, никаких отличий, если есть сомнения проверьте и убедитесь сами. И не забываем, чисто для справки, пропатчили мы только динамическую библиотеку FotoviewLibrary.dll, в которой хранился - секрет активации ;). По этой программе, у меня тоже все, приступаем к анализу следующей.

st14-22.jpg

Следующая программа DMS-Shuttle 1.4.0 (Build 144) (Официальный сайт: https://dms-shuttle.com). Программа для передачи файлов (структур папок) между общими папками, файловыми серверами, локальной файловой системой и SharePoint Online / Office 365 или OpenText LiveLink. Более подробную информацию почитаете на официальном сайте программы. Мы же приступим к своей основной цели - взлому программы.

С этой программой, поступим, как и с остальными: проверим на наличие дополнительной защиты: протектор, пакер, обфускатор кода. Ну и не смотря на рекомендации (4-пункт на картинке): мы будем использовать, как обычно, отладчик DnSpy).Наш анализатор (Exeinfo PE) - показывает что программа написана на C#, это 32-битное приложение и присутствует дополнительная защита в виде .NET Reactor 6.x - 6.9.
st14-23.jpg


NET Reactor снимается, в большинстве случаев, специальнимы инструментами (утилитами), в сети их полно. Под эту программу я прикреплю, один из инструментов, также. Бывают, конечно, исключения, где нужно поработать руками если встречается NET Reactor, но к этому мы еще вернемся в следующих статьях.

В нашем же случае, мы применим утилиту de4dot, перетащив исполняемый файл DMS-Shuttle.exe на de4dot.exe и в результате получим очищенный от зла :) файл DMS-Shuttle-cleaned.exe. После этого, нужно заменить, оригинальный файл - очищенным и приступить к анализу. Как закончим с этой программой, в конце посмотрите видео, там все эти нюансы я показал.

st14-24.jpg

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

Ну а теперь запустим программу, посмотрим на принцип активации и сделаем выводы, составив план действий. При запуске программы, сначала запускается окно активации (А программа нет). Заметно что вычисляется id системы (windows), после чего, нам предлагаю ввести ключ активации (или запустить триал). Тут есть один нюанс, что кнопка регистрации становится активна, если длина ключа = 25 символам. Ну и естественно введенный мною, выдуманный ключ, неверный.

st14-25.jpg

И так, перед тем как начнем анализ, я скажу следующее: Я покажу несколько способов взлома этого софта:
  1. Вариант 1 - Не такой красивый, так как не будут отображаться регистрационные данные.
  2. Вариант 2 - Способ где мы заставим программу сгенерировать регистрационный ключ, при запуске, и активироваться.

А какой из вариантов выбрать, будете решать вы, мое дело показать.

ВНИМАНИЕ: И у разработчика есть еще программы. Так вот, они взламываются точно же таким способом. И этот разработчик поленился и сделал аналогичную защиту во второй своей программе. Это я говорю для справки, если будет желание то можете попробовать и убедиться.

А мы переходим к Вариант 1.
Так как мы уже знаем, что форма активации, загружается при запуске программы, то давайте поищем её вызов под отладчиком. Поскольку мы выяснили что софт у нас 32-битный то и отладчик будем использовать 32-битный.

Закидываем программу в DnSpy x32 и переходим к точке входа (Правой кнопкой, мыши, по программе - перейти к точке входа).

st14-26.jpg

Замечаем, что при загрузке главное формы, идет загрузка .CheckProbStart при условии. Давайте перейдем и посмотри при каких условиях активируются флаги = true и false. Только после этого можно делать, какие то, выводы. Переходим в функцию CheckProbStart и ставим точку останова в начала функции.

st14-27.jpg

Как видим, что, по пути C:\ProgramData\DMS-Shuttle.com\DMS-Shuttle создаются и проверяются файлы лицензии. Вначале идет проверка и если условия не соблюдаются то мы получаем значение флага - false, если все ок то true. Если возниклю исключение, неверный ключ или что то еще, то мы получаем, однозначно, значение флага false.

А в конце, в зависимости от флага, функция принимает решение true или false. Так, в чем вопрос ? 👍, давайте ей поможем, принудительно, принять правильное решение. 😀 А именно, весь код (функции) чистим и оставляем только return true. Таким образом, как бы там не сложилась ситуация, программа запустится без сомнений - Активированной.

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

st14-28.jpg

А можно сделать что бы все выглядело красиво и окно с информацией на кого зарегистрирована отображалось, переходим к Вариант 2:

Если поискать что то связанное или намекающее на лицензию, активацию то мы находим функцию CheckRegister что в свою очередь проверяет данные регистрации.
В начале, заметно что длина строки (ключа) должна быть 25 символов. Помните, я про это говорил в начале ?, когда мы проводили анализ софта. Так вот, эта функция также работает и принимает решение false или true в зависимости от ситуации.

st14-29.jpg

Тут, если хотите, уберите весь код и замените на return true или же не трогать код и просто все флаги false заменить на true. Какой вариант удобней, это уже не принципиально, так как софт запустится, активируется автоматически и отобразит информацию о лицензии. Выглядеть все это будет вот так:

st14-30.jpg

Ну и для закрепления материала - видео. Но для разнообразия, тут показал правку кода функции CheckRegister (именно флагов, без удаления всего кода).

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



В финале, вывод какой: При использовании варианта 1 или 2 программа будет запускаться на любом пк, никакой зависимости от железа компьютера, уже, не будет.
Можете сами поэкспериментировать, я специально показываю разные варианты подхода. Выбор за вами, а мы идем далее и приступаем к анализу следующего пациента.

st14-31.jpg

Программа SeekFast 4.10 (Официальный сайт: https://seekfast.org/buy-now). Программа для поиска файлов на вашем компьютере (используя различные параметры).
Полное описание возможностей можно посмотреть на официальном сайте. А мы приступаем к делу.

И в начале, проверим программу на наличие дополнительной защиты: протектор, пакер, обфускатор кода. Ну и не смотря на рекомендации (4-пункт на картинке): мы будем использовать, как обычно, отладчик DnSpy).Наш анализатор (Exeinfo PE) - показывает что программа написана на C#, это 32-битное приложение и дополнительной защиты нет.

st14-32.jpg


Если посмотреть, на официальном сайте, про ограничения бесплатной версии то она ищет только 50 файлов одновременно. Теперь давайте запустим программу и посмотрим как она активируется. И что бы не терять время, проверим активацию, при запущенном анализаторе трафика - HTTP Analyzer. Что бы узнать проверяется ли ключ на стороне сервера (Сайта программы).

st14-33.jpg

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

Давайте перейдем в точку входа (Правой кнопкой, мыши, по программе - перейти к точке входа) и поищем, что-нибудь, что напоминает нам о лицензии или активации.

st14-34.jpg

  1. Это у нас точка входа.
  2. В обозреватели сборок, ну прям в глаза бросается класс ClassFastSecurity. Ну его просто не заметить невозможно ;).

И тут у нас список функций, что взаимодействуют между собой. Теперь нужно выбрать правильное решение. Как заметно, что функция ActivateLicenseKey делает запрос на сайт разработчика, проверяет ключ и в зависимости от его типа - присваивает тип лицензии. На 3, 20, 150, пользователей.

st14-35.jpg

А функция CheckLicense, проверки лицензии, вызывает функцию ValidateLicenseKey.

st14-36.jpg

Давайте перейдем в функцию ValidateLicenseKey и посмотрим на события. То есть, какие же решения там принимаются.

st14-37.jpg


Тут сейчас поясню, разработчик, зашил просто в программу , в функцию CheckControlKey, список своих клиентов (Id, ключей, в зашифрованном виде). Список в этой версии настолько громадный при декомпиляции этой функции, отладчик просто, у меня, висел не одну минуту :). То есть грузился и грузился и в итоге там 1606 строк, что бы не соврать.

Получается, что при запросе в сеть, они проверяются и в программе. Если такой (клиент) есть то значение num (в функции ValidateLicenseKey) равно 1.
А если нет то num = 0. А функция принимает решение, в зависимости от флага num. То есть, я имею в виду, что в конце функции, return num. Это тоже самое что (Разрешить или Запретить или Активировать или True).

Так вот, что бы программа всегда чувствовала себя зарегистрированной нужно:
1. Убрать весь этот код, эту кашу, с функции ValidateLicenseKey.
2. И прописать только return 1, то есть дать добро на регистрацию программе (без всяких вопросов).

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

Для укрепления знаний, под эту программу видео, с демонстрацией изменений.

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

Ну что подведем итоги (ВАЖНО):
  • Я специально, разжевываю, все до мелочей, там где это нужно было. Так как у некоторых людей возникают вопросы (Значит есть и те кто много еще чего не освоил).
  • Напомню еще раз :smile10:, я ранее говорил и свое слово сдержу, еще пару (2) статей по C# и я начну статьи по Асму, взлому программ написанных на Delphi, C++ и не только. Написал это в статье за того что некоторые, упорные люди ;), задают одни и те же вопросы. У меня обид нет, имейте терпение, ваше мнение тоже УВАЖАЮ! 👍:smile10:

Всем хорошего настроения, на сегодня у меня все.:cool:


В архиве, находятся:
Arch.jpg


Инсталляторы Virustotal:

Инструменты для анализа:

Файлы к статье:
Скрытый контент для зарегистрированных пользователей.
 


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