Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Взлом как образ мысли Взлом как образ мысли
Интервью с человеком, который, как оказалось, является не только талантливым пентестером в одной из крупных ИБ-компании, но и хакером-ветераном, который уверенными шагами вышел на свет и прикоснулся к истории российской хак-сцены....
Полный гид по накрутке онлайн-голосований Полный гид по накрутке онлайн-голосований
Конкурсы с голосованием привлекают большое количество посетителей, а трафик, как известно, — это деньги. Особый интерес вызывают конкурсы, где за победу предлагаются лакомые призы....

Казуальное вскрытие в полевых условиях: взлом игр НевоСофт

Bookmark and Share

Казуальная игра — компьютерная игра, предназначенная для широкого круга пользователей. Сам термин "казуальная" происходит от латинского слова "casualis", что означает "случайный". Таким образом, казуальная игра — это игра, в которую играют от случая к случаю, между делом, чаще всего, чтобы как-то убить время. Подобными игрушками являются творения компании НевоСофт. Только вот дают они поиграть всего час, а потом просят денег. Сегодня мы с этим разберемся!

Немного теории

Вообще, казуальные игры по своему уровню сложности годятся практически для любой категории пользователей компьютера. Зачастую время на прохождение таких игр невелико, а потому они хорошо подходят для тех, кто не может уделять игре много времени. Компания НевоСофт является одним из ведущих разработчиков казуальных игр в мире (и, в частности, на русском языке). Казалось бы, такая серьезная компания должна уделять повышенное внимание защите своего программного обеспечения, для ее взлома должно понадобиться много сил и времени. Сегодня мы опровергнем этот факт и покажем, как отучить их детище клянчить наши с вами кровные деньги. Разработчики компании НевоСофт держат под своим чутким надзором тысячи игр, при этом дают народу опробовать их детище в течение одного часа. После 60 минут, когда человек только входит во вкус, высвечивается не очень приятная табличка, которая просит денежек. Так уж сложилось, что русский человек не любит платить за софт, но разработчики игр иногда просто не оставляют нам выбора. Для определенной игры нужно найти свой кряк, на поиски которого иногда уходят драгоценные минуты и часы, а если игра новая, то вероятность найти его сводится к нулю.

Подготовка операционного стола

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

Так сложилось, что на момент изучения под моей рукой не было ни одной программы для взлома: ни дизассемблера, ни отладчика; был только набор программ, стоящих на машине практически у каждого пользователя. В этот набор вошли Total Commander и "Диспетчер задач" — именно этими программами мы и будем пользоваться в момент изучения игры. Казалось бы, что можно сделать при помощи этих приложений? Оказалось, что при наличии пытливого ума и капельки внимательности этого вполне достаточно, чтобы заставить игру работать без ограничения по времени. В качестве платформы для написания "таблетки" я выбрал Delphi 7. Все инструменты разложены на операционном столе, пациент крепко привязан — можно  приступать к исследованию. А теперь обо всем по порядку...

Скальпель, тампон, спирт, еще спирт, огурец... Помянем!

Устанавливаем и запускаем игру. Видим красивое окошко, в котором красуется время, отведенное нам для ее тестирования. Смело тыкаем мышкой по кнопке "играть" и начинаем наблюдать, что творится в системе. Свернем игру на время и заглянем в "Диспетчер задач". Взгляд падает на неизвестный нам процесс с расширением *.tmp. Что ж, давай глянем, что это за фрукт, и как он тут оказался. Тыкаем в свойства процесса и вчитываемся в информацию, которую нам выдали. Месторасположение файла говорит о том, что мы на верном пути. Открываем папку с этим файлом и переименовываем его в exe’шник (кстати, файл является скрытым, так что не забудь поставить галочку на "отображать скрытые файлы" в  соответствующих свойствах). Тыкаем в него два раза левой кнопкой мыши и видим прекрасную картину — игра запускается, причем никаких окон для регистрации не выскакивает. Казалось бы, цель нашего эксперимента достигнута, игра больше не требует регистрации и работает без ограничения по времени. Но этот способ слишком нудный и неудобный. Поэтому будем искать способ упростить эти действия.

Вскрытие показало, что пациент умер от вскрытия

