Комментарии 30
Уровень безопасности некоторых игр просто поражает. Например, лично сталкивался с тем, что в одной онлайн-игре была неправильно сделана система бана пользователя, так что человек с небольшим опытом работы с API мог входить на заблокированные аккаунты. Благодаря этому, за некоторую сумму денег можно было вытащить игровые ценности с заблокированного аккаунта, главное, чтобы это не заметил никто из тех, кто знал про бан аккаунта.
Если средств и ресурсов хватает, то можно сделать песочницу на сервере, игрок взломать игру не сможет, только сервер. Те же Rockstar жмотятся на серваки и сделали Gta online p2p, а в итоге количество читеров зашкаливает.
Неужели разработчики не отслеживают в автоматическом режиме такие вещи, как внезапное появление 18 квинтиллионов внутриигровых денег на одном персонаже?
Не всегда инструменты позволяют это сделать. Например, локализаторы многих игр по договору имеют доступ только к ограниченному числу инструментов и логам. Остальное недоступно. И с таким ограниченным набором бывает очень сложно вычислить аномалии. Особенно, если это требует хорошего знания игры (например, персонаж выполняет какие-то странные действия в одиночном инстансе, из босса падает дорогая вещь, которую на черном рынке человек продает за 1000 рублей). Несколько таких походов в день, можно неплохо жить. А поймать это гейм мастеру без информации со стороны сложно.
Иногда бывает технически сложно или дорого получить/связать/визуализировать те или иные данные
Я какое-то время держал фри-сервер одной игрушки+знал в общем и целом обстановку на официальном русском сервере.
Фокус вот в чем: далеко не всегда локализатору предоставляют исходники, а от разработчиков ответа добиться и дождаться патча сложно. К примеру, когда в открытый доступ на ютубе выложили фокус, позволяющий рисовать из воздуха предметы, китайцы фиксили его пару месяцев, если не ошибаюсь(хотя фиксов там было пара строчек, я делал такое со старыми исходниками, утекшими в сеть).
Вообще, что бы вы понимали — средней руки ММОшка с хреново написанным кодом(это я про все ту же игру) занимает метров 300 чисто исходников. В собранном виде эта ересь весит гигабайты. Не зная сути бага, найти его крайне затруднительно. А вот если знать, как его воспроизвести — иногда можно закрыть и без доступа к исходникам.
Кроме того, иногда можно вычислять читеров по определенным параметрам в БД(я так вычислял тех, кто рисует шмотки(пока не закрыл это в исходниках), в автоматическом режиме — правда уже не помню, как именно).
Еще печально то, что даже зная о баге, не всегда можно его закрыть, не имея определенных инструментов или тех же исходников. Забавно было, когда я на 1 пиратке пытался махнуть описание sql-inject'а и способы его фикса на патчи, контактируя с админами через клиент игры(накинул себе права ГМа и системными функциями нашел ГМов онлайн), словил от них бан при обращении(среагировали на левого ГМа). Что бы снова зайти в игру, используя этот баг, понадобилось минут 5-10 — после этого выслушали и забили болт. Года через пол вроде как пофиксили, не тестировал, не в курсе.
Вообще, занимаясь параллельно исследованием багов и содержанием собственного сервера, собрал прорву информации и игре(ну и кучу лулзов, было забавно).
Фокус вот в чем: далеко не всегда локализатору предоставляют исходники, а от разработчиков ответа добиться и дождаться патча сложно. К примеру, когда в открытый доступ на ютубе выложили фокус, позволяющий рисовать из воздуха предметы, китайцы фиксили его пару месяцев, если не ошибаюсь(хотя фиксов там было пара строчек, я делал такое со старыми исходниками, утекшими в сеть).
Вообще, что бы вы понимали — средней руки ММОшка с хреново написанным кодом(это я про все ту же игру) занимает метров 300 чисто исходников. В собранном виде эта ересь весит гигабайты. Не зная сути бага, найти его крайне затруднительно. А вот если знать, как его воспроизвести — иногда можно закрыть и без доступа к исходникам.
Кроме того, иногда можно вычислять читеров по определенным параметрам в БД(я так вычислял тех, кто рисует шмотки(пока не закрыл это в исходниках), в автоматическом режиме — правда уже не помню, как именно).
Еще печально то, что даже зная о баге, не всегда можно его закрыть, не имея определенных инструментов или тех же исходников. Забавно было, когда я на 1 пиратке пытался махнуть описание sql-inject'а и способы его фикса на патчи, контактируя с админами через клиент игры(накинул себе права ГМа и системными функциями нашел ГМов онлайн), словил от них бан при обращении(среагировали на левого ГМа). Что бы снова зайти в игру, используя этот баг, понадобилось минут 5-10 — после этого выслушали и забили болт. Года через пол вроде как пофиксили, не тестировал, не в курсе.
Вообще, занимаясь параллельно исследованием багов и содержанием собственного сервера, собрал прорву информации и игре(ну и кучу лулзов, было забавно).
Долгое время играл в 1 игрушку(клиентская MMORPG), в какой-то момент надоело просто играть, начал заниматься сначала разработкой под нее разного рода аддонов/макросов, немного ковырял существующего бота, пробовал писать свои тулзы(собственно, на этой игре и учился кодить).
В какой-то момент начал заниматься реверсом игры — оказалось весьма увлекательным занятием. Первый свой баг я нашел где-то через год игры и он базировался на чужом(можно было использовать некоторые низкоуровневые «гм»-команды, подправив память). Собственно, ничего шибко интересного там не было(поначалу) — но 1 из функций позволяла изучать рецепты удаленно, не подходя к NPC.
Я запустил в цикле проходку по всем ID, которые были в игре(не только по рецептам). Представьте мое удивление, когда из ниоткуда у меня появилось что-то в районе миллиона игровой валюты.
Позже мне попались в руки исходники сервера этой игры(утекли в паблик), из интереса посмотрел, в чем был прикол. Баг был довольно нетривиальным и работал так:
Под каждый тип объектов(вещи, рецепты, NPC и т.д.) использовались специальные базы, которые считывались в union из кучи struct'ов под каждый тип объекта. Прикол был в том, что если скармливать функции левые ID, менялись оффсеты и типы данных. Для определенных данных это значение уходило в минус, что и позволяло получать миллиард валюты из воздуха.
Это был самый легкий баг, который прожил около 4 лет. Но дальше было куда интереснее.
2 баг мне подсказал знакомый, который нашел способ рисовать характеристики на вещах. В какой-то момент я экспериментировал с разными вещами и открыл так называемые «гаши»-специальные «пакеты», в которых на сервере утрамбовывалось до 8 вещей. ID вещей записывалось в «статы» «гаши» как ID_COUNT, что привело к тому, что в момент, когда я открыл несколько разных гаш, выпал какой-то левый квестовый предмет.
В итоге можно было открывая эти «гаши» получать любые вещи(включая гм-овские, правда, на часть из них требовался класс «гм»), игровую валюту(в том числе и донатную) и прочие ништяки. Еще забавно было рисовать статы поверх яиц, из которых потом выводились питомцы, что позволяло из воздуха получать миллионы хп, атаки и прочих статов.
Но это были цветочки. Следующим багом я обнаружил sql-inject. В клиентской ММО. По иронии судьбы, единственным местом, которое разработчики не додумались проверять на инжект(ну, как проверять, они тупо перегоняли все значения в hex, после чего cast'овали его обратно в строки в mssql), оказался mac-адрес, которые передавали для вычисления читеров и бана по маку. В 40 символов получилось втулить запрос, который позволял выставить себе максимального ГМа.
Ну и последним(причем на данный момент рабочим на официальных серверах) багов оказался бэкдор от самих разработчиков, позволяющий легкой правкой клиента выставлять себе максимальные права.
В-общем, забавные были времена, да.
В какой-то момент начал заниматься реверсом игры — оказалось весьма увлекательным занятием. Первый свой баг я нашел где-то через год игры и он базировался на чужом(можно было использовать некоторые низкоуровневые «гм»-команды, подправив память). Собственно, ничего шибко интересного там не было(поначалу) — но 1 из функций позволяла изучать рецепты удаленно, не подходя к NPC.
Я запустил в цикле проходку по всем ID, которые были в игре(не только по рецептам). Представьте мое удивление, когда из ниоткуда у меня появилось что-то в районе миллиона игровой валюты.
Позже мне попались в руки исходники сервера этой игры(утекли в паблик), из интереса посмотрел, в чем был прикол. Баг был довольно нетривиальным и работал так:
Под каждый тип объектов(вещи, рецепты, NPC и т.д.) использовались специальные базы, которые считывались в union из кучи struct'ов под каждый тип объекта. Прикол был в том, что если скармливать функции левые ID, менялись оффсеты и типы данных. Для определенных данных это значение уходило в минус, что и позволяло получать миллиард валюты из воздуха.
Это был самый легкий баг, который прожил около 4 лет. Но дальше было куда интереснее.
2 баг мне подсказал знакомый, который нашел способ рисовать характеристики на вещах. В какой-то момент я экспериментировал с разными вещами и открыл так называемые «гаши»-специальные «пакеты», в которых на сервере утрамбовывалось до 8 вещей. ID вещей записывалось в «статы» «гаши» как ID_COUNT, что привело к тому, что в момент, когда я открыл несколько разных гаш, выпал какой-то левый квестовый предмет.
В итоге можно было открывая эти «гаши» получать любые вещи(включая гм-овские, правда, на часть из них требовался класс «гм»), игровую валюту(в том числе и донатную) и прочие ништяки. Еще забавно было рисовать статы поверх яиц, из которых потом выводились питомцы, что позволяло из воздуха получать миллионы хп, атаки и прочих статов.
Но это были цветочки. Следующим багом я обнаружил sql-inject. В клиентской ММО. По иронии судьбы, единственным местом, которое разработчики не додумались проверять на инжект(ну, как проверять, они тупо перегоняли все значения в hex, после чего cast'овали его обратно в строки в mssql), оказался mac-адрес, которые передавали для вычисления читеров и бана по маку. В 40 символов получилось втулить запрос, который позволял выставить себе максимального ГМа.
Ну и последним(причем на данный момент рабочим на официальных серверах) багов оказался бэкдор от самих разработчиков, позволяющий легкой правкой клиента выставлять себе максимальные права.
В-общем, забавные были времена, да.
Вот ваш коммент интереснее статьи, у вас концентрированные технические подробности, а не вода аля «я тут понял, что можно зарабатывать деньги», пересказанная несколько раз разными словами. Не в обиду переводчику, но зарубежные статьи часто таким грешат.
Не только зарубежные, хотя в этой статье содержание воды превышает все мыслимые и немыслимые рамки. Также порою читаешь биографию и удивляешься, как этот человек еще на Марс не улетел, ведь таким гением был…
На самом деле просто не все готовы открывать баги, приносящие деньги(ну или с этической стороны — отдавать подобные вещи в паблик, это как дать ядерную бомбу стаду обезьян. Плавали, знаем).
Ну и написать даже краткий гайд по эксплуатации определенных багов — еще тот квест: умея и зная, как это делать, перенос на новую версию клиента, даже не помня, что конкретно делал, занимает час-2 от силы(а если помнить — минут 10). А вот с 0 расписать пошагово — это задачка не на 1 час.
Ну и написать даже краткий гайд по эксплуатации определенных багов — еще тот квест: умея и зная, как это делать, перенос на новую версию клиента, даже не помня, что конкретно делал, занимает час-2 от силы(а если помнить — минут 10). А вот с 0 расписать пошагово — это задачка не на 1 час.
И почему же вы оставили профитное занятие в прошлом?
Сервер держать — непрофитно, по крайней мере, я им занимался больше из интереса, который под конец потерял.
Зарабатывал я толком разве что на 1 из багов на пиратке(пока был студентом), потом забанили, а заново этим заниматься было лень. Потом — просто надоело. Сейчас — есть хорошая работа и, слава Богу, нет необходимости заниматься такой фигней для заработка(а так — не шибко интересно, хотя иногда ностальгия прошибает).
Зарабатывал я толком разве что на 1 из багов на пиратке(пока был студентом), потом забанили, а заново этим заниматься было лень. Потом — просто надоело. Сейчас — есть хорошая работа и, слава Богу, нет необходимости заниматься такой фигней для заработка(а так — не шибко интересно, хотя иногда ностальгия прошибает).
в Южной Корее группу хакеров арестовали и обвинили в работе над взломами видеоигр и зарабатывании денег для Северокорейского правительства
Странно, а зачем им (хакерам) это?
Наверное не им нужно, а следствию — чтобы срок побольше дать. За работу на КНДР явно срок больше будет.
Это не им, а Ыну как один из вариантов зарабатывания валюты. Семьи этих хакеров вполне могут быть «под присмотром» дома, пока денежки зарабатываются.
Поясню про Ultima Online: В игре помимо забоя мобов можно было ещё много чего, в частности иметь недвижимость в произвольном месте на карте (не инстанс). Место, куда может влезть дом, должно быть свободно от деревьев, камней, и т.п., а карта мира не такая и большая (около 20 кв. км. не считая доп.территорий), поэтому количество таких мест ограничено, и как правило они все давно застроены. Это породило чёрный рынок территории под строительство.
Движок UO всегда был довольно сложным и запутанным; новые баги и эксплоиты находились каждый день, саппорт реагировал на репорты не всегда оперативно и адекватно. Игровые механики менялись довольно сильно на протяжении многих лет её существования. В частности, «неправильно установленный дом» — когда по текущим правилом в этом месте дома быть не должно, а он есть — это официальная фича этой игры.
В связи с вышеозначенным, хакеры также постоянно были занозой. С ними боролись, их банили, но меньше их не становилось. Дело несколько осложняло то, что для игры фанатами было разработано огромное количество полезных утилит разной степени разрешённости и распространённости.
Движок UO всегда был довольно сложным и запутанным; новые баги и эксплоиты находились каждый день, саппорт реагировал на репорты не всегда оперативно и адекватно. Игровые механики менялись довольно сильно на протяжении многих лет её существования. В частности, «неправильно установленный дом» — когда по текущим правилом в этом месте дома быть не должно, а он есть — это официальная фича этой игры.
В связи с вышеозначенным, хакеры также постоянно были занозой. С ними боролись, их банили, но меньше их не становилось. Дело несколько осложняло то, что для игры фанатами было разработано огромное количество полезных утилит разной степени разрешённости и распространённости.
Молодец. Выступил на Def Con и уже как бы не киберпреступник…
Выборочно у нас как то становятся или героями, или преступниками.
Выборочно у нас как то становятся или героями, или преступниками.
В таких статьях постоянно все положительное выпячивают, а отрицательное скрывают независимо от того, о чем скрывают. И учебу себе оплатил и против людей не читерил, о багах в саппорт сообщал, а потом даже решил бросить все это по морально-этическим причинам. Ну просто святой человек)
Ну да, герой. Сам он не читерил против людей, просто читерски одевал донатеров за деньги.
Star Wars New RepublicОпечатка в оригинале, должно быть Star Wars: The Old Republic.
Помню в diablo шмот клонировали. Роняли на пол какой-нибудь шмот и в момент поднятия если что-то взять из инвентаря, то у тебя оказывалась в руках копия шмотки)
А в Dungeon defenders 1 до сих пор можно «взламывать» валюту с помощью… artmoney. На офф ранкед серверах. И не только валюту, а любые статы на шмотках. И долгое время существовал черный рынок, где непонятно кто покупал шмот и валюту. Естественно хакнутую. Мб и до сих пор существует, хотя «хакнуть» эту игру и школьник вася сможет. Дюп любых шмоток тоже есть…
Разработчикам пофигу, сделали 2ю часть где погрузились еще глубже в p2w, только уже не с платными персонажами как в первой, а стэшем и бустами.
Разработчикам пофигу, сделали 2ю часть где погрузились еще глубже в p2w, только уже не с платными персонажами как в первой, а стэшем и бустами.
В warframe по слухам долгое время можно было в памяти редактировать хп, патроны и прочие радости жизни. Еще я в свое время развлекался, бегая на спидхаке по определенным миссиям, где это приносило неплохие дивиденты, правда, потом тупо попался — у них накатили «античит», который при запуске(!) игры чекал на наличие cheatengine и банил после 2-3 раз.
Правда, игрушка работает по принципу «клиент-хостер — сервер»(а в сингле — твой клиент и есть сервер), потому это не так удивительно.
Про онлайн-игрушки под андроид я вообще молчу, многие при выходе крякабельна(правда, потом баги все-таки обычно закрывают, если игра приносит доход). При желании можно зачастую найти видео-гайды или моды под это дело(правда, я обычно натыкался только на протухшие с прошлых версий).
Ну и про вышеупомянутую игру — я описывал чисто хаки, а дюпов там хватало. Самый прикольный был завязан на рассинхронизации баттл-серверов(арены, осады) с основными: можно было зайти на осаду, как-то хитро разлогиниться(уже не помню), залогиниться опять, впихнуть все дюпаемые предметы и валюты на почту или аук и зайти обратно на осаду. Происходил rollback(на осаде сохранялось старое состояние чара) и получали готовый дюп.
Вообще дюпов было несколько, еще всякие приколы в стиле «зайди в данж, дойди до ласта, выйди всей патькой в офф, зайди твином, ресетни данж, зайди обратно в данж всей пати в обновленном данже у последнего босса».
Флайхак местный — чуть ли не местная легенда: его даже пытались на сервере закрывать оригинальным способом — начинаешь плыть(флайхак именно так и работал, эмулировал плавание) и тупо дохнешь. Народ взвыл — фичу выключили(хотя настройка осталась). Еще им можно было при определенных условиях пролетать сквозь стены и скипать треш(который настолько лют обычно, что босс по сравнению с ним — аки младой ягненок).
Еще забавно было инвизеров палить. В игре есть 2 типа инвизов — ГМовская команда(сервер) и все остальные(клиент). Проходимся простым кодом по всем окружающим игрокам, перетыкаем флаг — видим все живое.
Ну и самая смешная хохма: в какой-то момент кто-то завтыкал и выставил неправильные флаги воротам на осадах(НПС, просто с особыми настройками). В итоге ворота, которые при грамотном хиле или багоюзе вынести крайне затруднительно, можно было тупо… обойти. Как? Подбегаем к воротам, кидаем фир(страх) — ворота убегают.
Правда, игрушка работает по принципу «клиент-хостер — сервер»(а в сингле — твой клиент и есть сервер), потому это не так удивительно.
Про онлайн-игрушки под андроид я вообще молчу, многие при выходе крякабельна(правда, потом баги все-таки обычно закрывают, если игра приносит доход). При желании можно зачастую найти видео-гайды или моды под это дело(правда, я обычно натыкался только на протухшие с прошлых версий).
Ну и про вышеупомянутую игру — я описывал чисто хаки, а дюпов там хватало. Самый прикольный был завязан на рассинхронизации баттл-серверов(арены, осады) с основными: можно было зайти на осаду, как-то хитро разлогиниться(уже не помню), залогиниться опять, впихнуть все дюпаемые предметы и валюты на почту или аук и зайти обратно на осаду. Происходил rollback(на осаде сохранялось старое состояние чара) и получали готовый дюп.
Вообще дюпов было несколько, еще всякие приколы в стиле «зайди в данж, дойди до ласта, выйди всей патькой в офф, зайди твином, ресетни данж, зайди обратно в данж всей пати в обновленном данже у последнего босса».
Флайхак местный — чуть ли не местная легенда: его даже пытались на сервере закрывать оригинальным способом — начинаешь плыть(флайхак именно так и работал, эмулировал плавание) и тупо дохнешь. Народ взвыл — фичу выключили(хотя настройка осталась). Еще им можно было при определенных условиях пролетать сквозь стены и скипать треш(который настолько лют обычно, что босс по сравнению с ним — аки младой ягненок).
Еще забавно было инвизеров палить. В игре есть 2 типа инвизов — ГМовская команда(сервер) и все остальные(клиент). Проходимся простым кодом по всем окружающим игрокам, перетыкаем флаг — видим все живое.
Ну и самая смешная хохма: в какой-то момент кто-то завтыкал и выставил неправильные флаги воротам на осадах(НПС, просто с особыми настройками). В итоге ворота, которые при грамотном хиле или багоюзе вынести крайне затруднительно, можно было тупо… обойти. Как? Подбегаем к воротам, кидаем фир(страх) — ворота убегают.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Человек, 20 лет зарабатывавший взломом онлайн-игр