Что такое крэк?

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

Что такое crack?

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

Это означает, что вместе со словами компьютер, Интернет и программное обеспечение, крэки также прочно вошли в нашу жизнь. Неудивительно, ведь рынок ПО сегодня исчисляется многими миллионами софтин. Крэк — это тоже компьютерная программа, только значительно меньшая по размерам и имеющая одну единственную функцию – взломать платную программу. Крэк – это обобщенное название всех мини-программ, с помощью которых мы, так или иначе, получим бесплатную лицензию. В разговорной речи компьютерщики часто также употребляют слова: крак, кряк, кряка и т. д., что на самом деле означает одно и то же. Тут уж как кого в детстве приучили. Тем не менее, согласно нормам английского, правильнее всего говорить крэк. Мини-программы для взлома также бывают самые разные. Рассмотрим их всех по порядку. Самыми первыми крэками в общем-то были обычные текстовые файлы. Обычно они носили расширение *.crc, *.crk, *.xck, *.xrk, *.hack и т.д. В них размещалась информация о тех байтах, которые нужно было изменить во взламываемой программе. Скачав подобный файл и открыв его в текстовом редакторе, вы бы увидели примерно следующее: 0048D050 40 6E 42 00 20 70 42 00 90 7D 42 00 70 84 42 00
0048D070 F0 B6 42 00 80 D5 42 00 80 E8 42 00 20 FE 42 00

0048D050 40 7E 42 00 20 70 42 00 90 7D 42 00 70 84 42 00
0048D070 F0 B6 42 00 80 D5 42 D5 80 E8 42 00 20 FE 42 00
(Взята произвольная последовательность байт)

Это все, никаких комментариев и советов. Для обычного пользователя компьютера эти 6 строк не скажут ровным счетом ничего, поэтому в те далекие времена крэки использовали только «посвященные», говоря проще, обычные программисты. Не сказал бы, что это плохо, скорее наоборот — ведь основная масса современных пользователей совсем не стремится к знаниям. А зря, ведь лишних знаний не бывает! Тем не менее, поясню, что означает подобная запись. Первые три строки — это часть исходной программы, вторые три – это измененный код, то есть тот, который дает нам возможность пользоваться программой бесплатно. Сравните внимательно первую и вторую тройку, они не одинаковые, как может показаться на первый взгляд. Как же найти нужное место в нашей программе. Запись, представленная выше, называется шестнадцатеричной. В ней применяются все цифры (от 0 до 9) и буквы A,B,C,D,E и F, то есть составляющие шестнадцатеричной системы исчисления. Первые восемь символов (0048D050) – это адрес нужной строки. Если переведете это число в десятичный вид, то получите смещение в байтах. Однако если вы откроете exe’шник в обычном текстовом редакторе, то вместо чего-то подобного вы увидите бессмысленный набор символов. Чтобы получить подобную запись, надо воспользоваться HEX- редактором. С его помощью раньше и взламывалась вся программная составляющая компьютера.

Надо сказать, что процедура замены нужных байтов — вещь довольно скучная. Представьте, если бы вам пришлось править сотню разных exe’шников, например, устанавливая софт в компьютерном классе. Если вы нарушите хотя бы один байт, то приложение уже работать не будет или будет работать нестабильно в случае разбалансировки стека, поэтому приходилось «орудовать скальпелем» и быть предельно внимательным. Это очень утомляло.