Основная наша цель — научится отучать игрушки NevoSoft'a от денег в два клика, поэтому начнем разбираться, откуда берется тот злосчастный файл с расширением *.tmp. Не бойся, читать тонны мануалов не придется, главное – иметь чуточку терпения и капельку внимательности. Искать долго не приходится, ибо в папке с файлом *.tmp лежит непонятно зачем нужный файл nsgame.dat, который по размеру совпадает с нашей игрушкой с точностью до байта. Можно предположить, что ланчер просто переименовывает nsgame.dat в *.tmp и запускает его. Но в процессе проверки нашего предположения тебя ждет большой облом — нас посылают куда подальше, сообщая о том, что приложение не является исполняемым файлом.

Расстраиваться не будем, а вместо этого берем лопату побольше да поострее и начинаем копать поглубже. Первое, что приходит на ум – сравнить эти два файла и посмотреть, в чем же их отличие. Откроем Total Commander и воспользуемся внутренней утилитой для сравнения файлов. Результаты сравнения очень интересные, так как наблюдается красивая картина: с периодичностью в 2 байта идет различие и совпадение. Налицо криптография исполняемого файла, но как провести обратный процесс, ведь мы решили отказаться от отладчиков и дизассемблеров? Ответ очень прост — нужно вспомнить алгоритмы шифрования. Самым простым и одним из самых эффективных (при правильном использовании) криптоалгоритмов является так называемое XOR-шифрование. Напомню, в данном методе побайтно проводится булева операция XOR. Первой переменной является байт для шифрования, а второй — ключ. Но перед нами тут же встает еще один вопрос — где взять ключ для дешифровки? Ответ прост. Нужно только вспомнить булеву алгебру, и ключ нам дадут в открытом виде.

Crypted = uncrypted XOR key;
Key = crypted XOR uncrypted

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

var
i, o: TFileStream;
bi, bo:byte;
x, ii, cc:integer;
begin
if open.Execute then
begin
SetCurrentDir('C:\Игры от NevoSoft\Peacecraft\
game');
//Переходим в папку с игрой
if not(fileexists('nsgame.dat')) then exit;
i:=TFileStream.Create('nsgame.dat', fmOpenRead);
o:=TFileStream.Create(open.FileName, fmOpenRead);
x:=0; ii:=0; cc:=0;
//перебираем 256 байт
for x:=0 to 255 do
begin
i.read(bi,1);
o.read(bo,1);
key.Caption:=format('%s %x', [key.Caption, (bi
xor bo)]);
inc(cc);
if cc mod 8 =0 then key.Caption:=key.
Caption+#13#10;
end;
i.Free;
o.Free;
end;

Как оказалось, ключ, используемый для шифрования, не очень-то большой: длина его составляет всего 4 байта. Забегая вперед, скажу, что для каждой игры от компании НевоСофт существует уникальный ключ шифрования. Как же его вычислить?!

Углубляться в дебри не стоит. На самом деле все очень просто — для получения ключа берем от сигнатуры PE-заголовка первые 2 байта и проводим операцию XOR. У многих возникнет вопрос: почему нужно проводить операцию XOR только на 2 байта, ведь длина ключа — 4 байта? Ответ прост — 3-й и 4-й байты в ключе всегда равны $00.

const
ckey = #77#90; // сигнатура PE-файла
begin
i:=TFileStream.Create(FileName, fmOpenRead);
for x:=1 to 2 do
begin
i.Read(tmp,1);
tmp:=ord(ckey[x]) xor tmp;
key:=key+chr(tmp);
end;
key:=key+#0#0;

Теперь в наших руках есть заветный ключ-монтировка, и можно смело приступать к написанию самой программы для взлома.

Мы писали, мы писали, наши пальчики устали...

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

procedure wrap(filename:string);
var
i, o: TFileStream;
bi, bo, tmp:byte;
x, ii:integer;
key:string[4];
buffer:TMemoryStream;
const
ckey = #77#90;//сигнатура PE-заголовка
begin
if not(fileexists(filename)) then exit; // небольшая проверка никогда не повредит =)
i:=TFileStream.Create(filename, fmOpenRead);//открываем на чтение подопытного
o:=TFileStream.Create(ChangeFileExt(filename,
'.exe'), fmCreate);//и на запись новый файл
buffer:=TMemoryStream.Create;
for x:=1 to 2 do // вычисляем крипто-ключ
begin
i.Read(tmp,1);
tmp:=ord(ckey[x]) xor tmp;
key:=key+chr(tmp);
end;
key:=key+#0#0;
i.Seek(0,soFromBeginning);
x:=0; ii:=0;
while i.Position<i.Size do // дешифруем файл с указанным
ключом
begin
inc(ii);
i.Read(bi, 1);
bo:=bi xor ord(key[ii]);
buffer.Write(bo,1);
inc(x);
if ii=4 then ii:=0;
end;
o.Write(Buffer.Memory^, Buffer.size);
i.Free;
o.Free;
buffer.Free;
showmessage('Wrapping done');
end;

