Как взломать программу лицензионную

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

Для этого нам понадобятся программы:

2.edb-debug, для Linux ( можно найти в пакете kali linux)

В примере будет описан процесс использования OllyDBG в Windows.

Начало

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

Теперь нам нужно «запаролить» данный файл. Воспользуемся программой GameProtector

Выбираем наш exe файл, зададим пароль к примеру «qweqwe». Нажимаем protect

Теперь при запуске нашей программы будет запрашиваться пароль:

Если ввести неверный пароль, то вы увидите следующее сообщение:

Бесплатная Лицензия на ВСЕ продукты JetBrains — 3 проверенных способа | Stepik уже не работает!

Теперь закрываем это окно, и запускаем OllyDBG

Выбираем вашу программу и открываем её.

В появившемся окне, нажимаем правой кнопкой и выбираем search for — all referenced strings

В новом окне нажимаем Ctrl+F, и делаем поиск по ключевому слову из ошибки — например, Invalid Password.

Выбираем строчку, откуда начинается раскрытие ветки ( JE SHORT. ) и нажимаем F2

На ней появится красная полоска (брейкпоинт), а нижний брейкпоинт выбираем и снимаем его нажатием F2.

Запускаем приложение через кнопку:

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

тем временем в OllyDBG мы увидим следующее:

Вверху — то что мы вводили

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

Вариант для Kali Linux

А сейчас мы с вами рассмотрим вариант «вскрытия» exe файла, на примере выше описанного файла

Для начала установим wine. Для этого в терминале вводим по очереди следующие команды:

sudo dpkg —add-architecture i386 sudo apt-get update apt-get install wine32

Уроки Очень простой крякинг в IDA (1 Viewer)

Тема старая, побудило написать статейку для newbie crackers от студента который попросил ему помочь с курсовой.
Всякие академические термины типа «мягкий взлом» я откинул это все лишь запутывает человека который только пытается лезть в эту тему.

Приступим к работе (Осмотр)

Для проверки менеджера лицензий «мной» была выбрана свободно распространяемая (shareware) программа Internet Cyclone 2.28 Я нашел кряк только для 2.26 и решил убить двух-трех зайцев сразу написав статью. Сама утилита занимается настройкой сетевого соединения.

Простейший взлом через NET Reflector. Получение закрытого ключа шифрования

1586534554782.png


Примечание 1 — в качестве среды для запуска исполняемых я использую Wine​

Процедура «регистрации продукта» производится через контекстное меню «Help» — «Register» в окне с текстом «Please enter the information here».
Процедура регистрации заключается в вводе имени (User Name) и соответствующего ему лицензионного кода (Serial Number) в диалоговом окне регистрации.

Читайте также:
Все типы выравнивания текста в программе ворд

1586534622228.png

Примечание 2 — если кто знает, объясните почему Wine так криво делает стили кнопок (1, 2) и полуотображаемые шрифты

После ввода никнейма «Nezumi» и пароля «4891154» появилось окно сообщения о вводе неправильных данных.

1586538303776.png

Примечание 3 — ну да, ну да пошел я нахер

Предварительный анализ кода программы (Вскрытие) ​

После проведенного выше осмотра пациента, надо посмотреть теперь его изнутри. Запускаем IDA Pro или Free (неважно), открываем exe файл.

1586538664908.png

В настройке проекта IDA Pro кликаем просто OK. Нажатием сочетания «Alt + T» запускаем поиск любых строк по всему файлу, набираем «Serial Number» и выберем флажок поиск всех совпадений.

1586538714880.png

В итоге после некоторых ожиданий поиска (зависит от размера проверяемого файла и вашего типа диска), появятся результаты поиска.
В нашем случае должны быть 2 варианта.
Слева есть столбец Address именно по адресу 004B972B мы видим инструкцию перемещения 48 байт в регистр 32 битный регистр eax, в 48 байт мы видим значение «Serial Number is wrong. Check your Spelling . » что и является нашим текстом в диалоговом окне ошибки.
Второй вариант является как раз инициализацией выделения 48 байт под строку. Нам нужен первый чтобы узнать где находится функция создания окна ошибки. Кликаем два раза.

1586538920740.png

После перехода видим как наша программа разветляется на 2 части. Судя по логике, часть с неудачным Serial Number и с удачным.

1586539036476.png

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

1586539068702.png

Теперь приступим непосредственно к самому дизассемблированному коду. Как видим блок проверки действительности ключа (верхний зеленый блок) в конце вызывает функцию через инструкцию call sub_4B9948 , двойной клик по названию функции покажет нам тело функции.

1586539136154.png


Примечание 4 — сложно, сложно​

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

1586539223818.png

