All streams
Search
Write a publication
Pull to refresh
11
0
Send message

let result = await fetch():
while(result){ // correct condition there
result=await fetch(result);
}


Если не провтыкал, покрывает все пункты.

А blender for web чем не подошел? Чисто для отображения моделей вроде годится, если не ошибаюсь.

Похоже, что со временем таки придется реверсить и их. Если интересно будет, конечно.

Любопытно, спасибо.
Но опять же, чисто по своему опыту-пока боллшая часть под андроид-таки моно.

Это статья о том, как это сделать на лету, без пересборки и подписи apk. Кроме того, некоторые игры проверяют чексумму apk, а вот проверку на изменение памяти пока нигде не видел(кроме 1 игрушки, в которой вообще довольно параноидальная система безопасности, проверяющая наличие рута и падающая при наличии подключения к adb-тут так и не понял, в чем реальная причина).
Кроме того, этот способ извлекает подгруженные dll'ки: да, в случае, если они лежат в apk просто так, смысла его применять нет, но очень часто разработчики шифруют тем или иным способом как минимум Assemble_CSharp(сталкивался в 3-4 играх, пока тягал из apk, потом стал тащить из памяти, потому реальный процент не знаю).
Вот этот способ позволяет извлекать все библиотеки после их подгрузку в память, а значит в их исходном, нешифрованном состоянии.
Да, под винду довольно несложно заниматься подобными вещами. Есть куча метод для редактирования кода под Unity3d, от Mono.Cecil до инжектов разного плана. Правда, если на игре есть защита, то сначала придется ее обходить(к примеру, на пиратских серверах Rust развлекался, делая мини-карту и развешивая здоровенные цилиндры над игроками, а на сервере с включенным VAC'ом быстро прилетел автобан, возможно, не стоило использовать встроенные «админские» фичи).
Единственное что я не знаю, что использует Unity3D под винду: если все тот же Mono, то описанный в статье способ должен работать и под виндой. Кстати, он же должен работать и под iOS, но проверить не на чем.
Впрочем, как оказалось, под андроид — тоже)

Да, я пару лет тоже назад писал что-то по этой самой фриде. Полезна отладка в рпальном времени+можнт не писать свой инжектор, а испол зовать их тулзу.
Ну и времени на исследования уходит несоизмеримо меньше

У il2cpp несколько другой подход, в котором я пока не осоьо разобрался. Насколько понимаю, они перегоняют исходный код в плюсы, после чего перехват осуществляется все тем же способом, как в примере перехватываются функции моно.
Проблема в том, что не всегда срабатывает перехват, возможно, не хватает места для трамплина либо что-то делаю не так.
Оффсеты дампятся через il2cppdumper, потом ida. В памяти проще рассчитать как findexportbyname любой экспортированной функции-baseaddress+ida offset.
К счсстью таких игр пока мало попадалось.