Звучит барабанная дробь — запускаем полученный файл... Но почему-то нам снова предлагают пройти в сторону леса. Что, где, когда мы пропустили?! Ведь вроде бы все правильно сделали! Но не будем расстраиваться. Взяв в руки очередную баночку пива, продолжим изучать подопытного и попробуем найти наш промах. Вновь открываем Total Commander и проводим работу над ошибками, сравнивая нормальную игру с файлом, который у нас получился. На первый взгляд файлы одинаковы с точностью до одного байта. Но стоит только нажать кнопку "найти первое различие", Total Commander сообщает, что, начиная со смещения $43000, файлы не совпадают.

Следовательно, можно предположить, что шифруется не весь файл, а только первые $43000 байт. Поэтому берем в руки молоток и зубило и исправляем ошибки в нашем коде, заставив дешифровать только первые $43000 байт.

while i.Position<i.Size do
begin
inc(ii);
i.Read(bi, 1);
if x<$43000 then
begin
bo:=bi xor ord(key[ii]);
buffer.Write(bo,1);
end
else
buffer.Write(bi,1);
inc(x);
if ii=4 then ii:=0;
end;

Запускаем наш "взломщик" (впрочем, эти действия сложно назвать взломом, так как мы не модифицируем ни одного байта, непосредственно относящегося к игре, а лишь восстанавливаем исходное приложение путем дешифрования). Пару секунд ожидания; запускаем игру. Нашей радости нет предела, так как теперь игра абсолютно независима от NevoSoft'овского ланчера, который клянчит у нас деньги. Теперь можно расслабиться и, откинувшись в кресло, наслаждаться любимой игрушкой.

Заключение

Отличие хакера от обычного человека заключается не только в высоком уровне познаний IT-технологий, а в первую очередь в его любознательности и способности находить нестандартный подход к обычным делам. Исследование, которое мы сейчас произвели, доказывает еще один факт — для взлома не всегда нужно часами сидеть в отладчике, выискивая заветные байты, которые нужно пофиксить; иногда можно обойтись и теми программами, которые у нас всегда под рукой. За сим прощаюсь и рекомендую всегда блюсти ст. 272-274 УК РФ — и будет тебе счастье! :)



Теги: взлом , игры





СЛЕДУЮЩИЕ СТАТЬИ
Китайские закладки: непридуманная история о виртуализации, безопасности и шпионах
Бабло на малвари: как и сколько зарабатывают наши криминальные коллеги?
Безопасность расширений Opera: новые векторы атак через аддоны браузеров
Безопасность расширений Google Chrome: привычные векторы атак в контексте аддонов для браузера
Взлом игр ВКонтакте: исследование приложений ВКонтакте под микроскопом
Драйверы антивирусов — источник зла: уязвимости в драйверах проактивных защит
Взлом Psychometric Expert 7
Посев троянов в железные девайсы: заражение роутера Dlink 2500U
Брутим дедики по-новому: свежий подход к программированию RDP-брутфорсеров
Фаззинг, фаззить, фаззер: ищем уязвимости в программах, сетевых сервисах, драйверах
ПРЕДЫДУЩИЕ СТАТЬИ
Лучшие инструменты пентестера: статический анализ кода
Лучшие инструменты пентестера: отладчики и дизассемблеры
Распаковка StarForce: King’s Bounty
Фабрика сплоитов: учимся писать эксплоиты для Metasploit Framework
Лучшие инструменты пен-тестера: беспроводные сети
Лучшие инструменты пен-тестера: брутфорс паролей
Лучшие инструменты пен-тестера: сниферы и работа с пакетами
Виртуальная отладка: отладка kernel mode кода с использованием VMware
Эксплоит эксплоиту рознь: обзор популярных связок
Атака на QIP: низкоуровневое исследование популярного интернет-пейджера
ОБСУЖДЕНИЕ СТАТЬИ
Логин:
Пароль:
Если у вас есть форумный логин - вы можете использовать его, иначе анонимный гостевой доступ.