Смотрим например на последнюю функцию sub_4B9948 . Она принимает 3 значения: 2 из стека, 1 из регистра ebx.
Видим что после вызова функции идет инструкция test eax, eax . Мы знаем что после вызова функции, возращаемый результат попадает в регистр eax.
Инструкция test позволяет проверить изменение флагов при проверки значения в регистре eax (например флаг ZF который сообщает что значение нулевое)[если углубляться то инструкция test eax, eax будет короче на 1 байт, чем понятный cmp eax, 0 ], а jnz как раз проверяет eax на то что он не ноль. Алгоритм обсуждаемого участка кода прост: «Если после вызова функции результат существует и он не ноль, то прыгаем на участок loc_4B9720 » Давайте просто поменяем логику на «Если после вызова функции результат существует и он ноль, то прыгаем на участок loc_4B9720 ». Подумав чуток можно понять что функция проверки кода может вернуть true или false, как раз инструкция jnz loc_4B9720 отвечает за это. Сменив логику, если мы введем неверно данные то мы пройдем проверку действительности ключа.

Читайте также:
Характеристики компьютера программа speccy

Внесение наших исправлений в программу (Лечение)

Чтобы внести изменения в код программы, нам надо сделать патч. Кликаем на инструкцию jnz один раз и смотрим в контекстное меню «Edit» — «Patch program» — «Assemble. ».

1586539604604.png

Меняем инструкцию на jz loc_4B9720

1586539628396.png

Он просит изменить следующую инструкцию, но нам не надо нажимаем отмену. Теперь надо принять изменение байтов в программе «Edit» — «Patch program» — «Apply patches to input file. »

1586539662998.png

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

1586539681978.png

И о великий техно-Ктулху, мы имеем warez-over-pro-без регистрации и смс-version Internet Cyclone 2.28 (статья)

1586539946900.png

Проверяем что вверху у тайтла окна появилось Registered. Вы стали крякером от Технобога.

Послесловие ​

Единственная проблема осталось, то что мы сделали кряк работающий чисто через форму регистрации, т.е. пользователю кряка придется каждый раз регистрировать продукт, что неудобно. Сделаю наверное еще один урок для полноценного кряка.
Я просто удивляюсь с того что этот коммерческий софт стоит 40 евро!
Мало того что цена за такой софт высока, но они даже не защитили никак софт, несмотря на время последнего обновления 2017 год. Остается только думать как до сих пор пишут не защищенный софт в коммерции. Моя статья разобрала лишь один продукт, а сколько таких коммерческих продуктов?

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

Последнее редактирование: 10.04.2020

“A basic rule of thumb about hackers is that we live to peek at things that others have hidden, it’s our nature.”

Источник: ru-sfera.pw

Как взломать программу лицензионную

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Читайте также:
Программа обновления драйверов amd radeon

Disclaimer: всё ниженаписанное написано исключительно с просветительскими и исследовательскими целями, а также понимания механизмов защиты от взлома. Автор ни в коем случае не рекомендует использовать данную информацию для взлома программ.

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

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector, декомпилятор программ под .NET

В качестве подопытного кролика я выбрал Expresso — анализатор регулярных выражений. Данная программа бесплатная, в лицензии вроде бы ничего не указано про взлом, но при этом без регистрации она будет работать всего 60 дней. Другими словами, вред от взлома данной программы минимальный, к тому же внутреннее её устройство очень уж хорошо подходит для тренировки. Буду надеяться, что автор данной программы не обидится на меня.

Для начала краткий ликбез по структуре .NET программы, для тех кто не знаком с разработкой под данный Framework: весь код, написанный на любом .NET языке (C#, Visual Basic, F#, Delphi.NET) компилируется в особый Intermediate Language, называемый обычно IL или MSIL. Это что-то типа ассемблера, только весьма умного и обладающего весьма мощными инструкциями. И это, в принципе, такой же равноправный язык как и C#, только синтаксис похуже (а возможности больше). Кроме того, в программе на .NET активно используются метаданные, т.е. вся информация о классах, метода, пропертях, атрибутах и всём остальном сохранена в исполняемом файле.

Т.е. на самом деле, декомпиляция программы не очень верное понятие в данном случае. Она и так вся в открытом виде лежит, а инструменты в виде Reflector’а занимаются тем, что приводят конструкции MSIL к соответствующим конструкциям C# или другого языка, повышая читабельность кода.

Перейдём, собственно, к взлому.

0. Обнуление триала

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

Посмотрим на нашего подопытного рефлектором:

Немного погуляв по коду, находим интересную строчку в конструкторе MainForm

Открываем редактор реестра, идём в HKEY_CURRENT_USERSoftwareUltrapicoExpresso и видим следующие ключи:

Удаляем их и получаем ещё 60 дней работы.

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru