Взлом программного обеспечения

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Для словакрякиспользуются следующиеэвфемизмы:«лекарство», «таблэтка», «аспирин» и т. п.[1]Крякер(англ.cracker) — человек, который занимается созданием кряков.

Виды взлома

[править|править код]

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

  • Вводсерийного номера (регистрационного кода)(жарг.серийник) (англ.serial number, S/n) — взлом программы посредством введения правильногорегистрационного ключа(или фразы), полученного нелегальным способом. Ключ можетгенерироватьсяна основе какой-либо информации (имени владельцаПО,характеристик аппаратной части компьютера, и т. п.), либо иметь фиксированное значение. Для генерации регистрационного ключа используется тот же алгоритм, что и в программе.
    Примечание1:Регистрационный код может распространяться включевом файле (файле лицензии)(англ.keyfile), который обычно помещается в каталог с установленной программой.
    Примечание2:Для массового взлома, зачастую, создаётся (и в дальнейшем используется)генератор ключей(жарг.кейген) (англ.keygenсокр. от key generator) —программадля генерации регистрационных ключей (см. выше). Данный вид взлома наиболее востребован (особенно, когда программа часто обновляется или рег. ключ генерируется на основе какой-то информации (см. выше)) и поэтому наиболее ценится. Как правило, требует бо́льшей квалификации взломщика по сравнению с другими видами взлома, но не всегда.
  • Использованиезагрузчика(жарг.лоадер) (англ.loader) — способ обходить некоторые виды защитыПО,заключающиеся в использовании внешних (навесных) систем защиты. Состоит в изменении определённых фрагментов программы воперативной памятисразу после её загрузки в эту память, но перед её запуском (то есть перед выполнением кода вточке входа).
  • Применение(бинарного) патча(часто жарг.крэкиликрякотангл.crack) (англ.byte patch) — способ, похожий на «загрузчик», но модификация производится статически в файлах программы. Как правило, это один из самых простых и быстрых способов взлома ПО.[2]
  • Использованиевзломанной версии файла(ов)(англ.cracked) — способ заключается в подмене оригинальных файлов программы файлами, которые уже взломаны.
  • Использованиеэмулятора ключа(англ.key emulator) — способ используется для обмана защит, построенных на использовании в качестве защитыэлектронного ключа(как правило, подключаемого кLPTилиUSBпорту компьютера). Заключается в снятии дампа внутренней памяти ключа. Файл с содержимым этой памяти подаётся на вход специальной программе — эмулятору, которая подключает свойдрайвер-фильтр в стек драйверов и обманывает защищённую программу, эмулируя работу с аппаратным ключом. В случаях наличия в программе обращений к ключу для аппаратного шифрования участка памяти этот метод используется в связке с методомБинарный патч.
  • Подмена официальногосайтапрограмм и/или соответствующее изменение настроек с целью обойти проверку ключа, если она была вынесена разработчиками на какой-либо интернет-ресурс (В абсолютном большинстве случаев — для предотвращения взлома, реже — для учёта и ведения статистики, сбора сведений). Чаще всего осуществляется на примитивном уровне путём модифицированияфайла hostsи запуска различных эмуляторов, иногда — использование различных программ (Денвер) или использование реально существующего веб-ресурса.
  • Запрет доступа программы кинтернету(жарг.заофлайнивание) заключается в комплексе действий, направленных на осуществление принудительного запрета доступа программы к интернету. Выполняется в тех случаях, когда программа требует активации лицензионного ключа через интернет (как правило, официальный сайт разработчика), либо в случаях, когда программа связывается с сервером разработчика для обмена данными или обновления. Как правило, модифицируется локальный DNS-файл компьютера (/etc/hosts или его аналог), чтобы "обнулить" доступ к конкретному серверу разработчика или устанавливается специальнаяутилита,которая блокирует доступ программы в сетьинтернет(более громоздкое решение), более радикальный способ - физическое отключение от Интернета. Это действие, обычно, производится после введения ключа, сгенерированного кейгеном.
  • Скачивание из интернета или с другого компьютера уже взломанной или купленной игры. Перекачивание лицензионной копии игры с компьютера друга взломом не является, но суть та же.

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

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

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

Принципы взлома

[править|править код]

Как правило, в основе работы крэкера лежит исследованиеассемблерного кода,полученного измашинных инструкцийс помощью специально предназначенной для этого программы-дизассемблера.В зависимости от выбранного способа взлома результат исследования может использоваться, например, для построениягенератора ключейили для внесения необходимых изменений висполняемый файл.Последний способ в большинстве случаев наиболее лёгкий, так как не требует изучения алгоритма проверки правильности ключа: зачастую взлом сводится к поиску проверки нескольких условий (наподобие «ВведённоеЧислоравноЭталонномуЧислу?») и замене такого условия на безусловный переход (goto,jmp), или, реже, на противоположное (то есть для данного примера на «Введённое Числоне равноЭталонному Числу?»).

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

Между тем, патч возможен, как правило, в том случае, когда исполняемый файл программы не защищён специальными «пакерами» и «протекторами» — программами, скрывающими реальный код исполняемого файла. Для последнего типа программ зачастую используется самая интеллектуальная частьобратной разработки(англ.reverse engineering) — исследование кода программы при помощиотладчикаи создание генератора ключей, но возможны и другие решения, например, создание загрузчика (см. выше).

Правовые аспекты деятельности

[править|править код]

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

  1. Хайдарова В. Ф.Краткий словарь интернет-языка/ под ред. С. Г. Шулежковой. — 2-е изд. —М.:Флинта, 2013. — С. 132—133. — 326 с. —1000 экз.ISBN 978-5-9765-1187-3.
  2. Brian Warner.Что такое крэк?// Компьютерная газета: газета. — Минск, 2009. — 11 июля.Архивировано24 июня 2021 года.