Игры и Программы для вашего ПК
Меню сайта
Форма входа
Категории раздела
Зароботок [3]
Начинающий хакер [8]
Главная » Статьи » Начинающий хакер

7hr33 N!gh7Z 0f Crackin
7hr33 N!gh7Z 0f Crackin
Вообще-то технология взлома программного обеспечения (а если по-крэкерски - то просто 
warez'а) довольно-таки хорошо описана во множестве Cracking Tut0Ria1Z и статей на тему 
"How2Crack чего-то там". С большим или меньшим количеством технических 
подробностей. Однако ни один из этих Tut0Ria1Z не скажет, что двигало человеком, 
ломающим софт, чего ради он этим занимался - и что стояло за сухими строками отчета 
"правим значение байта по смещению 72035 с 75 на EB - запускаем, работает!". Если Вы 
хотите понять, "зачем" - Вам не помогут никакие дизассемблерные листинги и дампы 
памяти, учебники и мегабайты крэкерского вареза. Чтобы почувствовать это нужно влезть 
в шкуру крэкера, думать и чувствовать, как крэкер, жить его жизнью - но для большинства 
это просто нереально. Кто решится вырвать из своей жизни множество дней и ночей на 
совершенствование своих знаний Ассемблера, чтение статей на неимоверно 
изуродованном английском и копание в кривых c0d3z - все ради того, чтобы заставить 
такую хорошую, но такую дорогую программку работать несколько дольше отпущенных 
ей 30 дней? Да еще чтобы купленные буржуями издания в очередной раз объявили тебя 
преступником. 
Вот для того-то я и пишу эту статью - чтобы каждый, независимо от возраста и знаний мог 
хоть немного прикоснуться к миру Warez Cracking, если не в качестве первого лица, то в 
качестве того-кто-это-видел, "смотрящего из-за плеча". А уж я поведу Вас через мрачные 
бездны C0D3Z - и постараюсь, чтобы Вы увидели и почувствовали все, что стоит увидеть 
и почувствовать хоть один раз в жизни. От Вас не потребуется никаких хакерских 
талантов, в действительности важно лишь одно - желание узнать и понять. И не слишком 
верьте тем, кто скажет: "взламывать софт - это плохо, это преступление" - им я отвечу 
цитатой из "Совести хакера": "...теперь у нас свой мир - мир электрона и клавиатуры, мир 
красоты данных. Мы используем существующие системы и не хотим платить за то, что 
могло бы быть бесплатным, но принадлежит богатым жлобам - и вы называете нас 
преступниками. Мы исследуем - и вы называете нас преступниками. Мы ищем новых 
знаний - и вы называете нас преступниками. Нас не волнует цвет кожи и национальность, 
мы живем без религиозной вражды - и вы называете нас преступниками. Вы делаете 
ядерные бомбы, разжигаете войны, убиваете, лжете и хотите заставить нас поверить, что 
все это для нашей же пользы - да, тогда мы - преступники. Да, я - преступник. Мое 
преступление - любопытство. Мое преступление - в том, что я сужу о людях по тому, что 
они говорят и думают, а не по тому, как они выглядят. Мое преступление в том, что я - за 
пределами вашего понимания, и этого вы мне никогда не простите." 
U r r3ADy? Тогда поехали... Вот и наша цель: Turbo Browser 2000. SoftIce 4.05 заранее 
загружен, настроен и ждет своего часа. Ну что же , запустим программку и выясним, в чем 
собственно заключается проблема. Выяснили: судя по документации (Вы читаете 
документацию? А я вот читаю) - самый обычный Time Limit, текущая дата считывается 
совершенно стандартным образом. Покрутим туда-сюда часики - к списку проблем 
добавился еще и NAG Screen довольно изящного вида (но от этого он не становится менее 
NAG). Потом натравим на бедную программу RegMon и FileMon. Результатом всего этого 
будут килобайты логов, из которых становится очевидным лишь одно - программа 
использует довольно оригинальный способ узнавать дату своего первого запуска. 
Начинаем дизассемблировать программу - старый, но все еще надежный и смертоносный 
W32Dasm 8.93 поможет нам и в этот раз. А пока он будет перемалывать полтора 
мегабайта машинного кода пополам со всяким мусором, у нас есть десять минут. Как раз, 
чтобы сбегать на кухню и вытащить из холодильника бутылку ледяной Крейзи-колы - а 
потом смотреть, как ползет индикатор прогресса, отмечая очередную тысячу строк 
дизассемблированного кода. Ночь будет длинная. На этот раз все оказалось просто -
запусти и смотри, как объем листинга медленно, наверно приближается к заоблачным вершинам.
 Но так бывает не всегда - и особенно в последнее время. Производители софта так и
норовят упаковать свой шедевр какой-нибудь гадостью вроде NeoLite или ASPack,
навешать VBox'ов - в нелепой надежде, что это кого-то остановит. Но на каждую
"непробиваемую" защиту у нас найдется всесокрушающее оружие - распаковщики,
PE-редакторы, патчи для SoftIce домашнего производства. Ну и конечно - бессменный
ProcDump, в который так удачно встроен скрипт-язык. Что-нибудь из обширного крэкерского
архива обязательно подойдет. Не может не подойти. Просто надо суметь их раздобыть - все
эти маленькие милые штучки, весь смысл существования которых заключен в том, чтобы
превращать изощренные защиты в груды развалин. 
Нас, крэкеров, постоянно путают с хакерами - нет, даже не с теми, которые ломают 
сервера или пишут в одиночку беспросветно навороченные программы - с обычными 
варезными хакерами, ломающими софт в основном ради собственного удовольствия и 
решения изощренных загадок. Но мы не такие, наша цель - результат, и результат - любой 
ценой. Для нас нет "запрещенных" приемов: серийник - отлично, патч - хорошо, memory 
patch - тоже сойдет, если иначе не получается. Кто-то может неделями заниматься 
филигранной работой - а мы выдаем вал, ведь по большому счету всем плевать, КАК это 
было сломано - лишь бы работало. А уж работать мы заставим - ради того и просиживаем 
ночи напролет перед своими 14-15-17-дюймовыми амбразурами. 
Ну вот, дизассемблирование завершено. Получился хорошенький такой файл, 20 с 
половиной мегабайт, почти полмиллиона строк текста - это при том, что нужный нам 
кусок защиты сосредоточен от силы в сотне ассемблерных команд, которые нам теперь и 
предстоит найти. Ненамного проще, чем иголку в стоге сена - если, конечно, не знать кое-
каких приемов. Теперь запускаем Symbol Loader от СофтАйса и после необходимых 
формальностей оказываемся на точке входа программы. Осматриваемся. Вокруг - черная 
бездна пополам с надписями INVALID. Давим F8 - вот теперь стало чуть повеселее. "Так 
вот вы какие, c0d3z - а я-то думал у вас и образа нет!" 
Что же, нет софта без глюков - и Софт Айс при всем его беспросветном величии - не 
исключение. Не глючный крэкерский софт - это что-то из области мечты. Причем мечты 
заведомо несбыточной - но мечтать все равно полезно. Любая из этих чудесных 
программок запросто может в лучшем случае свалиться сама, а в худшем - утащить за 
собой систему, причем КОГДА это случится - всего лишь вопрос времени. И обычно 
времени очень близкого. И тем не менее софт нам жизненно необходим - разный и много. 
По-настоящему много, и притом самых последних версий - если хочешь что-то сделать 
быстро, хорошо и эффективно, нужно иметь под рукой все самое новое и самое лучшее. К 
тому же никогда заранее не знаешь, что именно тебе понадобится завтра, и потому 
приходится тащить на свою машину все, что может хоть когда-то пригодиться. Например, 
одних патч-генераторов у меня полтора десятка - от простейших до профессионального 
инструмента легальных программистов, при помощи которого создаются апдейты 
программ. 
Да, в крэкинге тоже есть свои базовые приемы, без знания которых ничего не добьешься - 
но, к счастью, крэкинг - это не та область, где можно бесконечно использовать готовые 
решения. Наоборот, крэкинг требует самодисциплины и постоянного расширения знаний - 
и это знания совершенно особого рода, их невозможно "получить" в обычном смысле 
слова. Эти знания нужно найти и сделать их частью себя, не надеясь извлечь из них 
выгоду или добиться признания. Более того, современному крэкеру нужна даже 
определенная сила духа, чтобы защитить свое "право на существование" в современном 
мире, где единственной реальной ценностью является капитал, а человек рассматривается 
лишь как источник прибыли. 
Так, что там у нас есть против Time Limit из стандартных приемов? Есть BPX 
GetLocalTime (70% вероятности, что сработает) и BPX GetSystemTime (25% соответственно).
 Оставшиеся 5% - экзотика, но забывать про нее тоже не стоит. Пробуем 
наиболее вероятное - и получаем результат. Отрицательный. Ладно, делаем заход по 
второму варианту. F12. Вот теперь что-то есть - нас выбрасывает в дебрях fsutil70.dll. 
Хороший повод вспомнить, что было написано в листинге про подгружаемые DLL - их 
там целых 22 штуки, но никакого fsutil70 там и близко не было. Иначе я бы заметил и 
сильно удивился. Так что же - опять все не то? Но все равно нажимаю F12 - и вот я внутри 
процесса TURBOB.EXE. Похоже, это все-таки именно то, что я искал. Может быть. 
Записываю адрес, на котором я вывалился из DLL, потом на всякий случай обвожу его на 
несколько раз жирной рамкой - авторучка и исписаный в несколько слоев адресами и 
кодами листок бумаги видимо никогда не исчезнут из крэкерского арсенала. Третий час 
ночи, вся кола выпита. Кто бы мне объяснил, как это получается - выпить полтора литра 
колы и не заметить этого. Зато теперь у меня есть, с чего начать - 4 байта адреса. Так что 
можно спокойно идти спать. 
У каждой, даже самой мощной, защиты есть своя уязвимая точка - и стоит лишь его 
найти, как после единственного от точеного и выверенного удара защитные механизмы 
рушатся, как карточный домик, обращаясь в ничто. Я верю в то, что для успешного 
взлома необходимо понять, увидеть, почувствовать НЕЧТО - и найти эту самую точку 
опоры. А потом вцепиться в нее мертвой хваткой. И дальше все будет просто. Конечно, 
найти эту точку не всегда легко, иногда даже ОЧЕНЬ трудно - но моя вера мне поможет. 
Ну вот, надвигается следующая ночь - а значит пора продолжить начатое дело. То есть 
доломать-таки несчастный TurboBrowser. Кола кончилась вчера и новой больше нет, 
значит сегодня будем пить воду из-под крана. Смотрим на бумажку - обведенный жирной 
рамкой, там стоит адрес в памяти: 45BAC4. Восстанавливаем в памяти события 
предыдущей ночи. Дальше - привычная цепочка: Symbol Loader - BPX - F12. Потом еще 
раз F12. И еще. Ну вот мы и дома - перед нами расстилаются такие желанные и 
прекрасные коды: 
:0047202D E8499AFEFF call 0045BA7B 
:00472032 85C0 test eax, eax 
:00472034 53 push ebx 
:00472035 7562 jne 00472099  
 
Только не спрашивайте, как я догадался, что именно здесь и лежит корень проблемы - я 
все равно не смогу до конца это объяснить. Считайте, что это шестое чувство, которое 
появляется после нескольких лет программирования, прочтения десятков Cracking 
TutoRialZ и взлома трех с лишним десятков программ. Так или иначе - но мне здесь все 
понятно. И я знаю, что с этим надо сделать. 
Теперь осталось только слегка поиграть с флажком переноса, чтобы убедиться в своей 
полной правоте - и можно начинать патчить программу. То есть почти можно - осталось 
только проверить кое-какие мелочи. Ну например, что это такое? 
* Referenced by a (U)nconditional or (C)onditional Jump at Address: 
|:0045BAD3(C) 
:0045BADA 6AFF push FFFFFFFF 
:0045BADC 6A00 push 00000000 
* Possible Reference to String Resource ID=61334: "Reminder: 
This copy of Turbo Browser will expire soon. Order" 
:0045BADE 6896EF0000 push 0000EF96 
:0045BAE3 E827200500 call 004ADB0F  
 
Всегда нужно заглядывать если не в корень, то хотя бы на полшага вглубь - иначе можно 
очень сильно ошибиться. Например, как ошиблись люди, ломавшие Socrat97: успешно грохнув 
30- дневный trial, они не потрудились погонять программу во всех режимах - и не 
заметили еще одного ограничения на использование встроенного словаря. В общем, 
примеров тому хватает - и не хотелось бы пополнять их число. И здесь - как раз такой 
случай: казалось бы, небольшая ошибочка, да и MessageBox будет беспокоить 
пользователя всего один день, никак не влияя на работу программы. Но все же... 
Немного поиграв с флажком Z мы выясняем, что в некотором случае (а именно - 
непосредственно перед истечением 30-дневного срока) появляется MessageBox с 
предупреждением: "Ваше время кончается - так что готовьте денежки на регистрацию". 
То есть написано там несколько иное - но смысл я передал достаточно точно. Понятное 
дело, подобные напоминания программу совершенно не украшают, а потому должны 
быть ликвидированы. И это совсем нетрудно сделать - всего-то переправить один-
единственный переход по адресу 45BACD. Но это будет завтра. 
Суеверия. Если бы их не было, нам жилось бы намного легче. В крэкинге тоже хватает 
своих суеверий - и главное из них гласит: "Патчить программы - это неправильно". Но я - 
противник суеверий. Можно даже сказать - фанатичный противник. И потому буду ломать 
софт так, как мне нравится, а не по придуманным кем-то правилам. Возможно, кому-то 
нравится просиживать сутками перед дисплеем, решая очередную головоломку, но это не 
для меня. Я верю в быстрый и эффективный взлом - любой ценой, любыми средствами. 
Если мой след - превращенный в руины машинный код и изуродованная до 
неузнаваемости логика защитных процедур - пусть оно так и останется. Моя цель - 
работающая программа. Правильно и хорошо работающая. И все, что приближает эту 
цель - праведно, а все, что мешает - SuXXX и MuZDiE. 
Пришло время рутинной работы. С трудом нахожу на исписанном листке (ох, не пора ли 
его выкинуть и взять чистый?) нужные адреса и восстанавливаю в памяти, что мне 
предстоит сделать. Но сначала надо снять с файла программы резервную копию. Это - 
святое. Когда приходится выполнять по-настоящему сложный взлом, такие копии 
делаются после каждого удачного шага. Нет ничего более обидного, чем повторять 
нудную и кропотливую работу исключительно из-за собственной невнимательности. 
Так, что там у нас: переделать условный переход в безусловный по адресу 472035. Это 
просто - оп код короткого jmp я помню наизусть. Теперь исправить еще один переход по 
адресу 45BACD. Можно, конечно, воспользоваться встроенным в HIEW ассемблером - но 
зачем? Вычисляем смещение в уме (FF-CF - не самая сложная задачка) и 
шестнадцатиричным кодом пишем EB 30. Вот теперь можно пробовать. 
И ОНО РАБОТАЕТ! 
Что я чувствую, расколов очередную программу? Если в двух словах, то я ощущаю 
совершенно дикий, беспросветный и неземной кайф. Это почти религиозное чувство, 
экстаз в чистом виде - проникнув своим сознанием в глубины чужого кода, заставить его 
выполнить все твои желания. Сделать то, о чем большинство людей не решаются даже 
мечтать. Если Вы за всю свою жизнь не взломали ни одной программы - Вам никогда 
этого не понять. И если Вы думаете, что может быть хоть что-то сравнимое с этим 
ощущением, а уж тем более лучшее - я не стану Вас разубеждать. Я просто Вам не 
поверю. 
Осталась сущая мелочь - сделать результаты своих трудов общедоступными. Когда-то 
давно я писал свои крэки на Borland Pascal, аккуратно вбивая смещения в файле и 
значения байтов в заранее написанный каркас крэк-файла. Потом я делал то же самое с 
заготовкой на Форте. Но теперь все это в прошлом. Патч-генератор берет всю черновую 
работу на себя - и в результате получается маленький и аккуратный файл tb2k_crk.exe. 
Запустите его - и Вы увидите логотип InqSoft, в качестве имени крэкера - мой али ас и 
краткую информацию о программе в соответствующем окне.
Категория: Начинающий хакер | Добавил: Admin (06-Апр-2013)
Просмотров: 315 | Рейтинг: 3.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Файлы
Photo: 26
News: 6
Downloads: 41
Publisher: 11
Games: 297
Video: 5
Guestbook: 3
Оцените
Оцените мой сайт
Всего ответов: 4
Статистика
FixSOFT - сайт бесплатного софта для Вас
Каталог сайтов :: Развлекательный портал iTotal.RU Каталог сайтов Всего.RU Каталог сайтов и статей iLinks.RU Каталог сайтов Bi0 Каталог сайтов OpenLinks.RU рефераты

Рейтинг@Mail.ru


Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск

Lifter Corp. 2024
Используются технологии uCoz