На помощь ленивым программистам пришли другие, такие же ленивые, поэтому появились первые программы-патчеры. Они автоматически находили нужные байтики и правили их, пропуская нас в мир халявной регистрации. Патчеры стали настолько популярны, что выпуск текстовых файлов с последовательностью байт практически прекратился. Наоборот, такие файлы стали даже признаком дурного тона среди всех варезных групп. Шло время, и защита приложений постоянно усложнялась. Уже прошли те далекие и счастливые времена, когда можно было поменять один байтик в программе и получить заветное сообщение “Registration successful! Thank you for support.” Пришло время гигантских регистрационных ключей, сложных механизмов криптования и сжатия исполняемого файла и прочих радостей. Обычный патчер к солидной программе теперь может написать лишь очень опытная варезная группа – это высший пилотаж. Но только не подумайте, что патчеры исчезли, просто теперь все немного по-другому… Итак, уважаемый пользователь, скажите, что просят вас ввести авторы шароварной программы? Правильно, регистрационный ключ. А если есть регистрационный ключ, значит, есть и возможность его сгенерировать. Первое, что приходит на ум, это простой перебор всех возможных вариантов. Надо сказать, что это наихудший способ – при длине ключа в 35 символов вы будете его подбирать миллионы лет, особенно если в серийнике есть цифры, буквы и грамматические символы. Совершенно ясно, что перебором никто никогда толком и не пользовался.

Зато, изучив алгоритм проверки серийника на подлинность, можно пустить его в обратную сторону и заставить генерировать правильные ключи! Подобные мини-программы называются Key Generator’ами или, сокращенно, keygen’ами; можно также встретить и русское слово «кейген». Написать кейген бывает намного сложнее, чем патчер, однако бывают и обратные случаи.

Как вы знаете, одного лишь серийного номера редко бывает достаточно. От вас требуют ввести ваше имя и/или электронный адрес. Это делается неспроста. Дело в том, что в 90% программ итоговый ключ будет зависеть именно от них. Зависимость эта может быть самая сложная, поэтому найти кейген к только что появившейся программе очень трудно. Обычно проходит неделя-две (а иногда и месяц-два) прежде чем очередной программный хит становится взломанным. И немудрено, однако и здесь есть своя логика.

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

Как их создают?

Для того чтобы написать крэк или кейген, нужна специальная программа – отладчик. С помощью отладчика взломщики исполняют код программы последовательно, находя то место, где происходит проверка на правильность серийного номера или где происходит его генерация. Отладчик как бы виртуально является процессором для исполняемой программы, он позволяет остановить выполнение в любой момент времени, изменить значение регистров процессора или данные в оперативной памяти на лету. Отладчик также применяется и в мирных целях. Например, он просто необходим при разработке драйверов, когда программисту нужно обязательно видеть, на какой инструкции происходит сбой. В былые времена был очень популярен отладчик SoftIce от компании NuMega. Это отладчик уровня ядра (ring0). Это значит, что он может внедряться в систему так глубоко, что может приостановить любой процесс в Windows. К сожалению, его разработка завершена. С третьего апреля 2006 года продажа продукта была прекращена из-за «множества технических и деловых проблем, а также общего состояния рынка». Поддержка завершилась 31 марта 2007-го. С помощью SoftIce были написаны сотни драйверов и взломаны десятки тысяч программ. В настоящее время существует его замена от Microsoft – WinDbg. Очень популярным является пользовательский отладчик (ring3) от русского программиста Олега Ющука – OllyDbg. Это бесплатный 32-битный отладчик, предназначенный для анализа и модификации откомпилированных exe- и dll-файлов. OllyDbg отличается от классических отладчиков простым интерфейсом, интуитивной подсветкой специфических структур кода, простотой в установке и запуске. Для того чтобы разобраться в принципе работы OllyDbg, достаточно лишь базовых знаний в области ассемблера. По этим причинам OllyDbg рекомендуют к использованию новичкам.

Любой современный отладчик под Windows должен обладать возможностью различать Windows API-функции. Например, в OllyDbg распознается более двух тысяч типичных функций. Также неотъемлемая часть любого отладчика – это точки останова (breakpoints). В точке останова исполнение программы прекращается, и взломщик может посмотреть все регистры и переменные в памяти. Обычно крэкеры ставят брэйкпоинты на стандартные API-функции, вроде ShowMessage, то есть на те, которые вызывают окно ввода серийника при запуске. Но бывают и очень сложные случаи, когда программисты искусственно запутывают код программы так, чтобы обмануть отладчик. Самые продвинутые отладчики применяют для таких случаев эвристический анализ стека, чтобы определить ловушку и начать выполнение с нужного места.

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

