Меня зовут Джош Филлипс и я хочу представить вам особого гостя, которого нет в списках выступающих, его зовут Майк Доннелли. Позже я дам ему возможность представить себя. Обычно я выступаю на конференции последним, поэтому надеюсь, что наше выступление не сыграет для вас роль колыбельной. Если кто-то ещё собирается выступить после нас, я ему не завидую, но ничего не могу с этим поделать. Ну что же, давайте начнём.
![](https://habrastorage.org/r/w780q1/webt/bk/a3/n1/bka3n1kyke2lmz2cgyuubsxef4k.jpeg)
Я слышал, что всем сегодняшним докладчикам не везло, потому что у них возникали проблемы с показом слайдов, но надеюсь, что у нас с всё получится. Итак, в реальной жизни я исследую вредоносное программное обеспечение в лаборатории Касперского. Я также работал аналитиком вредоносного ПО в компании Microsoft и вопреки расхожему мнению или тому, что можно найти в Википедии, название вируса Conficker не является немецким или датским эквивалентом английского слова «assfucker», это всего лишь придумана мной игра слов. Так что придумывание названия для этого компьютерного червя можно считать самым большим достижением в моей жизни. Я являюсь «золотым фармером» и в качестве хобби я написал несколько ботов для компьютерных игр, попробуйте догадаться, для каких именно. Теперь я предоставлю слово Майку, чтобы он рассказал о себе.
Майк Доннелли: я Майк Доннели, известный под ником Mercury, создавший интернет-бота Glider для игры World of Warcraft. Установлением прав собственности на этого бота, 100000 копий которого были распроданы третьей стороной за 4 миллиона долларов, занимался суд. Мне удалось обжаловать решение суда первой инстанции, и апелляционный суд постановил возместить мне, как истинному владельцу, ущерб в размере 6,5 миллионов долларов, однако в любом случае судебное дело не доставило мне особого удовольствия.
![](https://habrastorage.org/r/w780q1/webt/hg/tz/vv/hgtzvvwwj8bhg1hzuazifi9io9i.jpeg)
Можно сказать, что у меня нет никакого хобби, потому что вместо него я занимаюсь судебным процессом. Положительным в этом дело было то, что один из пользователей «Глайдера», узнав, где я живу, подарил мне пиво, доставив его прямо к дому и опубликовав сообщение на форуме Glider: «Эй, Mercury, выгляните за дверь – там для вас есть 6 банок пива»! Это было довольно приятно, оно действительно там было, я прошел домой через гараж и поэтому не заметил сразу упаковку пивных банок перед входной дверью. Это был всего лишь Budweiser, но бесплатное пиво — это бесплатное пиво, так что если меня пытаются «нагреть» на шесть с половиной миллионов долларов, то я, по крайней мере, получил бесплатно несколько банок пива.
Джош Филлипс: я тут увидел в зале несколько женщин, так что советую вам обратить внимание на Майка – он до сих пор холостяк и к тому же богат. Кстати, я женат, но не настолько удачлив. Итак, цель нашего разговора не в том, чтобы сделать кого-нибудь экспертом по взлому онлайн-игр, так что если вы пришли сюда за этим, то будете разочарованы. Мы предполагаем, что вы хотя бы немного разбираетесь в технических аспектах этого вопроса, но если это не так, мы все же надеемся, что вы кое-что знаете о взломе MMORG. Замечу, что мы не специалисты по устройству «нулевых дней» в этом сегменте интернета, так что если вы хотите услышать от нас об этом, то тоже будете разочарованы. Но мы действительно чувствуем, что не должны устраивать 0-days, потому что и так достаточно легко уничтожить любую онлайн-игру, которая была когда-либо выпущена.
Цели нашей презентации:
На этом слайде приведена цитата Сунь-Цзы: «Тот, кто знает, когда он может сражаться, а когда не может, будет победителем», и я думаю, Майк обладает в этом некоторым опытом. Он выбрал борьбу, он единственный из моих знакомых, который выбрал такой путь, думаю, вы можете его спросить, насколько успешно он борется.
Майк Доннелли: могло бы быть и получше!
Джош Филлипс: да, могло бы быть получше!
Майк Доннелли: а могло бы быть и хуже.
Джош Филлипс: да, могло бы быть и так. Вы видите слайд с краткими юридическими выводами, к которым Майк пришел на основании собственного опыта, о чем он собирается рассказать. Мы не юристы, но:
Майк Доннелли: скажу в первую очередь, что я не юрист и не могу давать советы в области права, но как обычный человек, могу сказать вам – если вы связались с юристами, считайте, что вас поимели. Если дело дойдёт до суда, для вас это в любом случае плохо закончится. Множество людей так же, как и я, считают, что если у вас на руках имеются все копии оригинального программного обеспечения, коды совместимости и так далее, вас никто не победит. Однако процесс доказательства своих прав происходит очень болезненно и обходится невероятно дорого, и даже если у вас есть «железные» аргументы в свою пользу, шанс доказать свою правоту весьма невелик.
![](https://habrastorage.org/r/w780q1/webt/yd/xa/yj/ydxayj5gthrvdqowyxayg4wumsa.jpeg)
Поэтому вам нужно понять, что судебное разбирательство в любом случае плохая затея, и стоит принять все меры, чтобы его избежать. Если вам нужно продать что-то из Nevis, Neptune или 7th Dimencion, постарайтесь находиться от них подальше, чтобы не попасть под суд, потому что если игровые компании посчитают, что вы, как разработчик, пытаетесь их «надуть», то тут же появятся у вашей двери.
Джош Филлипс: Китай – хорошее место, где можно затеряться. Мой отказ от ответственности звучит так: мы – хитрецы, так что то, что я решил раскрыть свои секреты публике, не самый лучший выбор. Поэтому некоторые реальные имена и места были изменены для защиты невиновных, в данном случае – нас самих.
Итак, зачем мы взламываем игры? В большинстве случаев для того, чтобы привлечь женское внимание, я уже упоминал, что Майк — холостяк. По правде, это делается для заработка – Майк сделал 4 миллиона долларов на продаже бота, а мой первый конкурент зарабатывал ежемесячно по полмиллиона, это серьёзные деньги. Иногда люди таким образом мстят кому-нибудь или обманывают, занимаясь читерством. Поднимите руки, кто хотел бы пройти «школу» Game Hacking 101, мне бы очень хотелось, чтобы этот предмет преподавали в моём колледже!
![](https://habrastorage.org/r/w780q1/webt/y8/j6/cd/y8j6cdwprod_joeaw1csowvafay.jpeg)
Итак, мы собираемся упомянуть некоторые инструменты для взлома игр, приведённые на следующем слайде:
Пользовательские инструменты, которые вы можете создать сами, что бывает весьма полезно.
Большинство людей, занимающихся реверс-инжинирингом, не могут без них жить, поэтому вполне очевидно, что можно делать этими инструментами – например, деассемблировать код, модифицировать файлы с помощью отладчика Ollydbg. Если вы не знаете, что такое отладчик, вам здесь не место. Когда нужен инструмент для работы с памятью, большинство людей пользуется ArtMoney или чем-то похожим. Если вы работаете с форматами файлов, то 010 Editor предоставляет вам режим god-mode, потому что если кто-то пытается заниматься этим без этого редактора, его ждёт неудача. Вам нужен также инструмент для захвата пакетов типа Wireshark, если вы хотите разобраться с содержимым пакета.
Большое значение имеют инструменты, созданные лично вами, потому что если вы будете пытаться взламывать игры без собственноручно написанных скриптов для DES и прочих волшебных штуковин, то просто зря потратите время.
Майк Доннелли: хочу добавить – если вы создаёте свое собственное ПО или кусок программного кода, который планируете использовать сами или продать, в дальнейшем это может стать вашим бизнесом. Вы сможете клонировать разные игровые предметы и находить ошибки игры, просто подходя к этому с умом. Однако наша дискуссия не только о том, как зарабатывать этим деньги, но и о том, как получать удовольствие от взлома игр, так что я не собираюсь особо сосредотачиваться на аспектах прибыли.
Джош Филлипс: знаете, нет ничего хуже, чем создать жестко закодированного бота, который перестаёт работать после обновления игры и вам приходится всё начинать сначала, так что вот для чего ещё могут пригодиться ваши инструменты.
Я попробовал немного классифицировать инструменты для взлома игр. Их можно разделить на читы, ботов, пользовательские клиенты/серверы и эксплойты. Я не собираюсь углубляться в детали, позже мы подробно обсудим все эти вещи.
![](https://habrastorage.org/r/w780q1/webt/zu/ba/x8/zubax8oog9w9-mjz8nm_jex2aza.jpeg)
Некоторые люди пишут для игр пользовательские клиенты, аддоны, например, один из моих конкурентов из Китая написал такой клиент для World of Warcraft, чем в значительной степени нас уничтожил. Вы знаете, что на одном компьютере можно запустить сотни таких клиентов, и вы не сможете с ними конкурировать, если запустите на своём компьютере всего 3 или 4 клиента.
Майк Доннелли: кстати о пользовательских клиентах. Поднимите руки те, кто играл в Hellgate: London? Ладно, а сколько людей продолжали играть в неё через полгода после релиза? Один человек?
Джош Филлипс: мне жалко этих людей…
Майк Доннелли: причина, по которой я это упоминаю, состоит в том, что я знаю парня из Германии, который работает с World of Warcraft, и когда вышла бета-версия Hellgate: London, он был так восхищен, что написал для неё бесклиентного боса. Он сделал реверс-инжиниринг всего протокола, все эти рукопожатия, шифрование и тому подобное и был готов к запуску игры, но получилось так, что он просто зря потратил тысячи часов (примечание: все игровые серверы были закрыты менее чем через год после релиза этой игры).
Джош Филлипс: это будет следующим «вау»!
Майк Доннелли: да, это будет нашим следующим «вау»! Так что если вы делаете что-то для собственной выгоды, относитесь к этом как к бизнесу.
Джош Филлипс: иначе вы просто зря потратите своё время. Итак, если говорить об эксплойтах, то они могут быть как вредоносными, так и способными принести вам ощутимую выгоду, например, клонирование предметов Dupes или режим бога god-mode. С помощью эксплойтов можно также осуществлять внутриигровые кражи или использовать DoS атаку на сервер.
Активный хакинг игр включает в себя взлом карт и поиск путей обхода, который вы можете осуществить с помощью реверс-инжиниринга и математических разработок. Поиск путей представляет собой очень трудное занятие, так что если собираетесь этим заняться, вам понадобиться библиотека Recast Navigation для поиска путей в пространстве 3D-игр, которая поможет решить вам самые серьёзные проблемы.
Мы проведём нечто вроде отсеивания нубов, так что я надеюсь, что присутствующие здесь смогут уследить на нашей мыслью. Для того, чтобы взламывать игры, вы должны обладать следующими навыками.
![](https://habrastorage.org/r/w780q1/webt/tr/a5/d1/tra5d1vcvdstt1wlnbzr9sy9s_e.jpeg)
Вам нужно выучить язык ассемблирования, например, Intell-синтаксис, язык C/C++, научиться работать с набором функций Win32 API и, возможно, научиться писать драйвера. Будет очень полезно научиться писать такие вещи, как Lane pixel reading, о котором кто-то рассказывал здесь пару лет назад. Поэтому нубам здесь не место.
Кто-нибудь знает парня, изображенного на этом слайде? Его зовут Рич Турман, я думаю, он одним из первых предстал перед публикой в качестве «золотого фармера». Эта картинка была опубликована в статье Института инженеров электротехники и электроники IEEE примерно в 2000-2001 годах, когда он заработал на онлайн-играх более 100 тысяч долларов. Эта та сумма, которую он признал, но я думаю, что в действительности Рич заработал намного больше, просто занимаясь взломом Altum Online в игре Minecraft. В основном он «игрался» с редактированием памяти, находил ключевые структуры данных и извлекал из этого прибыль.
Поиск памяти – это магическое искусство, это то, что вам действительно нужно. Если вы не можете оперировать памятью, чтобы находить места, в которых хранятся такие вещи, как игровые очки, навыки, умения и тому подобное, вам будет очень трудно выполнять статический анализ игры с целью извлечения прибыли.
![](https://habrastorage.org/r/w780q1/webt/u9/3m/eu/u93meuuvmwvyio3rajxtpurq5-4.jpeg)
Я уже упоминал несколько онлайн-игр и уверен, что большинство знакомы с такой игрой, как World of Warcraft. Эта игра была одной из первых, в которой использовался коммодифицированный скриптовый движок, однако большинство игр, которые его используют, совершают ошибки. Создатели WoW использовали Lua-скриптовый язык для разработки игр, побочным эффектом которого является встраивание в двоичный файл строки с именем функции. Это существенно облегчает реверс-инжиниринг, так что если вас интересует, например, как применить то или иное заклинание во время битвы, вы просто ищите строку со словом «заклинание», находите там соответствующий код и используете его в игровом процессе в своих целях.
Майк Доннелли: хочу добавить, что использование Lua делает процесс реверс-инжиниринга в играх невероятно простым. Вы можете написать Lua-скрипт, который будет делать всё, что вы хотите, и проверить его в тестовом режиме. Если вы знаете ID заклинания, то можете приостановить игру, вставить этот код и использовать в процессе игры нужное заклинание.
Джош Филлипс: да, скриптовые движки делают обратную разработку чрезвычайно легким занятием, с ними действительно не возникает никаких технических проблем. Сейчас я кратко пройдусь по истории нескольких игр. Думаю, что Ultima Online была, вероятно, первой крупной MMO, собиравшей до 225 000 онлайн-игроков, но это сущие мелочи по сравнению с World of Warcraft или онлайм-играми на Facebook, которые имеют до 30 миллионов пользователей. Кто-нибудь из вас играет в Farmville? Нет? Я всё равно вам не верю.
Вы все в курсе, что в этих играх люди читерят, создают предметы, проходят сквозь стены и так далее.
Самой массовой игрой стала WoW, она даже попала в книгу рекордов Гиннеса как самая популярная ролевая онлайн-игра с 10 миллионами пользователей, пожалуй, большее количество пользователей собирают только китайские игры. Замечу, что компании-разработчики иногда воздерживаются от продажи своих игр или сезонных пропусков в некоторых странах.
![](https://habrastorage.org/r/w780q1/webt/j1/yc/em/j1ycemfaot1pijjqwhvwn56wfja.jpeg)
Майк Доннелли: да, Blizzard иногда вообще отказывать высылать компакт-диски, они просто приходят и стучат в вашу дверь. Они работают через адвокатов, которые предлагают вам подписать проект обращения в суд, или отрезать себе палец. Вот как они работают. WoW – большая игра, там столько денег, что даже если ты захватываешь 1% рынка, это оправдывает все риски. Но если вы собираетесь рисковать, игра должна быть достаточно массовой.
Джош Филлипс: хочу добавить, что иногда Blizzard оказывается у вас на пороге, и если у вас нет брата в польской мафии, который станет гоняться за ними с бейсбольной битой, вы рискуете закончить как Майк.
Майк Доннелли: так действительно и происходит.
Джош Филлипс: да, так происходит. Замечу, что даже если ваша игра действительно маленькая, вы всё равно можете заработать на ней пару «штук» в месяц, а это довольно солидные деньги для многих люде, особенно в Восточной Европе или в Южной Америке. Пара тысяч долларов в месяц – и вы живёте как король.
Eve Online, написанная на Python, была первой игрой, которая использовала скриптовый движок, основанный на принципе commodity, а игра Darkfall представляла собой полмиллиона строк на Java. Интересной особенностью и большой ошибкой было то, что в игре Age of Conan разработчики оставили детализированные отладочные строки, так что я написал для неё скрипт, который осуществлял поиск IDA вроде названий классов, и этот скрипт переименовывал функции внутри моего IDB в соответствии с этими строками отладки.
В игре Aion разработчики попытались воспрепятствовать взлому, упаковав игру с помощью Themida и использовав Game Guard, но если не использовать дополнительные функции этой защиты, то её довольно легко обойти. Вы могли откатиться на патч назад и взломать Game Guard до того, как они попытались исправить свою игру. На этом слайде приведён список MMORG игр, в который стали использовать чит Speedhack довольно быстро после выхода: это Age of Conan, WoW, UO, EQ, Vangard.
![](https://habrastorage.org/r/w780q1/webt/dx/9z/59/dx9z59b152qgkmq4qnswnygqk1o.jpeg)
Microsoft потратила 50 миллионов долларов на эту кучу дерьма, и я думаю, что они отменили выход ещё трёх MMO именно потому, что испугались, что их тоже взломают. В принципе, чит Speedhack можно использовать в отношении любой онлайн-игры, если вы знаете, как его выполнить, так что все, кто интересуются взломом World of Warcraft, могут обратиться ко мне по этому поводу после нашего выступления, я буду в комнате вопросов и ответов. Такие 2D онлайн-игры, как UO или Ultima Online, решили эту проблему, но 3D игры, которые интенсивно задействуют процессорные мощности для отслеживания движений 20-30 тысяч пользователей, до сих пор не провели работу по устранению уязвимостей.
Майк Доннелли: они просто доверяют клиентам, не представляя, насколько умными они могут быть.
Джош Филлипс: вот именно, так что если кто-нибудь из присутствующих здесь доверяет клиентам онлайн-игр, то он спокойно может покинуть этот зал. Итак, dupes, или клонирование игровых предметов, похоже на то, что делает Федеральная резервная система, когда её представители идут в казначейство и говорят: «эй, вы не можете напечатать нам миллион миллиардов долларов, а мы обещаем, что заставим американский народ вернуть этот долг». Это действительно то, что может сделать вас богатым, у меня есть друг, который взламывает игры таким образом и зарабатывает около миллиона долларов в месяц. У него есть 2 автомобиля Lamborgini – twin-turbo Diablo и Murсielago, а теперь он собирается приобрести лимонно-зелёный Gallardo, так что мне за него немножечко стыдно.
Майк Доннелли: добавлю пару слов о клонировании игровых объектов. Здесь нет ничего высокотехнологичного, при использовании dupes всё сводится к поиску промахов разработчиков, которые не думали, что какой-то умный парень сможет написать кусок кода, который сделает в игре что-то особенное. Например, в WoW вы сможете создать много крафта или заклинаний, которые продадите другим игрокам.
Всё это возможно лишь потому, что разработчики не задумались о том, что вы сможете использовать клонирование предметов в игре или вызвать сбой сервера. Например, когда Джош надаёт по моей эпической заднице, я просто обрушу игровой сервер, и ущерб, нанесенный моему персонажу, не сохранится, а затем я снова войду в игру как ни в чём ни бывало. Но суть в том, что всё это простое ремесло, которым вы все умеете заниматься, не зависимо от того, разбираетесь ли вы в реверс-инжиниринге или нет.
Джош Филлипс: это как в реальном мире исследований компьютерной безопасности, когда вы находите какой-то баг, например, в Adobe, и проводите 3 недели в поисках решения, как этот баг можно использовать, как обойти алгоритм SLR и тому подобное. Интересно, что я могу подменить свой ID идентификатором любого другого случайного игрока и просто сказать, что бесплатно получил миллион миллиардов всяких игровых вещей. Так что для этого просто нужно немного повозиться с игрой.
Давайте поговорим более подробно о методах взлома, когда, например, вы пытаетесь создать телепорт или что-то подобное. Я быстро пройдусь по этим вещам на следующих слайдах.
![](https://habrastorage.org/r/w780q1/webt/sg/tw/dx/sgtwdxt223ksuo_pwcl-eu50qys.jpeg)
Для того, чтобы телепортироваться, вы ищите позицию игрока в памяти, а затем с помощью редактора памяти меняете её значение, и если повезёт, вы перенесётесь в другую точку карты.
Майк Доннелли: и вас за это банят!
Джош Филлипс: да, за такое вас могут забанить и исключить из игры. Такой способ часто использовался читерами в старых играх. Удивительна наивность многих разработчиков, которые не задумываются о том, чтобы написать игру, которую трудно взломать. Вы можете пойти более сложным путём, например, в случае с WoW, которая существует уже 7 лет, но разработчики так и не смогли обеспечить корректную работу защиты. Можно модифицировать пакеты движения, изменять штампы времени, использовать более сложные варианты читерства типа Speedhack, которые всё ещё работают в этой игре. С помощью Speedhack можно изменить частоту процессора, скорость перемещения персонажа, и если вам посчастливится, все эти чипы до сих пор будут работать в вашей игре. Но я не знаю, что значит «сжать сеть, чтобы сбросить код сервера».
Майк Доннелли: это я написал! Это касается искусственно создаваемых лагов, которые всё ещё работают в такой игре, как World of Warcraft, как и в любой современной онлайн-игре. Вы можете буквально отключить кабель Ethernet, немного «подвигаться» в игре и заново подключиться к интернету. При этом сетевой стек определяет, что TCP-подключение умерло, после чего игровой клиент сообщает серверу, что ваш персонаж теперь находится совсем в другом месте. В данном случае вы имеете дело с кодом перегруженности сервера, так что они должны согласиться на небольшую задержку. Во многих ситуациях вы можете вытащить сетевой кабель, оббежать монстра, и так как вся логика того, что монстр должен вас при этом «прибить», находится на стороне сервера, то монстр не заметит этого вашего маневра. Затем вы подключаете кабель, игровой клиент обнаруживает, что вы находитесь позади монстра, то есть «победили» монстра, и активирует соответствующий триггер.
Однако не пробуйте проделать это, если используете беспроводное подключение к интернету, потому вы просто закроете TCP-соединение. Но если вы можете просто физически прервать соединение, вытащив кабель, это срабатывает.
Джош Филлипс: да, это действительно высокие технологии взлома! Мужик, это просто отстой!
Майк Доннелли: думаю, ты должен учитывать такую возможность, потому что таким путём можно вскрыть множество сундуков в разных подземельях. Вы знаете, что в WoW можно играть группой из 5 человек в одном подземелье, и вы могли бы проникнуть довольно далеко, просто используя лаги, чтобы обойти монстров и добраться до сундуков. Вы просто грабите все сундуки и используете свою добычу для того, чтобы получить деньги.
Джош Филлипс: теперь я знаю, кто виноват в том, что в подземельях больше не осталось сундуков с крафтом. Я упомяну «дупс» — если кто-то не знает, что это такое, скажу, что dupes это просто клонирование, или репликация игровых предметов, позволяющая вам получить целую кучу нужных вещей. В основном это ключ к получению больших денег, которым пользуется мой бедный друг с двумя «Ламборгини». Как я уже сказал, разработчики очень наивны, поэтому просто удивляются тому, что кто-то «хорошо играет» в их игру.
Итак, многие игры запускаются на нескольких серверах, и если вы достаточно быстро бегаете туда-сюда, сервер потеряет ваш след, а ваш рюкзак начнёт волшебным образом заполняться всякими предметами. Используя лаги, вы даже можете успеть обобрать труп своего персонажа до того, как он исчезнет.
25:40 мин
Конференция DEFCON 19. Взламываем MMORPG ради веселья и прибыли. Часть 2
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до весны бесплатно при оплате на срок от полугода, заказать можно тут.
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
![](https://habrastorage.org/webt/bk/a3/n1/bka3n1kyke2lmz2cgyuubsxef4k.jpeg)
Я слышал, что всем сегодняшним докладчикам не везло, потому что у них возникали проблемы с показом слайдов, но надеюсь, что у нас с всё получится. Итак, в реальной жизни я исследую вредоносное программное обеспечение в лаборатории Касперского. Я также работал аналитиком вредоносного ПО в компании Microsoft и вопреки расхожему мнению или тому, что можно найти в Википедии, название вируса Conficker не является немецким или датским эквивалентом английского слова «assfucker», это всего лишь придумана мной игра слов. Так что придумывание названия для этого компьютерного червя можно считать самым большим достижением в моей жизни. Я являюсь «золотым фармером» и в качестве хобби я написал несколько ботов для компьютерных игр, попробуйте догадаться, для каких именно. Теперь я предоставлю слово Майку, чтобы он рассказал о себе.
Майк Доннелли: я Майк Доннели, известный под ником Mercury, создавший интернет-бота Glider для игры World of Warcraft. Установлением прав собственности на этого бота, 100000 копий которого были распроданы третьей стороной за 4 миллиона долларов, занимался суд. Мне удалось обжаловать решение суда первой инстанции, и апелляционный суд постановил возместить мне, как истинному владельцу, ущерб в размере 6,5 миллионов долларов, однако в любом случае судебное дело не доставило мне особого удовольствия.
![](https://habrastorage.org/webt/hg/tz/vv/hgtzvvwwj8bhg1hzuazifi9io9i.jpeg)
Можно сказать, что у меня нет никакого хобби, потому что вместо него я занимаюсь судебным процессом. Положительным в этом дело было то, что один из пользователей «Глайдера», узнав, где я живу, подарил мне пиво, доставив его прямо к дому и опубликовав сообщение на форуме Glider: «Эй, Mercury, выгляните за дверь – там для вас есть 6 банок пива»! Это было довольно приятно, оно действительно там было, я прошел домой через гараж и поэтому не заметил сразу упаковку пивных банок перед входной дверью. Это был всего лишь Budweiser, но бесплатное пиво — это бесплатное пиво, так что если меня пытаются «нагреть» на шесть с половиной миллионов долларов, то я, по крайней мере, получил бесплатно несколько банок пива.
Джош Филлипс: я тут увидел в зале несколько женщин, так что советую вам обратить внимание на Майка – он до сих пор холостяк и к тому же богат. Кстати, я женат, но не настолько удачлив. Итак, цель нашего разговора не в том, чтобы сделать кого-нибудь экспертом по взлому онлайн-игр, так что если вы пришли сюда за этим, то будете разочарованы. Мы предполагаем, что вы хотя бы немного разбираетесь в технических аспектах этого вопроса, но если это не так, мы все же надеемся, что вы кое-что знаете о взломе MMORG. Замечу, что мы не специалисты по устройству «нулевых дней» в этом сегменте интернета, так что если вы хотите услышать от нас об этом, то тоже будете разочарованы. Но мы действительно чувствуем, что не должны устраивать 0-days, потому что и так достаточно легко уничтожить любую онлайн-игру, которая была когда-либо выпущена.
Цели нашей презентации:
- кратко осветить историю онлайн-игр и использование в них реальных денег;
- объяснить, почему мы их взламываем;
- подробно рассказать о процессе взлома;
- подробно рассказать о написании игровых ботов.
На этом слайде приведена цитата Сунь-Цзы: «Тот, кто знает, когда он может сражаться, а когда не может, будет победителем», и я думаю, Майк обладает в этом некоторым опытом. Он выбрал борьбу, он единственный из моих знакомых, который выбрал такой путь, думаю, вы можете его спросить, насколько успешно он борется.
Майк Доннелли: могло бы быть и получше!
Джош Филлипс: да, могло бы быть получше!
Майк Доннелли: а могло бы быть и хуже.
Джош Филлипс: да, могло бы быть и так. Вы видите слайд с краткими юридическими выводами, к которым Майк пришел на основании собственного опыта, о чем он собирается рассказать. Мы не юристы, но:
- всё, что вы знаете, не имеет никакого значения;
- ваши умные юридические идеи никого не волнуют, даже если они совершенно правильные,
если вы участвуете в судейском разбирательстве, вас поимеют в любом случае; - избегайте судебного разбирательства: убегайте, скройтесь в оффшоре, исчезните с этой планеты и т.д.;
- Blizzard всё равно появится за вашей дверью.
Майк Доннелли: скажу в первую очередь, что я не юрист и не могу давать советы в области права, но как обычный человек, могу сказать вам – если вы связались с юристами, считайте, что вас поимели. Если дело дойдёт до суда, для вас это в любом случае плохо закончится. Множество людей так же, как и я, считают, что если у вас на руках имеются все копии оригинального программного обеспечения, коды совместимости и так далее, вас никто не победит. Однако процесс доказательства своих прав происходит очень болезненно и обходится невероятно дорого, и даже если у вас есть «железные» аргументы в свою пользу, шанс доказать свою правоту весьма невелик.
![](https://habrastorage.org/webt/yd/xa/yj/ydxayj5gthrvdqowyxayg4wumsa.jpeg)
Поэтому вам нужно понять, что судебное разбирательство в любом случае плохая затея, и стоит принять все меры, чтобы его избежать. Если вам нужно продать что-то из Nevis, Neptune или 7th Dimencion, постарайтесь находиться от них подальше, чтобы не попасть под суд, потому что если игровые компании посчитают, что вы, как разработчик, пытаетесь их «надуть», то тут же появятся у вашей двери.
Джош Филлипс: Китай – хорошее место, где можно затеряться. Мой отказ от ответственности звучит так: мы – хитрецы, так что то, что я решил раскрыть свои секреты публике, не самый лучший выбор. Поэтому некоторые реальные имена и места были изменены для защиты невиновных, в данном случае – нас самих.
Итак, зачем мы взламываем игры? В большинстве случаев для того, чтобы привлечь женское внимание, я уже упоминал, что Майк — холостяк. По правде, это делается для заработка – Майк сделал 4 миллиона долларов на продаже бота, а мой первый конкурент зарабатывал ежемесячно по полмиллиона, это серьёзные деньги. Иногда люди таким образом мстят кому-нибудь или обманывают, занимаясь читерством. Поднимите руки, кто хотел бы пройти «школу» Game Hacking 101, мне бы очень хотелось, чтобы этот предмет преподавали в моём колледже!
![](https://habrastorage.org/webt/y8/j6/cd/y8j6cdwprod_joeaw1csowvafay.jpeg)
Итак, мы собираемся упомянуть некоторые инструменты для взлома игр, приведённые на следующем слайде:
- IDA
- Ollydbg
- Ваш любимый редактор памяти/поисковик
- 010 Editor
- Wireshark
Пользовательские инструменты, которые вы можете создать сами, что бывает весьма полезно.
Большинство людей, занимающихся реверс-инжинирингом, не могут без них жить, поэтому вполне очевидно, что можно делать этими инструментами – например, деассемблировать код, модифицировать файлы с помощью отладчика Ollydbg. Если вы не знаете, что такое отладчик, вам здесь не место. Когда нужен инструмент для работы с памятью, большинство людей пользуется ArtMoney или чем-то похожим. Если вы работаете с форматами файлов, то 010 Editor предоставляет вам режим god-mode, потому что если кто-то пытается заниматься этим без этого редактора, его ждёт неудача. Вам нужен также инструмент для захвата пакетов типа Wireshark, если вы хотите разобраться с содержимым пакета.
Большое значение имеют инструменты, созданные лично вами, потому что если вы будете пытаться взламывать игры без собственноручно написанных скриптов для DES и прочих волшебных штуковин, то просто зря потратите время.
Майк Доннелли: хочу добавить – если вы создаёте свое собственное ПО или кусок программного кода, который планируете использовать сами или продать, в дальнейшем это может стать вашим бизнесом. Вы сможете клонировать разные игровые предметы и находить ошибки игры, просто подходя к этому с умом. Однако наша дискуссия не только о том, как зарабатывать этим деньги, но и о том, как получать удовольствие от взлома игр, так что я не собираюсь особо сосредотачиваться на аспектах прибыли.
Джош Филлипс: знаете, нет ничего хуже, чем создать жестко закодированного бота, который перестаёт работать после обновления игры и вам приходится всё начинать сначала, так что вот для чего ещё могут пригодиться ваши инструменты.
Я попробовал немного классифицировать инструменты для взлома игр. Их можно разделить на читы, ботов, пользовательские клиенты/серверы и эксплойты. Я не собираюсь углубляться в детали, позже мы подробно обсудим все эти вещи.
![](https://habrastorage.org/webt/zu/ba/x8/zubax8oog9w9-mjz8nm_jex2aza.jpeg)
Некоторые люди пишут для игр пользовательские клиенты, аддоны, например, один из моих конкурентов из Китая написал такой клиент для World of Warcraft, чем в значительной степени нас уничтожил. Вы знаете, что на одном компьютере можно запустить сотни таких клиентов, и вы не сможете с ними конкурировать, если запустите на своём компьютере всего 3 или 4 клиента.
Майк Доннелли: кстати о пользовательских клиентах. Поднимите руки те, кто играл в Hellgate: London? Ладно, а сколько людей продолжали играть в неё через полгода после релиза? Один человек?
Джош Филлипс: мне жалко этих людей…
Майк Доннелли: причина, по которой я это упоминаю, состоит в том, что я знаю парня из Германии, который работает с World of Warcraft, и когда вышла бета-версия Hellgate: London, он был так восхищен, что написал для неё бесклиентного боса. Он сделал реверс-инжиниринг всего протокола, все эти рукопожатия, шифрование и тому подобное и был готов к запуску игры, но получилось так, что он просто зря потратил тысячи часов (примечание: все игровые серверы были закрыты менее чем через год после релиза этой игры).
Джош Филлипс: это будет следующим «вау»!
Майк Доннелли: да, это будет нашим следующим «вау»! Так что если вы делаете что-то для собственной выгоды, относитесь к этом как к бизнесу.
Джош Филлипс: иначе вы просто зря потратите своё время. Итак, если говорить об эксплойтах, то они могут быть как вредоносными, так и способными принести вам ощутимую выгоду, например, клонирование предметов Dupes или режим бога god-mode. С помощью эксплойтов можно также осуществлять внутриигровые кражи или использовать DoS атаку на сервер.
Активный хакинг игр включает в себя взлом карт и поиск путей обхода, который вы можете осуществить с помощью реверс-инжиниринга и математических разработок. Поиск путей представляет собой очень трудное занятие, так что если собираетесь этим заняться, вам понадобиться библиотека Recast Navigation для поиска путей в пространстве 3D-игр, которая поможет решить вам самые серьёзные проблемы.
Мы проведём нечто вроде отсеивания нубов, так что я надеюсь, что присутствующие здесь смогут уследить на нашей мыслью. Для того, чтобы взламывать игры, вы должны обладать следующими навыками.
![](https://habrastorage.org/webt/tr/a5/d1/tra5d1vcvdstt1wlnbzr9sy9s_e.jpeg)
Вам нужно выучить язык ассемблирования, например, Intell-синтаксис, язык C/C++, научиться работать с набором функций Win32 API и, возможно, научиться писать драйвера. Будет очень полезно научиться писать такие вещи, как Lane pixel reading, о котором кто-то рассказывал здесь пару лет назад. Поэтому нубам здесь не место.
Кто-нибудь знает парня, изображенного на этом слайде? Его зовут Рич Турман, я думаю, он одним из первых предстал перед публикой в качестве «золотого фармера». Эта картинка была опубликована в статье Института инженеров электротехники и электроники IEEE примерно в 2000-2001 годах, когда он заработал на онлайн-играх более 100 тысяч долларов. Эта та сумма, которую он признал, но я думаю, что в действительности Рич заработал намного больше, просто занимаясь взломом Altum Online в игре Minecraft. В основном он «игрался» с редактированием памяти, находил ключевые структуры данных и извлекал из этого прибыль.
Поиск памяти – это магическое искусство, это то, что вам действительно нужно. Если вы не можете оперировать памятью, чтобы находить места, в которых хранятся такие вещи, как игровые очки, навыки, умения и тому подобное, вам будет очень трудно выполнять статический анализ игры с целью извлечения прибыли.
![](https://habrastorage.org/webt/u9/3m/eu/u93meuuvmwvyio3rajxtpurq5-4.jpeg)
Я уже упоминал несколько онлайн-игр и уверен, что большинство знакомы с такой игрой, как World of Warcraft. Эта игра была одной из первых, в которой использовался коммодифицированный скриптовый движок, однако большинство игр, которые его используют, совершают ошибки. Создатели WoW использовали Lua-скриптовый язык для разработки игр, побочным эффектом которого является встраивание в двоичный файл строки с именем функции. Это существенно облегчает реверс-инжиниринг, так что если вас интересует, например, как применить то или иное заклинание во время битвы, вы просто ищите строку со словом «заклинание», находите там соответствующий код и используете его в игровом процессе в своих целях.
Майк Доннелли: хочу добавить, что использование Lua делает процесс реверс-инжиниринга в играх невероятно простым. Вы можете написать Lua-скрипт, который будет делать всё, что вы хотите, и проверить его в тестовом режиме. Если вы знаете ID заклинания, то можете приостановить игру, вставить этот код и использовать в процессе игры нужное заклинание.
Джош Филлипс: да, скриптовые движки делают обратную разработку чрезвычайно легким занятием, с ними действительно не возникает никаких технических проблем. Сейчас я кратко пройдусь по истории нескольких игр. Думаю, что Ultima Online была, вероятно, первой крупной MMO, собиравшей до 225 000 онлайн-игроков, но это сущие мелочи по сравнению с World of Warcraft или онлайм-играми на Facebook, которые имеют до 30 миллионов пользователей. Кто-нибудь из вас играет в Farmville? Нет? Я всё равно вам не верю.
Вы все в курсе, что в этих играх люди читерят, создают предметы, проходят сквозь стены и так далее.
Самой массовой игрой стала WoW, она даже попала в книгу рекордов Гиннеса как самая популярная ролевая онлайн-игра с 10 миллионами пользователей, пожалуй, большее количество пользователей собирают только китайские игры. Замечу, что компании-разработчики иногда воздерживаются от продажи своих игр или сезонных пропусков в некоторых странах.
![](https://habrastorage.org/webt/j1/yc/em/j1ycemfaot1pijjqwhvwn56wfja.jpeg)
Майк Доннелли: да, Blizzard иногда вообще отказывать высылать компакт-диски, они просто приходят и стучат в вашу дверь. Они работают через адвокатов, которые предлагают вам подписать проект обращения в суд, или отрезать себе палец. Вот как они работают. WoW – большая игра, там столько денег, что даже если ты захватываешь 1% рынка, это оправдывает все риски. Но если вы собираетесь рисковать, игра должна быть достаточно массовой.
Джош Филлипс: хочу добавить, что иногда Blizzard оказывается у вас на пороге, и если у вас нет брата в польской мафии, который станет гоняться за ними с бейсбольной битой, вы рискуете закончить как Майк.
Майк Доннелли: так действительно и происходит.
Джош Филлипс: да, так происходит. Замечу, что даже если ваша игра действительно маленькая, вы всё равно можете заработать на ней пару «штук» в месяц, а это довольно солидные деньги для многих люде, особенно в Восточной Европе или в Южной Америке. Пара тысяч долларов в месяц – и вы живёте как король.
Eve Online, написанная на Python, была первой игрой, которая использовала скриптовый движок, основанный на принципе commodity, а игра Darkfall представляла собой полмиллиона строк на Java. Интересной особенностью и большой ошибкой было то, что в игре Age of Conan разработчики оставили детализированные отладочные строки, так что я написал для неё скрипт, который осуществлял поиск IDA вроде названий классов, и этот скрипт переименовывал функции внутри моего IDB в соответствии с этими строками отладки.
В игре Aion разработчики попытались воспрепятствовать взлому, упаковав игру с помощью Themida и использовав Game Guard, но если не использовать дополнительные функции этой защиты, то её довольно легко обойти. Вы могли откатиться на патч назад и взломать Game Guard до того, как они попытались исправить свою игру. На этом слайде приведён список MMORG игр, в который стали использовать чит Speedhack довольно быстро после выхода: это Age of Conan, WoW, UO, EQ, Vangard.
![](https://habrastorage.org/webt/dx/9z/59/dx9z59b152qgkmq4qnswnygqk1o.jpeg)
Microsoft потратила 50 миллионов долларов на эту кучу дерьма, и я думаю, что они отменили выход ещё трёх MMO именно потому, что испугались, что их тоже взломают. В принципе, чит Speedhack можно использовать в отношении любой онлайн-игры, если вы знаете, как его выполнить, так что все, кто интересуются взломом World of Warcraft, могут обратиться ко мне по этому поводу после нашего выступления, я буду в комнате вопросов и ответов. Такие 2D онлайн-игры, как UO или Ultima Online, решили эту проблему, но 3D игры, которые интенсивно задействуют процессорные мощности для отслеживания движений 20-30 тысяч пользователей, до сих пор не провели работу по устранению уязвимостей.
Майк Доннелли: они просто доверяют клиентам, не представляя, насколько умными они могут быть.
Джош Филлипс: вот именно, так что если кто-нибудь из присутствующих здесь доверяет клиентам онлайн-игр, то он спокойно может покинуть этот зал. Итак, dupes, или клонирование игровых предметов, похоже на то, что делает Федеральная резервная система, когда её представители идут в казначейство и говорят: «эй, вы не можете напечатать нам миллион миллиардов долларов, а мы обещаем, что заставим американский народ вернуть этот долг». Это действительно то, что может сделать вас богатым, у меня есть друг, который взламывает игры таким образом и зарабатывает около миллиона долларов в месяц. У него есть 2 автомобиля Lamborgini – twin-turbo Diablo и Murсielago, а теперь он собирается приобрести лимонно-зелёный Gallardo, так что мне за него немножечко стыдно.
Майк Доннелли: добавлю пару слов о клонировании игровых объектов. Здесь нет ничего высокотехнологичного, при использовании dupes всё сводится к поиску промахов разработчиков, которые не думали, что какой-то умный парень сможет написать кусок кода, который сделает в игре что-то особенное. Например, в WoW вы сможете создать много крафта или заклинаний, которые продадите другим игрокам.
Всё это возможно лишь потому, что разработчики не задумались о том, что вы сможете использовать клонирование предметов в игре или вызвать сбой сервера. Например, когда Джош надаёт по моей эпической заднице, я просто обрушу игровой сервер, и ущерб, нанесенный моему персонажу, не сохранится, а затем я снова войду в игру как ни в чём ни бывало. Но суть в том, что всё это простое ремесло, которым вы все умеете заниматься, не зависимо от того, разбираетесь ли вы в реверс-инжиниринге или нет.
Джош Филлипс: это как в реальном мире исследований компьютерной безопасности, когда вы находите какой-то баг, например, в Adobe, и проводите 3 недели в поисках решения, как этот баг можно использовать, как обойти алгоритм SLR и тому подобное. Интересно, что я могу подменить свой ID идентификатором любого другого случайного игрока и просто сказать, что бесплатно получил миллион миллиардов всяких игровых вещей. Так что для этого просто нужно немного повозиться с игрой.
Давайте поговорим более подробно о методах взлома, когда, например, вы пытаетесь создать телепорт или что-то подобное. Я быстро пройдусь по этим вещам на следующих слайдах.
![](https://habrastorage.org/webt/sg/tw/dx/sgtwdxt223ksuo_pwcl-eu50qys.jpeg)
Для того, чтобы телепортироваться, вы ищите позицию игрока в памяти, а затем с помощью редактора памяти меняете её значение, и если повезёт, вы перенесётесь в другую точку карты.
Майк Доннелли: и вас за это банят!
Джош Филлипс: да, за такое вас могут забанить и исключить из игры. Такой способ часто использовался читерами в старых играх. Удивительна наивность многих разработчиков, которые не задумываются о том, чтобы написать игру, которую трудно взломать. Вы можете пойти более сложным путём, например, в случае с WoW, которая существует уже 7 лет, но разработчики так и не смогли обеспечить корректную работу защиты. Можно модифицировать пакеты движения, изменять штампы времени, использовать более сложные варианты читерства типа Speedhack, которые всё ещё работают в этой игре. С помощью Speedhack можно изменить частоту процессора, скорость перемещения персонажа, и если вам посчастливится, все эти чипы до сих пор будут работать в вашей игре. Но я не знаю, что значит «сжать сеть, чтобы сбросить код сервера».
Майк Доннелли: это я написал! Это касается искусственно создаваемых лагов, которые всё ещё работают в такой игре, как World of Warcraft, как и в любой современной онлайн-игре. Вы можете буквально отключить кабель Ethernet, немного «подвигаться» в игре и заново подключиться к интернету. При этом сетевой стек определяет, что TCP-подключение умерло, после чего игровой клиент сообщает серверу, что ваш персонаж теперь находится совсем в другом месте. В данном случае вы имеете дело с кодом перегруженности сервера, так что они должны согласиться на небольшую задержку. Во многих ситуациях вы можете вытащить сетевой кабель, оббежать монстра, и так как вся логика того, что монстр должен вас при этом «прибить», находится на стороне сервера, то монстр не заметит этого вашего маневра. Затем вы подключаете кабель, игровой клиент обнаруживает, что вы находитесь позади монстра, то есть «победили» монстра, и активирует соответствующий триггер.
Однако не пробуйте проделать это, если используете беспроводное подключение к интернету, потому вы просто закроете TCP-соединение. Но если вы можете просто физически прервать соединение, вытащив кабель, это срабатывает.
Джош Филлипс: да, это действительно высокие технологии взлома! Мужик, это просто отстой!
Майк Доннелли: думаю, ты должен учитывать такую возможность, потому что таким путём можно вскрыть множество сундуков в разных подземельях. Вы знаете, что в WoW можно играть группой из 5 человек в одном подземелье, и вы могли бы проникнуть довольно далеко, просто используя лаги, чтобы обойти монстров и добраться до сундуков. Вы просто грабите все сундуки и используете свою добычу для того, чтобы получить деньги.
Джош Филлипс: теперь я знаю, кто виноват в том, что в подземельях больше не осталось сундуков с крафтом. Я упомяну «дупс» — если кто-то не знает, что это такое, скажу, что dupes это просто клонирование, или репликация игровых предметов, позволяющая вам получить целую кучу нужных вещей. В основном это ключ к получению больших денег, которым пользуется мой бедный друг с двумя «Ламборгини». Как я уже сказал, разработчики очень наивны, поэтому просто удивляются тому, что кто-то «хорошо играет» в их игру.
Итак, многие игры запускаются на нескольких серверах, и если вы достаточно быстро бегаете туда-сюда, сервер потеряет ваш след, а ваш рюкзак начнёт волшебным образом заполняться всякими предметами. Используя лаги, вы даже можете успеть обобрать труп своего персонажа до того, как он исчезнет.
25:40 мин
Конференция DEFCON 19. Взламываем MMORPG ради веселья и прибыли. Часть 2
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до весны бесплатно при оплате на срок от полугода, заказать можно тут.
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?