Для оставления комментария вы можете зарегистрироваться по упрощенной процедуре.

Обсуждение этой статьи на forum.xakep.ru
Для отправки сообщения введите код, указанный на картинке
Сообщение

UserГость
22.06.2010 20:39:25
Ответить Ссылка
старё уже новая защита она по слажней и по заковырестей
Userzeusdat
23.06.2010 12:45:20
Ответить Ссылка
ломать не строить - и если зделали новую защиту - єто не на долго)
так уж мир устроен)
UserГость
23.06.2010 15:31:31
Ответить Ссылка
Хе-хе, наверное старался, думал, что в журнал отпечатают? xD
UserГость
23.06.2010 19:46:28
Ответить Ссылка
да, пусть и школятки почуствуют себя хакерами
UserГость
24.06.2010 8:02:30
Ответить Ссылка
Дык вроде в журнале это уже и отпечатано..
UserГость
24.06.2010 10:24:25
Ответить Ссылка
можно ничего не патчить
в диспетчере убить процесс который время считает и играть дальше
UserГость
24.06.2010 12:56:37
Ответить Ссылка
это устаревший способ)
UserГость
24.06.2010 15:22:17
Ответить Ссылка
та блин переименуйте этот ТМП в ЕХЕ и он будет без демо
UserГость
01.07.2010 2:01:37
Ответить Ссылка
давайте дальше посмеемся:)))
UserГость
12.07.2010 10:28:06
Ответить Ссылка
А где смеяться ? Давай :)
Userudavka
21.09.2010 12:43:48
Ответить Ссылка
Все могут говорить слова типа "школота", ололо, "байан", да я в первом классе еще это знал....

Те кто правильно читал статью, поймет что статья не то "КАК ВЗЛОМАТЬ НЕВОСОФТ", а именно про нестандартный подход к ситуации..
Скажем минигайдик как раскуривать некоторые системы защиты без дисассемблера и т.п. имея на руках тока ТоталКомандер и Делфю !

Кто не согласен, лес там ========>
UserГость
08.11.2010 16:18:22
Ответить Ссылка
Дайте плиз ссылочку - как произвести подобное, только с современной защитой. желательно примеры на С, С++, а то паскаль все еще не могу понять. А описываемая в статье система защиты устарела с самого ее выхода. Хотя статья действительно не про это. Спасибо автору неплохо написано.
UserГость
04.01.2011 13:36:23
Ответить Ссылка
Все это фигня и развод. Эти кряки и кейгены уже не работают как полтора года. Давно уже всем известно что nevosoft поменял защиту на более сложную и новую. И я в интернете видел только 3 человека которые смогли сломать (включая меня) И конечно они все вылаживают платно. Я тоже создал некую прогу которая обходит защиту nevosoft 2010-2011. Дам ссылку на скачку контактная информация

мыло: skidan13@mail.ru

Skype: zotan11
UserГость
27.03.2011 0:45:53
Ответить Ссылка
Есть кейгены на новую защиту игр от Алавар и Невософт 2011 года выпуска. Кого интересует пишите:cityline@hotbox.ru
UserГость
26.09.2011 20:25:00
Ответить Ссылка
quote:

Есть кейгены на новую защиту игр от Алавар и Невософт 2011 года выпуска. Кого интересует пишите:cityline@hotbox.ru


и наверно платно))) а где гарантии что ваши будут работать))
UserГость
07.11.2011 17:06:47
Ответить Ссылка
здравствуйте Админ ну и всем тож не хворать,
оброщяюсь к админу сайта подскажите поконкретней пжалста как взломать игру люксор , я в компьютере не о4ень разбираюсь читал читал и чёт ничё не понял, у меня виндовс 7 максимальная чёт я половину папок не нашол про которые вы описывали если можно напишите пожалуйста поконкретней как взломать (зайди туда нажни то ) ну если ето возможно,заранее спасибо ))))
UserГость
19.12.2011 9:32:58
Ответить Ссылка
УМНИЦА!!! Дай Бог тебе здоровья и успехов.
UserГость
06.02.2012 7:16:56
Ответить Ссылка
У меня бесплатно)) KlimBorgSoft ucoz ru




Keywords: zPOSTz zHOMEz, zHACKz, zSOFTz, zINFOz, zYANDEXz z52489z
Для Авторов: edit Lock delete Lock



    Rambler's Top100