Наиболее популярным дизассемблером у крэкеров является IDA Pro Disassembler. Он отличается исключительной гибкостью, наличием встроенного командного языка, поддерживает множество форматов исполняемых файлов для большого числа процессоров и операционных систем. Позволяет строить блок-схемы, изменять названия меток, просматривать локальные процедуры в стеке и много другое. В последних версиях имеет встроенный отладчик x86 и ARM. IDA, до определенной степени, умеет автоматически выполнять анализ кода, используя перекрестные ссылки, знание параметров вызовов функций стандартных библиотек и другую информацию. Однако вся сила его проявляется в интерактивном взаимодействии с пользователем. В начале исследования дизассемблер выполняет автоматический анализ программы, а затем пользователь с помощью интерактивных средств IDA начинает давать осмысленные имена, комментировать, создавать сложные структуры данных и другим образом добавлять информацию в листинг, генерируемый дизассемблером, пока не станет ясно, что именно и как делает исследуемая программа. Этот дизассемблер имеет консольную и графическую версии. Поддерживает большое количество форматов исполняемых файлов. Одной из отличительных особенностей IDA Pro является возможность дизассемблирования байт-кода виртуальных машин Java и .NET. Также поддерживает макросы, плагины и скрипты.

Для защиты программ от взлома используется специальная процедура обработки исполняемых файлов – упаковка. Упаковщики так изменяют содержимое exe’шника, что дизассемблер или отладчик просто не понимают, как работает этот файл, или выдают неправильные результаты анализа. Наиболее известным упаковщиком является UPX (the Ultimate Packer for eXecutables). Это проект с открытым исходным кодом. Сжатый исполняемый файл состоит из модуля распаковки/инициализации и блока данных, содержащего в себе исходный файл в сжатом виде. При запуске модуль распаковки выделяет память и распаковывает туда содержимое блока данных. Для некоторых платформ распаковка в память невозможна, в этом случае используется распаковка во временный файл. UPX также использовался для упаковки вирусов и троянов, чтобы обмануть антивирусы (которые также являются специализированными отладчиками), однако на сегодняшний день большинство антивирусов и отладчиков распознают эту упаковку и знают, как распаковать эти файлы. Тем не менее, существуют программы-протекторы. Они шифрует содержимое исполняемого файла очень стойкими криптоалгоритмами, делая в некоторых случаях невозможным анализ кода. Самым ужасным для крэкеров является протектор StarForce (не путать с защитой игр с привязкой к диску). Он использует виртуальную машину, очень мощное шифрование и специальный драйвер, который не дает доступа к защите. Снять такую защиту с исполняемого файла могут только настоящие профи.

После того, как анализ программы завершен, взломщики пишут работающую версию кейгена или крэка. Им важно написать только работающий алгоритм. Далее дело за программистами (в крэкерской группе обязанности разделены). Программисты пишут оболочку. В оболочке обычно используются свои кнопки, эдит-боксы и компоненты для вывода графики. Чем круче оболочка, тем круче считается крэкерская группа, поэтому программисты стараются изо всех. Обычно у группы есть три-четыре оболочки, куда они вставляют алгоритмы для крэкинга, и в обязанности программистов входит их постоянное совершенствование. Однако иметь крутую оболочку мало, нужно еще, чтобы она была красиво оформлена. Для этого существуют gfx’еры. Эти люди рисуют всю графику для оболочек, лого группы и оформляют файл с инструкциями к использованию крэка. Вы наверняка знаете, что многие оболочки имеют и музыкальное оформление. Звучание похоже на midi, однако таковым не является. На самом деле это очень старый ди-джейский формат xm. Традиционно в оболочку встраивают модуль ufMod для проигрывания xm, а сами музыкальные файлы пишут в программе MadTracker. Смысл у xm примерно такой же, как и у миди: задается набор инструментов и задается партитура для каждого из них. Дальше при помощи ufMod файл
воспроизводится. Кстати, xm умеет проигрывать и WinAmp. Раньше я вытягивал понравившиеся мне мелодии из кейгенов и крэков с помощью OllyDbg и различных распаковщиков.

