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

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

-EXE-

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

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

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

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

Обзор защиты программы WebArchive Downloader: Версия скачана с официального сайта программы и на момент публикации, этой статьи, является актуальной.
Разработчик \ Ссылка на официальный сайт: http://www.webarchivedownloader.com/ru/download.html
Версия программы: 1.5.0
Предназначение программы: Программа для скачивания архивов веб сайтов с интернет архива http://web.archive.org/. В программе присутствуют различные, удобные фишки. Например выбор периода парсинга по годам, многопоточный режим парсинга и не только это.
Защита \ Принцип активации : Принцип активации состоит из проверки ключа через интернет. Остальные нюансы разберем уже по ходу анализа.

WebAr-1.jpg

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

И так какие же у нас целы:

Первый вариант (Более сложный):
  • Пропатчим программу и напишем собственный KeyGen. Сделаем так что бы программа принимала наши ключи активации (с авторством и рекламой форума xss.pro).
  • Перепишем принцип активации программы, с внесением множественных поправок в код, для реализации задуманного. Этот вариант будет полезным в том случае: если вы не захотите сливать программу в интернет а только будете выдавать ключи активации. И только тот, у кого ключ активации, подходит под ID системы, сможет пользоваться полнофункциональной версией.

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

Но сначала давайте проверим, используя утилиту Exeinfo PE (анализатор исполняемых файлов, динамических библиотек (Файлов формата .dll)), нет ли дополнительной защиты на исполняемом файле.

WebAr-2.jpg

1. Имя нашего, анализируемого, исполняемого файла: WebArchiveDownloader.exe
2. Разрядность (x32 или x64): x32-Битное приложение Windows.
3. На чем написан софт \ обфускатор или пакер есть ли ?: Visual C# \ Нет, не обнаружено.
4. Советы по использованию отладчика: Но мы будем использовать, как обычно, DnSpy.

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

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

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

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

А именно она работает в два этапа:
1. Сначала создает карту сайта. Своего рода список ссылок (Нажатие на кнопку "Пол. список URL-ов").
2. А уже после этого можно выбрать нужные настройки и нажать кнопку "Скачать".

И вот как раз после нажатия на кнопку "Скачать" - мы получим сообщение, в котором говорится, что демо-версия скачивает не более 20 ссылок. А это уже говорит о том что мы нашли за что зацепится.

WebAr-3.jpg

А далее случается то чего стояло ожидадть: после нажатия на кнопку "Ок" программа скачивает 20 ссылок и останавливается. В общем картина понятна, мы нашли ограничение демо-версии, теперь давайте посмотрим на принцип активации. А уже, в процессе анализа, если всплывут еще какие сюрпризы, в виде ограничений - будем смотреть.

WebAr-4.jpg

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

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

WebAr-5.jpg

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

WebAr-6.jpg

Мои предположения оказались верными и активация программы проходит с участием её сайта. Имеются несколько пунктов что помогут нам в исследовании программы, на это тоже стоит обратить внимание.
  • Первый: В любом случае, при запуске программы, должен проверяться и ключ активации. То есть программа должна понимать когда она зарегистрирована а когда нет. Что бы потом понимать запустить ограничения или нет.
  • И второй: Если перейти в окно "О программе" то мы видим что программа, автоматически, определяет ID Системы (вычисляет параметров железа). А программа активируется только по ключу активации что подходит, только, под этот ID.
После чего, ключ проверяется через интернет. Такое предположение 100% верное, выходя из того что мы видим. К этому пункту, мы еще вернемся, продолжаем далее.

WebAr-7.jpg

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

WebAr-8.jpg

  • В точке входа, происходят, на первый взгляд, не сложные вещи. А именно, сначала проверяется нет ли обновлений программы, функция CheckForUpdate. Нам это не так интересно (Но если обновления не нужны, по какой то причине то проверку можно убрать), продолжаем смотреть далее.
  • Потом идет загрузка визуальных стилей, внешнего вида, это тоже нам погоды не строит. То есть это стандартные процессы для адекватного запуска программы, если сказать проще.
  • А после всего этого идет очень интересный класс Protection, его инициализация (его запуск). А потом уже вызов и запуск Form1 (Собственно это стандарт, форма, окно, наша программа).
  • А далее сразу же завершение, каких то (что там мы пока не знаем) манипуляций в классе Protection.

WebAr-9.jpg

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

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

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

WebAr-10.jpg

А вот дальше становится еще интересней и понятней, так как в окончании функции идет запрос на сервер (сайт программы, где проверяется ключ). Помните мы это проверяли в начале, используя анализатор трафика Http Analyzer.

WebAr-11.jpg


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

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

