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

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

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

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

Крэкер (также искажённое крякер) (англ. cracker) — человек, который занимается созданием крэков.

Взломщик — это человек, который взламывает программу при помощи уже готового крэка или без такового.

Содержание

Виды взлома

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

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

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

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

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

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

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

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

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

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

В подавляющем большинстве стран деятельность по взлому программ считается противозаконной (в том числе в России; однако, статус крэков как вредоносного ПО пока не определен). Но дело в том, что факт взлома очень трудно доказать: пользовательское соглашение, как правило, запрещает дизассемблирование программы, а закон — создание и распространение результата работы. Однако, дизассемблированный текст продукта по окончании работы легко уничтожить, а результат работы — распространить по защищенным каналам и выложить на сервере, хостящемся в стране с более либеральными законами. Используемые же в работе программные продукты, утилиты и различные заготовки не считаются вредоносным ПО (хотя и на них закон пытается наложить руку — см. DMCA). В распространении крэкерам помогают и файлообменные сети, поскольку в большинстве из них крайне трудно найти оригинальный источник файла, а уничтожить все его копии и вовсе невозможно.

УК РФ

Глава 28 Уголовного кодекса РФ устанавливает наказания за компьютерные преступления. В соответствии со ст. 272 за крякинг можно получить лишение свободы до 2 лет. При предварительном сговоре группы лиц — до 5 лет. В России практика наказаний за взлом программного обеспечения существует в очень сыром и пока в теоретическом виде. Это вызвано тем что понятие "интеллектуальная собственность" пока ещё точно не определено российским законодательством. Также сам факт крекерства очень тяжело доказать, поскольку тот же антивирус Касперского вносит изменения в файлы при их лечении от вирусов и его действия так же можно классифицировать по ст. 272 УК РФ. Из известных в нашей стране случаев наказания за компьютерные преступления можно выделить пожалуй лишь создание вредоносных программ. Поэтому многие люди в т.ч. и правообладатели пытаются представить крекеров как создателей вирусов, но на самом деле это в корне неверно.

См. также

Ссылки

cs:Cracking da:Crack de:Crack (Software) en:Software cracking es:Cracking (software) et:Crack (programm) fi:Crack (tietotekniikka) fr:Crack (informatique) he:קראקר it:Crack ml:സോഫ്റ്റ്വെയർ ക്രാക്കിംഗ് pl:Crack (informatyka) pt:Crack (software) sk:Cracking sr:Кракер sv:Crack (programmering)

Личные инструменты

Served in 0.131 secs.