Как крэки попадают в Сеть?

Каждая уважающая себя крэкерская группа имеет свой сайт и IRC-канал. На сайте они выкладывают свои релизы, а на канале общаются между собой и с другими крэкерами. Чтобы попасть на такой канал, нужно обладать начальным запасом знаний, так как новичков туда просто не пускают. Верхом развития для крэкерской группы является попадание на 0day. Это закрытая среда для взломщиков со всего мира, в которую разные группы отправляют свои релизы (обычно это запароленные ftp-серверы). На 0day могут пробиться только профи. Например, одна из самых известных крэкерских групп современности – C.O.R.E (расшифровывается как Challenge Of Reverse Engineering)- выкладывает свои релизы только на ftp 0day и никуда больше. Дело в том, что настоящие крэкеры ни в коем случае не содействуют пиратству. Для них взлом программ – всего лишь хобби или вид искусства, поэтому они обмениваются крэками между собой для того, чтобы померяться силами. Тем не менее, на 0day есть и нечестные участники, которые периодически копируют оттуда крэки и выкладывают в Сеть. Но, как уже отмечалось выше, основная масса групп выпускает релизы сразу в Сеть, откуда они выкачиваются специальными роботами на крэкерские поисковые системы и каталоги-хранилища. Самые известные – это Astalavista и MuCaCa CracKs. Обычно на таких сайтах вместе с крэками предлагают скачать adult-ролики, и страницы пестрят от рекламы с сайтами знакомств. Здесь нет ничего удивительного. Просто эти ресурсы пользуются большой популярностью и живут за счет показа этой рекламы. Кстати, замечу, что самые известные и профессиональные группы в СНГ – T.S.R.H. (The Sabotage Rebellion Hackers) и Revenge – выпускают релизы через свои сайты, а не на 0day.

Справка КГ: Какую ответственность несет пользователь за использование нелицензионного (взломанного) программного обеспечения?
Использование лицензионных программ дает немало преимуществ:

1. В случае использования лицензионного программного обеспечения вы получаете гарантийное обслуживание, техническую поддержку со стороны разработчика и регулярные обновления.
2. К лицензионным продуктам прилагается документация и «Руководство пользователя», которое помогает найти ответы на многие вопросы, возникающие в процессе эксплуатации программы.
А вот нелицензионное ПО – это нарушение. Можно выделить два основных типа нарушений, допускаемых корпоративными пользователями. Во-первых, полное нелицензионное использование. Это означает, что у организации нет ни одного законно приобретенного экземпляра программы. Второй тип нарушений — выход за пределы условий использования конкретного экземпляра программного обеспечения, установленных правообладателем (например, использование программного обеспечения на большем количестве компьютеров, чем это разрешено условиями приобретенной лицензии). Описанные нарушения, в зависимости от их масштаба (стоимости незаконно используемого программного обеспечения, наличия умысла, характера вреда), могут быть квалифицированы по-разному. Они могут быть признаны либо уголовными преступлениями, либо административными правонарушениями. В обоих случаях ответственность может быть возложена и на физическое лицо, и на организацию. Следует помнить, что наличие нелицензионных программ в офисе само по себе является поводом для изъятия контролирующими органами носителей с информацией (компьютеров, дисков). Ну и излишне говорить о том, что сам по себе взлом нарушает закон и является уголовно наказуемым.

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

Brian Warner, Minsk 2009


Компьютерная газета. Статья была опубликована в номере 27 за 2009 год в рубрике безопасность

©1997-2022 Компьютерная газета