Вариант 1. Более сложный, но в тоже время и красивый: Написания собственного KeyGen с множественным внесением поправок в код программы.
Тип активации: Генератор ключей будет выдавать ключ по ID Системы (Отображается в окне "О программе"). А программа будет работать только на том компьютере где ключ подходит. То есть мы будем генерировать ключи активации что железо-зависиммые (соответствуют id компьютера).

Посмотрим на окно где программа отображает (получает) Id системы. Оно называется About (как обычно по стандарту), его не сложно найти как видите. Данные туда загружаются также с класса Protection.

WebAr-12.jpg

Так вот, я составил план как будем действовать.
1. Сначала напишем генератор ключей а после этого начнем вносить правки в программу. Сделаем так что бы она принимала ключ активации нужного, нам, формата. Тем более что в программе уже присутствует функция что получает id системы (это только нам на руку).
2. Генератор ключей будет выглядеть вот так. Я напишу его на Delphi (исходник будет прикреплен к статье). Но это только заготовка и её нужно запрограммировать. Дизайн простенький, но зато смотрится красиво.

WebAr-13.jpg

Программируем и вот алгоритм генерации ключа, я сделаем вот таким. Посмотрите на картинку а после я прокомментирую для чего это все дело. Можно и усложнить алгоритм, этому ничего не препятствует. Главное что бы алгоритм, такой же последовательности, был и в исправленном коде программы. Что я имею в виду ?, смотрите дальше и все будет понятно, покажу максимально доступно.

WebAr-14.jpg


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

Принцип генерации ключа таков:
  1. Мы вводим ID системы что показывает нам программа в окне "О программе" в KeyGen.
  2. Идет проверка визуального компонента с ID системы на пустоту, если id есть то продолжаем работу (Этот пункт чисто для красоты).
  3. Все цифры заменяются на указанные буквы и в начало ключа вставляем рекламный текст в виде: -EXE-xss.pro-
  4. На выходе, в моем случае Id системы: B818935FD2B4AC511 то мы получаем вот такой ключ активации: -EXE-xss.pro-BVDVXFMFDEBGACMD. Естественно если ID будет другим то и ключ изменится.

А вот теперь начинается самое интересное :cool:. А именно, будем вносить изменения в программу что бы она принимала такие ключи активации (что зависят от ID системы). Приступи и возвращаемся к нашему классу Protection (в отладчике). Где видим интересную функцию Registration. Код функции не маленький, тут идут проверки что вызываются из других функций, своего рода взаимосвязь между собой.

WebAr-15.jpg

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

WebAr-16.jpg

Первый шаг, на пути к успеху: По факту мы укоротили код до минимума и сделали вот что:
  1. При вводе ключа активации, не важно какого, программа записывает введенный ключ в файл LicKey.txt
  2. После этого идет перезапуск и закрытие приложения.

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

Для чего это нужно узнаете далее, все так и сразу не пояснить. Но походу дела все станет на свои места.

WebAr-17.jpg


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

WebAr-18.jpg


Что тут происходит.
1. Получаем ID Системы и заносим в переменную text
2. Делаем замену цифр на буквы в переменной text.
3. Читаем файл LicKey.txt (Который мы сохранили в первом шаге, в статье). Если строки в файле совпадают с -EXE-xss.pro-" + text то программа активируется.
4. Если не совпадают значит очищаем файл LicKey.txt и программу не активируем (Сделано для порядка, что бы нерабочие ключи не записывались в файл).
5. Если возникло какое исключение, к примеру нет файла LicKey.txt вообще, то также программу не активируем.

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

Но это еще не все, продолжаем.

Проверять, финальный результат, будем в конце, я покажу пример на видео. А пока что продолжаем работу и чистим код что бы навести красоту, порядок и довести до идеала. Обратите внимание на что ключ активации загружается из Protection.RegKey. В том случае если программа активирована. А так как мы изменили принцип активации то: что бы наши ключи активации отображались корректно (в окне About (О программе), после активации, используя KeyGen), нужно немного подправить код.

WebAr-19.jpg


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

WebAr-20.jpg

То есть, мы загружаем ключ, из текстового файла LicKey.txt, в переменную text. И после этого отображаем этот ключ, выводим в программе, в окне "О программе" для красоты. Так было задумано изначально. Теперь, картина становится более понятной и осталось посмотреть что у нас получилось, после проделанных манипуляций.

Ну а теперь давайте посмотрим на процесс, активации и работы программы, в действии. Что бы убедится что мы все правильно сделали.

WebAr-21.jpg


WebAr-22.jpg



Посмотрите видео. WAD.wmv (Видео имеется также и в архиве).

Как видите кнопка активации пропала и программа не останавливается на 20 ссылках (демонстрация работы на тестовом сайте, на видео, выше). Программа принимает регистрационный ключ с авторством и рекламой форума. То есть ключ что начинается с -EXE-xss.pro + ключ активации. Теперь, софт будет принимать только ключи, нашего формата (как и было задумано).

