Меню сайта
Форма входа
external-links
  • накрутка в контакте
  • Агент ПриватБанка
  • Статистика

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

    Romans УСЛУГИ ПРИВАТБАНКА Обмен визитами сайта Украина онлайн Каталог сайтов Reklams-vip www.onsanyo.ru
    Вообще-то технология взлома программного обеспечения (а если по-крэкерски - то просто 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, в качестве имени крэкера - мой алиас и краткую информацию о программе в соответствующем окне.
    Реклама
    Часы
    Мы ВКОНТАКТЕ
    Проверка компютера
    Администрацыя сайта не несёт ответственость за содержымое сайта© 2024