Благодарю, поправил.
Вообще тут есть интересный момент: не знаю, как сейчас, но еще пару месяцев назад ВК спокойно отдавал музыку по прямым ссылкам незалогиненным пользователям. В итоге проще было относительно простым скриптом сгенерировать список ссылок в браузере, после чего скормить его той же ноде. В итоге выкачивать плейлисты стало быстро и удобно — намотал скроллом нужное кол-во — и вперед.
Пару недель назад делал похожую штуку для заказчика.
Было лень ковырять ffmpeg, потому схитрожопил. Есть такая штука, как electron(https://electron.atom.io/) — гибрид ноды и браузера.
В актуальных обозревателях есть такая вещь, как captureStream(https://developer.mozilla.org/ru/docs/Web/API/HTMLMediaElement/captureStream), который умеет брать стрим из audio/video тегов. Дальше относительно просто — через peer.js гоняем стрим клиентам, получаем штуку, умеющую стримить все форматы, поддерживаемые браузером.
Дальше берем все тот же youtube-dl(или аналоги) под ноду, тащим ссылку на стрим — готово.
Единственный минус — нужен актуальный браузер. Из плюсов — минимум кода, максимум эффективности.

P.S. Кстати говоря, captureStream умеет еще и снимать данные с канваса, что позволяет делать штуки вроде стрима WebGL игр.
Тот неловкий случай, когда за неделю до этого пишешь самопальный плеер для ютуба, поддерживающий оригинальные/кастомные плейлисты…
В warframe по слухам долгое время можно было в памяти редактировать хп, патроны и прочие радости жизни. Еще я в свое время развлекался, бегая на спидхаке по определенным миссиям, где это приносило неплохие дивиденты, правда, потом тупо попался — у них накатили «античит», который при запуске(!) игры чекал на наличие cheatengine и банил после 2-3 раз.
Правда, игрушка работает по принципу «клиент-хостер — сервер»(а в сингле — твой клиент и есть сервер), потому это не так удивительно.
Про онлайн-игрушки под андроид я вообще молчу, многие при выходе крякабельна(правда, потом баги все-таки обычно закрывают, если игра приносит доход). При желании можно зачастую найти видео-гайды или моды под это дело(правда, я обычно натыкался только на протухшие с прошлых версий).
Ну и про вышеупомянутую игру — я описывал чисто хаки, а дюпов там хватало. Самый прикольный был завязан на рассинхронизации баттл-серверов(арены, осады) с основными: можно было зайти на осаду, как-то хитро разлогиниться(уже не помню), залогиниться опять, впихнуть все дюпаемые предметы и валюты на почту или аук и зайти обратно на осаду. Происходил rollback(на осаде сохранялось старое состояние чара) и получали готовый дюп.
Вообще дюпов было несколько, еще всякие приколы в стиле «зайди в данж, дойди до ласта, выйди всей патькой в офф, зайди твином, ресетни данж, зайди обратно в данж всей пати в обновленном данже у последнего босса».
Флайхак местный — чуть ли не местная легенда: его даже пытались на сервере закрывать оригинальным способом — начинаешь плыть(флайхак именно так и работал, эмулировал плавание) и тупо дохнешь. Народ взвыл — фичу выключили(хотя настройка осталась). Еще им можно было при определенных условиях пролетать сквозь стены и скипать треш(который настолько лют обычно, что босс по сравнению с ним — аки младой ягненок).
Еще забавно было инвизеров палить. В игре есть 2 типа инвизов — ГМовская команда(сервер) и все остальные(клиент). Проходимся простым кодом по всем окружающим игрокам, перетыкаем флаг — видим все живое.

Ну и самая смешная хохма: в какой-то момент кто-то завтыкал и выставил неправильные флаги воротам на осадах(НПС, просто с особыми настройками). В итоге ворота, которые при грамотном хиле или багоюзе вынести крайне затруднительно, можно было тупо… обойти. Как? Подбегаем к воротам, кидаем фир(страх) — ворота убегают.
Сервер держать — непрофитно, по крайней мере, я им занимался больше из интереса, который под конец потерял.
Зарабатывал я толком разве что на 1 из багов на пиратке(пока был студентом), потом забанили, а заново этим заниматься было лень. Потом — просто надоело. Сейчас — есть хорошая работа и, слава Богу, нет необходимости заниматься такой фигней для заработка(а так — не шибко интересно, хотя иногда ностальгия прошибает).
Ясен пень. Просто фраза «я вашу ММОшку артманей ломал» звучит забавно.
Я вам таки больше скажу, в свое время не раз видел как народ ухахатывался над теми, кто спрашивал, как взломать онлайновую игру через artmoney или cheat engine. Как показала практика, если найти подходящую уязвимость, это вполне возможно)
На самом деле просто не все готовы открывать баги, приносящие деньги(ну или с этической стороны — отдавать подобные вещи в паблик, это как дать ядерную бомбу стаду обезьян. Плавали, знаем).
Ну и написать даже краткий гайд по эксплуатации определенных багов — еще тот квест: умея и зная, как это делать, перенос на новую версию клиента, даже не помня, что конкретно делал, занимает час-2 от силы(а если помнить — минут 10). А вот с 0 расписать пошагово — это задачка не на 1 час.
Я какое-то время держал фри-сервер одной игрушки+знал в общем и целом обстановку на официальном русском сервере.
Фокус вот в чем: далеко не всегда локализатору предоставляют исходники, а от разработчиков ответа добиться и дождаться патча сложно. К примеру, когда в открытый доступ на ютубе выложили фокус, позволяющий рисовать из воздуха предметы, китайцы фиксили его пару месяцев, если не ошибаюсь(хотя фиксов там было пара строчек, я делал такое со старыми исходниками, утекшими в сеть).

Вообще, что бы вы понимали — средней руки ММОшка с хреново написанным кодом(это я про все ту же игру) занимает метров 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 символов получилось втулить запрос, который позволял выставить себе максимального ГМа.
Ну и последним(причем на данный момент рабочим на официальных серверах) багов оказался бэкдор от самих разработчиков, позволяющий легкой правкой клиента выставлять себе максимальные права.

В-общем, забавные были времена, да.

Information

Rating
Does not participate
Registered
Activity