Ну а теперь рассмотрим второй вариант, про который я говорил выше.

Вариант 2. Более простой, смотрится не так красиво. Это патчинг функции что отвечает за активацию программы.
В этом случае никакого генератора ключей не нужно. Мы просто изменим логику функции Registered и все, то есть было.

WebAr-23.jpg

А мы изменили, код функции, на return true. То есть при любом раскладе, сразу при запуске, программа будет - активирована.

WebAr-24.jpg

При таком подходе в окне "О программе" не будет отображаться ключ активации. То есть поле с ключом будет пустое. Смотрится некрасиво и это нужно, обязательно, исправить. Сделать это просто, именно прописать в ручную, вот так:

WebAr-25.jpg

В результате, получаем полностью активированный софт, при запуске программы.

WebAr-26.jpg

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

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

WebAr-27.jpg

Обзор защиты программы Web Archive Downloader 6.0: Версия скачана с официального сайта программы и на момент публикации, этой статьи, является актуальной.
Разработчик \ Ссылка на официальный сайт: https://web.archive.org.ru
Версия программы: 6.0
Предназначение программы: Программа для скачивания архивов веб сайтов с интернет архива http://web.archive.org/. В программе присутствуют различные, удобные фишки в виде выбора периода парсинга, по годам. Собственно то что и в первой программе, только разработчик другой.
Защита \ Принцип активации : Активация через интернет. Часть программы работает на сервере, используя свой скрипт (обращение к скрипту), формата .php.

И сегодня, рассмотрим, еще один, интересный способ активации программы. Не смотря на то что отрезать её полностью от сервера не получится (Но лицензию мы получим :D). А уже по достижению результата, подвиду итоги и укажу плюсы и минусы полученного результата.


Но сначала давайте проверим, используя утилиту Exeinfo PE (анализатор исполняемых файлов, динамических библиотек (Файлов формата .dll)), нет ли дополнительной защиты на исполняемом файле.

WebAr-28.jpg

1. Имя нашего, анализируемого, исполняемого файла: WebArchiveDownloader.exe
2. Разрядность (x32 или x64): Утилита не определила, такое иногда бывает (Но отладчик определил x32-Битное приложение Windows).
3. На чем написан софт \ Есть ли обфускатор или пакер: Visual C# \ Обнаружен обфускатор Phoenix Protector.
4. Советы по использованию отладчика: А мы использовать будем, как обычно, DnSpy.

Так как исполняемый файл программы у нас под обфускатором Phoenix Protector то мы применим деобфускатор под это дело. Для этого нужно просто перетащить исполняемый файл программы на de4dot-x64.exe и получить результат. То есть исполняемый файл в котором код приведен в читаемый вид.

WebAr-29.jpg

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

WebAr-30.jpg

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

Картинка ниже, подтверждение моих слов.

WebAr-31.jpg


Причем, интересный факт того что :D:
Сайт автора имеет адрес: web.archive.org.ru
А сайт веб-архива: web.archive.org

Я веду к тому что адреса практически идентичны, разница только в доменных зонах .org а тут .org.ru. Хороший ход, если присмотреться в анализаторе то это можно заметить. Я, не просто так, показал это на картинке.

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

WebAr-32.jpg

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

WebAr-33.jpg


WebAr-34.jpg

А если посмотреть по функциям в fMain то мы наткнемся на функцию что инициализирует (запускает) fSite_0.method_2 и fSite_0.method_0 по условию. Если условие не соблюдается то приложение закрывается . method_2 и там идет получение системного ключа (Id можно назвать), method_0 () проверка обновлений и подключение к своей базе данных (условно говоря). Стоит и обратить внимание что они вызываются уже с класса fSite. Но вот нам интересно посмотреть на .method_4, что же там за код.

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

WebAr-35.jpg


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

Сначала давайте посмотрим что мы видим. А именно, string_1 это значение с ссылкой именно на тот скрипт что работает на стороне сервера (сайта программы).
А вот string_5 = "fuckhuck" что очень оригинально и можно подумать что автор матерится :D. Казалось бы: что это вообще за прикол, давайте смотреть дальше. Не часто, подобное, можно встретить в коде.

WebAr-36.jpg

Далее, нужно обратить внимание, тут же, на smethod_0, что вызывается с Class0. Он играет ключевую роль в этой конструкции и не просто так тут прописан.
К чему я виду ?: Если исправить код method_4() вот так, то есть сделать return true. То есть при любом раскладе активация успешна.

WebAr-37.jpg

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

WebAr-38.jpg


