Взломав пару Windows приложений по статьям с Cracklab для новичков, мне захотелось побороть одну игрушку, вроде бы она называлась Mummy Maze, не помню.
Игра от обычного приложения отличается тем, что у неё труднее цепляться к различным событиям. Если программа требующая регистрацию выводит MessageBox через WinAPI, то игра это делает какими-то своими способами.
Собственно, тогда я не знал и этого: я знал только магию замены инструкций jz на jnz и обратно. Из отладчиков я знал только WinDbg.
Открыв ехе-шник игры в WinDbg, я трассировал программу до первого встретившегося jz или jnz, запоминал адрес инструкции в буфер обмена, заменял прыжок на противоположный, и смотрел, что получилось. Иногда программа падала, иногда выполнялась как обычно — приходилось ждать несколько секунд, пока у неё заполнится симпатичная полоса загрузки и отобразится «Please register».
Завершал выполнение программы, прыгал на запомненный в буфере адрес, ставил точку останова и перезапускал на выполнение снова, трассируя до очередного jz/jnz.
Таким образом я сидел три вечера до поздней ночи, пока от ощущения тошноты, уставших глаз, да и пальцев, не приходилось ложиться спать. Но на третью ночь, дав себе очередное «последнее обещание», что ещё разок, и спать, игра вдруг сжалилась надо мной, и выдала после загрузки что-то вроде «Спасибо за регистрацию».
Радости моей не было предела, чистая эйфория! Я прыгал по своей комнате и мысленно кричал — вслух не мог, так как все давно спали.
Здорово мне тогдашнему повезло, конечно: ведь я пребывал в священной уверенности, что в любой программе всегда есть один единственный переход, исправив который, можно взломать любую программу, главное его найти. Сделай разработчики логику проверок чуть сложнее, я бы ещё долго тыкал в trace into, и в итоге сдался и меня постигло разочарование.
Понравилась Ваша статья, пока читал, даже поймал себя на мысли, что тороплюсь: будто чем быстрее прочитаю, тем быстрее главный герой получит свою скидку на операцию. )
После запуска бота мышку невозможно вывести за пределы игрового поля — она будет вечно прыгать по указанным точкам, даже при запуске диспетчера задач. Признаюсь, что я из этой ситуации вышел с помощью перезагрузки…
Теперь, чтобы остановить бота нужно просто нажать Win+D.
Люблю для этой цели использовать Num Lock. Проверить, горит ли он, можно одной строчкой.
Самый первый раз, когда я вошёл в игру, задавал вопросы в городе «что тут как», какой-то парень позвал меня поближе к охранникам и попросить ударить его. Я доверчиво это сделал, и тут же меня насмерть сразило заклинание стражника.
— и что ты этим хотел показать?
— а то, что здесь нельзя никому доверять!
Это было очень смешно и пафосно.
если админы живые, что же они ее не пилят?
Я так понял, что благодаря открытию этого сервера, игра как раз и начала потихоньку пилиться — нужный человек получил исходники и ресурсы в свои руки. Но занимается он игрой в свободное от работы время, денег она ему не приносит.
решил совместить хакерство и прокачку «честного» персонажа
Мне было любопытно сунуть нос во внутренности игры, а дальше само как-то получилось.
Было бы веселее
убивать людей одной командой, получать админские права
Согласен, было бы веселее, но чисто интуитивно думаю, что в протокол игры, доступный на клиентской стороне, не заложены такие возможности. Да и о таких вещах мне бы сразу пришлось рассказать администрации, и статьи бы не было.
Так как это игра «моего детства», мне будет приятно, если статья повлияет на игру положительно. Не думаю, что кого-то в 21 веке сильно может заинтересовать такой олдскулл, но чем чёрт не шутит.
А если помечтать, и предположить, что часть волны пользователей Хабра останется в игре, это будет вообще прекрасно, я верю, что общая адекватность происходящего в игре от этого явления поднимется.
Взломав пару Windows приложений по статьям с Cracklab для новичков, мне захотелось побороть одну игрушку, вроде бы она называлась Mummy Maze, не помню.
Игра от обычного приложения отличается тем, что у неё труднее цепляться к различным событиям. Если программа требующая регистрацию выводит MessageBox через WinAPI, то игра это делает какими-то своими способами.
Собственно, тогда я не знал и этого: я знал только магию замены инструкций jz на jnz и обратно. Из отладчиков я знал только WinDbg.
Открыв ехе-шник игры в WinDbg, я трассировал программу до первого встретившегося jz или jnz, запоминал адрес инструкции в буфер обмена, заменял прыжок на противоположный, и смотрел, что получилось. Иногда программа падала, иногда выполнялась как обычно — приходилось ждать несколько секунд, пока у неё заполнится симпатичная полоса загрузки и отобразится «Please register».
Завершал выполнение программы, прыгал на запомненный в буфере адрес, ставил точку останова и перезапускал на выполнение снова, трассируя до очередного jz/jnz.
Таким образом я сидел три вечера до поздней ночи, пока от ощущения тошноты, уставших глаз, да и пальцев, не приходилось ложиться спать. Но на третью ночь, дав себе очередное «последнее обещание», что ещё разок, и спать, игра вдруг сжалилась надо мной, и выдала после загрузки что-то вроде «Спасибо за регистрацию».
Радости моей не было предела, чистая эйфория! Я прыгал по своей комнате и мысленно кричал — вслух не мог, так как все давно спали.
Здорово мне тогдашнему повезло, конечно: ведь я пребывал в священной уверенности, что в любой программе всегда есть один единственный переход, исправив который, можно взломать любую программу, главное его найти. Сделай разработчики логику проверок чуть сложнее, я бы ещё долго тыкал в trace into, и в итоге сдался и меня постигло разочарование.
Люблю для этой цели использовать Num Lock. Проверить, горит ли он, можно одной строчкой.
— и что ты этим хотел показать?
— а то, что здесь нельзя никому доверять!
Это было очень смешно и пафосно.
Я так понял, что благодаря открытию этого сервера, игра как раз и начала потихоньку пилиться — нужный человек получил исходники и ресурсы в свои руки. Но занимается он игрой в свободное от работы время, денег она ему не приносит.
Часть админов остаются в игре из патриотизма, привязанности к ней. Некоторые — чтобы иметь игровое преимущество.
Мне было любопытно сунуть нос во внутренности игры, а дальше само как-то получилось.
Согласен, было бы веселее, но чисто интуитивно думаю, что в протокол игры, доступный на клиентской стороне, не заложены такие возможности. Да и о таких вещах мне бы сразу пришлось рассказать администрации, и статьи бы не было.
А если помечтать, и предположить, что часть волны пользователей Хабра останется в игре, это будет вообще прекрасно, я верю, что общая адекватность происходящего в игре от этого явления поднимется.