А все потому что сам вызов Class0.smethod_0 раскидан по всему коду. А мы, только в одном месте, пропатчили софт и радуемся, думаем победа! :D. А Не там то было, когда у Вас закончатся запросы в демо версии (Кол-во запросов в день 50, как сказано на официальном сайте). То программа скажет нам "fuckhuck", а это очень обидно. Хотя идея оригинальная в защите :).


WebAr-39.jpg


WebAr-40.jpg

Ну как теперь быть и что делать ?. Так вот, если перейти в Class0.smethod_0 и поставить точку останова, в начала функции. И посмотреть, под отладчиком, что за параметры нам возвращает функция, то можно убедится что это очередная проверка. То есть суть в чем, мы то программу активировали, но программа общается с .php скриптом. И отправляет запрос сначала на сайт автора программы, там проверочки идут (взломан ли софт или нет и тому подобное). И в зависимости от того да или нет, скрипт передает параметры (часть в зашифрованном виде). Ну и отсылает нас на отдых :D, видя что софт взломан.

WebAr-41.jpg

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

WebAr-42.jpg

То есть, без запроса на сайт программы, она бесполезна и работать не будет, если отрезать (или заблокировать ссылку). Но давайте зайдем с другой стороны и подумаем логически. Выше, я показал, что будет если изменить код method_4() на return true и программа активируется. Но этого не достаточно, так как smethod_0 нам портит всю картину, умышлено портит запрос (Назовем это так). То есть это дополнительная защита в случае того если кто исправит код, как мы выше.

Для того, что бы все заработало, нам нужно почистить весь код smethod_0. В прямом смысле убрать его, да именно убрать, это не шутка ;). Сейчас я покажу как все это делается, но сначала продемонстрирую, на видео, два варианта исхода.

Посмотрите видео. WAD-2.wmv (Видео имеется также и в архиве).

На предыдущем видео показано только сравнение двух вариантов патчинга, правильный и неправильный. И убедились что вариант, номер два, работает как нужно. Для того что бы правильно исправить функцию нужно весь код smethod_0 изменить на return ""; Или return "и тут любое значение"; это не принципиально. А вот method_4() изменяем на return true (как и было). Сохраняем, в исполняемый файл, изменения. Запускаем программу, она активировалась. И теперь работать будет как лицензия (Без ограничений).

WebAr-43.jpg

Вот как все это происходит, на финальном видео - WAD-3.wmv. Показано все от и до (что и где изменить, демонстрация работы после этих действий).

Посмотрите видео. WAD-3.wmv (Видео имеется также и в архиве).


Таким образом, ми получим активированную версию программы, не оплатив ни цента, но потратив немного времени ;). Можно, конечно, попытаться разобрать все параметры, что передает скрипт - софту. После чего, полностью, отвязать программу от сервера разработчика. Тут уже как повезет и это того не стоит.

Ну и теперь подведем итоги по этой программе:
  • Плюс способа патчинга, что мы применили сегодня, в том что: с минимальным вмешательством, в код, мы получили результат (Активированный софт). Конечно же полностью отвязать софт от сервера не удалось, так как имеется и серверная часть (скрипт php) что взаимодействует с работой программы. Но на работоспособность это никак не повлияло.
  • А если бы мы пошли другим путем, выпиливая все проверки из кода, то времени ушло бы больше а результат был бы тот же.

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

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


В архиве, скриншот:
ArchivInfo.jpg


Инсталляторы программ:
WebArchive Downloader v1.5.0 / virustotal:
https://www.virustotal.com/gui/file/d032e3ac27ba39a16142e2737697ac797bd10b95f837951843f279e0dec0b497
Web Archive Downloader 6.0 / virustotal: https://www.virustotal.com/gui/file/84fd30a8ac18f2c6f9191e32b8c39ed12ea1df4800ded7c58237dc58f6bc3794

Инструменты для анализа:
HttpAnalyzer / virustotal
: https://www.virustotal.com/gui/file/f25541dee8f859b62c642d2e6e835c247900b5bc94a00cdbc4d894bab83796dd
dnSpy x32 / virustotal: https://www.virustotal.com/gui/file/7ce05f1aafaaa87d046bbad1b07801777e724251b084bc7f70cef71c98b08105
dnSpy x64 / virustotal: ExeinfoPe / virustotal: https://www.virustotal.com/gui/file/32e6df44a529d3bd543aae01365852990c0e7f3b4f84b5a7f9d7dfc18d6a46fd
de4dot-x64.exe (de_Phoenix) / virustotal: https://www.virustotal.com/gui/file/c8732060e43014c23c2cda9632c62ad831d45406af55f7fd7a35eeb8ddf917b0

Дополнительно:
KeyGen (В скомпилированном виде + исходники) для Web Archive Downloader 1.5.0 / virustotal:

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


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