Русский
Русский
English
Статистика
Реклама

Расследование

Как Amazon тратил по 500 млн на разработку провальных игр и почему ничего не вышло

31.01.2021 16:07:40 | Автор: admin


В 2012 году в структуре Amazon возникла собственная студия по производству компьютерных игр. По замыслу Джеффа Безоса, Amazon Game Studios должна была стать успешной и эффективной частью корпоративной экосистемы. Однако за прошедшие восемь лет добиться этого, увы, так и не удалось. Как же так вышло, что богатейшая компания, у которой получалось практически всё, не сумела завоевать рынок геймдева?

Ответы на этот вопрос нашел журналист Джейсон Шрайер (автор книги Кровь, пот и пиксели). Публикуем главные тезисы расследования.

Идея создать собственное подразделение по разработке игр исходила непосредственно от главы Amazon. Как часть подписки Amazon Prime, игры должны были продать подписку на сервис и привлечь геймеров к фильмам, сериалам и другим продуктам интернет-гиганта. А кроме того, продемонстрировать мощь облачных сервисов, способных, например, поддерживать онлайн-матчи на 10 000 пользователей.

Для компании, знаменитой своей корпоративной культурой, отлаженными бизнес-процессами и неограниченными финансовыми ресурсами (по данным собеседников Шрайера, годовой бюджет студии достигал $500 млн.), цель вполне осуществимая.

image
Майк Фраццини

Главой направления назначили Майка Фраццини, опытного менеджера Amazon, который до этого прошел путь от управляющего книжным подразделением до руководителя дистрибьюции коробочных изданий игр. Поначалу студия делала мобильные игры для магазина Amazon Appstore, но в 2014 г., после неудачи с Amazon Fire Phone, приступила к производству игр для ПК и консолей.

Причина неудач 1: некомпетентный руководитель


Именно в фигуре Фраццини журналист видит ключевую причину проблем студии. С позиций корпоративной философии Amazon, если вы успешно можете управлять одним направлением, то справитесь и с любым другим. Фраццини очень амбициозен: каждая игра Amazon, как он заявлял сотрудникам, должна была стать франшизой на миллиард долларов, а коллектив студии пополнили звёзды геймдева такие, как Ким Свифт (Portal), Клинт Хокинг (Far Cry 2), Ричард Хиллеман и Джон Смедли.

Однако большой управленческий опыт и преданность принципам Amazon не смогли заменить Фраццини недостаток профессиональных компетенций. Он не разбирается в видеоиграх и технологиях, не может отличить синематик-сцену от геймплейного видео, а большинство его комментариев и оценок любительские. Вместо того, чтобы погрузиться в индустрию или прислушаться к окружающим профессионалам, он хватался за публикации об очередной коммерчески успешной игре и, вооружившись цифрами, пытался сделать идеальную игру.

Как результат студия потратила огромные время и ресурсы на создание нескольких клонов популярных игр, которые громко анонсировали, а в итоге консервировали и отменяли.
Едва ли не единственным проектом, дождавшимся выхода, стал вдохновленный Overwatch шутер Crucible.

image
Crucible

В релизном интервью Фраццини с гордостью заявлял: Одна из самых частых вещей, которые мы слышим о Crucible от игроков, это то, что она уникальна. Но игра получила разгромные отзывы от прессы и геймеров. Уже через неделю после выхода аудитория игры на Twitch упала до 1000 зрителей, а буквально через полгода, в октябре 2020 г., поддержка Crucible была прекращена.

Причина неудач 2: корпоративная культура


С одной стороны, работа в Amazon кажется раем: зарплаты вдвое выше среднерыночных, растущие в цене опционы, гибкие сроки разработки и практически отсутствие обычных для этой индустрии кранчей.

Но с другой стороны, оказывается, что корпоративная этика компании, с ее 14 принципами лидерства, фокусе на измеримых показателях эффективности и бюрократией, уничтожают творчество и эксперименты, неотделимые от игровой разработки.

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

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

Причина неудач 3: неэффективный движок


Фраццини принял решение отказаться от Unity и Unreal Engine в пользу собственной технологии. С 2014 года студия разрабатывала движок под названием Lumberyard. Созданный на основе Crytek, он должен был стать стандартом для всех игр Amazon и иметь интеграцию с Amazon Web Services. Учитывая инфраструктурные мощности компании, со стороны это выглядело очень амбициозно и основательно.

Тем не менее, как пишет Шрайер, Lumberyard превратилась в страшилку для всего офиса. Работать на нем было сущим мучением. Код обрабатывался настолько долго, что программисты в ожидании смотрели кино и играли в игры, а для работы части функционала требовались эзотерические команды. По словам бывшего сотрудника, в офисе часто говорили: Lumberyard убивает эту компанию.

Ситуация изменилась только в 2018 г., когда пришедший в студию Кристоф Хартманн (Bioshock, Mafia) получил разрешение перейти на Unreal Engine.

image
New World

Что дальше?


Несмотря на все неудачи, включая провал Crucible, Amazon продолжает делать игры. Ближайший проект New World, который планировали выпустить в августе, но отложили на 2021 год. С ним тоже были проблемы: игра, посвященная выживанию в мире, очень похожем на Америку 1600-ых, выставляла коренное население как врагов и злодеев. Однако здесь, хоть и не сразу, руководство студии услышало критику и пересмотрело концепцию игры. По оценке самих сотрудников, у игры хорошие рыночные перспективы.

Если учитывать однозначный успех принадлежащих Amazon сервисов Twitch и Luna (облачная игровая платформа), у компании всё ещё есть большие шансы занять свое место на рынке разработки игр, заключает Шрайер. Правда, для этого может потребоваться руководитель другого типа, хорошо знакомый с индустрией. В качестве примера он приводит онлайн-кинотеатр Amazon Prime Video: там негативную ситуацию удалось переломить во многом благодаря приходу стороннего менеджера из Голливуда.

Разрабатывая игры, Amazon попыталась подчинить творческий процесс своей воле, и результаты этого хороший урок для Apple Inc., Facebook Inc. и Google, чьи усилия до сих пор были столь же неэффективными. Успешные видеоигры это сочетание искусства, развлечений, технологий и очень больших бюджетов. Крупные технологические компании разобрались пока только в последних двух.


Подробнее..

Интернет-мошенничество в регионе почему раскрываемость низкая, а жертв все больше

25.04.2021 20:19:15 | Автор: admin

Тайну переписки моего товарища нарушили, его пытались исключить из колледжа на основе содержания мессенджеров, которое передал ОПДН, его допрашивали в прокуратуре. И, возможно, ни одному ему правоохранители устраивали такой ад из-за глупой пакости (а на деле крутого социального эксперимента).

Чтобы разобраться подробнее, почему дело героя велось так странно и грубо, почему он, не смотря на искренние старания правоохранителей не получил и штрафа, спустя 2 года я вновь разобрала хронологию событий, взяла интервью в МВД, подняла результаты "эксперимента" и попыталась решить проблему "99% осведомлены, но все еще ведутся".

Содержание

По теме есть видео на YouTube (предупреждаю - ужасное качество!):

ВНИМАНИЕ! Я не собираюсь оправдывать реальные преступления по статьям 272, 242.1 УК РФ, и да, в истории рассмотрена спорная тема, но прошу понимать проблески субъективности и оправдания обвиняемого как мнение такого же любознательного ребенка, как и герой истории, которому легко встать на его место. Если у вас есть дети, дочери, не рубите с плеча, лучше объясните родным базовые правила информационной безопасности и поведения в интернете, продемонстрируйте на практическом примере, как им могут навредить. Спасибо за понимание.

Предыстория

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

Только начав изучать веб-разработку, я решаю модифицировать страницу авторизации ВК, организовать запись введенных данных в отдельный файл logs.txt (навык развить и над друзьями пошутить). Выложила на бесплатный хостинг 000webhost и принялась хвастать первым достижением.

РеконструкцияРеконструкция

У друга появилась идея распространить шутку уже на его круг общения. Он объединяется с главным героем и через двое суток мне скидывают Exel'ку, где указаны имена, телефоны, почты и пароли 53 человек... Всем было от 13 до 17 лет, велись 3 из 4.

Обрывок эксельки с цензурой, сорт. от старшего класса к младшемуОбрывок эксельки с цензурой, сорт. от старшего класса к младшему

Чем дальше, тем хуже (но уж извините, интереснее). Появляются файлы с фотографиями, которые девушки и юноши хранят в переписках со своими партнерами, лучшими друзьями, самими собой или ботами (да-да, и такое бывает), номера карт, адреса. Никаких сливов никто не делал, все по-стелсу.

Вскоре азарт прошел, главный герой соскучился и уже не боялся рисковать. Он совершает грубый поступок, из-за которого потеряет сон на ближайшие 3 месяца и больше никогда не возьмется писать хоть малость спорные вещи даже в личной переписке.

Он заходит на станицу несовершеннолетней знакомой и выставляет найденные там компрометирующие фотографии в нижнем белье в виде поста на ее странице.

Заявление. Первый допрос

Главному герою и его окружению поступают вопросы от друзей девушки. Удивительно, но молодой не пользуется возможностью пиара и отказывается от статуса "кул хацкера".

Спустя неделю эти же друзья сообщают ему о неком списке подозреваемых и заявлении.

Звонок из колледжа. Герой приходит с родителями, и вы не представляете! Ему ни слова не говорят о прошлом поступке. Но какая же была тема? Предложения сексуального характера в личных переписках с несовершеннолетними в ВК. Ректора заявляют, что им поступают сообщения из ОПДН, в которых просят разобраться с содержанием распечаток со сканами его личных сообщений.

Данные передавались в подобном форматеДанные передавались в подобном формате

В этот момент я берусь за голову и сношу фишинговый сайт, удаляю исходники, случайно сохраненные данные, аккаунт на хостинге (который был зареган на рабочую почту, ведь эксперимент не предполагал выхода за рамки).

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

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

Заданные ему вопросы наводили на мысль, что полиции это не очень-то интересно, и что товарища не очень-то подозревают, к тому же подобной беседы дрожа ожидали до десятка школяров. "У нас такая ситуация. Ты это сделал? - Нет". Проверили локальный ip в смартфоне и отпустили.

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

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

Через покупной аккаунт он пишет пострадавшей письмо на испанском, якобы от владельца форума, который в ответе за взлом и размещение фото, для достоверности персонаж даже просил небольшой выкуп за полное удаление из сети (хотя его там и так нигде не было). Это показалось гениальным ходом, обязанным сместить ракурс с локальных подозреваемых на интернет-заговор, но, очевидно, этого не произошло. Надеюсь, кто-то из следователей посмеялся.

Прессинг в прокуратуре

Конец апреля. Звонят лично парню (напомню, молодому только исполнилось 16) и просят явиться в прокуратуру. Стивен Кинг не страшнее определения этого заведения, когда ты в такой ситуации. "Терроризм, убийства, изнасилования" - да-да, туда его и направляйте.

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

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

Минут 10 следователь в полной тишине, с грозным лицом шарится в смартфоне. И... на этом все заканчивается. Да, его прервал коллега с заявлением о срочном выезде, и парня отпустили, будто отчаялись в попытках получить признание, а без него ничего не могут (оказалось, так и есть...).


Почему расследование затянулось и не привело к результату?

Очевидно, в расследовании дела героя все было наперекосяк. Возможно сложно и излишне сажать несовершеннолетнего парня, но взыскать моральную компенсацию, какой-никакой штраф они тоже не смогли (уж извините, не могу этому не радоваться из-за косвенного участия). Однако все равно подпортили ему материальное положение (колледж забрал скидку), сделали пометку в личном деле (спорно, имели ли вообще на это право), поспособствовали разрыву отношений с родителями.

Я отправила обращение в Управление МВД по г. Новороссийску с целью взять интервью, на котором бы спросила, как Должны расследоваться такие дела и сравнить официальный паттерн с произошедшим цирком.

Обращение и ответ от МВДОбращение и ответ от МВД

Надежда была поговорить с хоть каким следователем, но оказалось, методы расследований правоохранители раскрывать не могут (благо, их можно найти и в сети). Зато на беседу вышла представительница пресс-службы МВД - приятная женщина, чем-то напоминающая Хакамаду.

Большой Краснодарский край на один маленький Краснодар Большой Краснодарский край на один маленький Краснодар

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

Заметьте, те, кто работает с подозреваемыми и пострадавшей, вообще не имели полномочий и не рассматривали дело! Просто передавали куда-то в Краснодар. Поэтому чтобы раскрыть дело без них, им нужно было просто выбить признание - это объясняет прессинг и отсутствие последствий.

Раскрываемость компьютерного мошенничества, как сообщила пресс-служба, очень низкая, и такие мелкие дела попросту невыгодны, слишком большая морока. Лучше накрыть неофициальный Сберовский кол-центр и закрыть 50 дел разом (при 2002 случаях компьютерного мошенничества в Новороссийске за 2020 год).

Вывод: если вас взломали, вытянули из личных переписок закрытую информацию, адреса, номера кредитных карт и еще много чего нежелательного - скорее всего, преступника не накажут.


Почему все знают, но все еще попадаются?

Ага, ты тоже попался! Нет на этот вопрос ответа. У представительницы пресс-службы, озабоченной им, тоже.

Как только МВД не пытается повысить информационную и финансовую грамотность населения: публикуют схемы на региональных новостных ресурсах, вешают предостережения в учебных заведениях и на улицах, проигрывают аудио-заявления в торговых центрах и делаются смс рассылки. Т.е. все на фоне так или иначе получали указания, что на незнакомые ссылочки лучше не тыкать и по телефону служба безопасности банка никому кредитов закрывать не будет. Реально получали, в МВД постарались.

И все равно 3 из 4 подростков ввели логин и пароль, перейдя по косой ссылке! Герой истории провел качественный социальный эксперимент, которым доказал, что поколение интернета чудом еще им не съедено.

Если уточнить, жертвами являются люди от 18 до 90 лет (да-да, супер разброс) и причем на каждую возрастную треть приходится треть преступлений. Т.е. 20летние попадаются с такой же частотой, что и наши бабули, различие лишь в схемах вымогателей. Также рассказали, что это не какой-то определенный необразованный слой населения - одинаково часто страдают юристы, врачи, учителя. Случалось, что даже работники полиции и МВД, привыкшие к шаблонным схемам, не находят подозрительными новые.

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

YouTube, GitHub,Inst,Telegram

Подробнее..

Перевод Как я сократил время загрузки GTA Online на 70

01.03.2021 16:18:41 | Автор: admin
GTA Online. Многопользовательская игра, печально известная медленной загрузкой. Недавно я вернулся, чтобы завершить несколько ограблений и был потрясён, что она загружается настолько же медленно, как и в день своего выпуска, 7 лет назад.

Пришло время докопаться до сути.

Разведка


Сначала я хотел проверить, вдруг кто-то уже решил проблему. Но нашёл только рассказы о великой сложности игры, из-за чего она так долго загружается, истории о том, что сетевая p2p-архитектура мусор (хотя это не так), некоторые сложные способы загрузки в сюжетный режим, а потом в одиночную сессию, и ещё пару модов, чтобы скипнуть видео с логотипом R* во время загрузки. Ещё немного почитав форумы, я узнал, что можно сэкономить колоссальные 10-30 секунд, если использовать все эти способы вместе!

Тем временем на моём компе

Бенчмарк


Story mode load time:  ~1m 10sOnline mode load time: ~6m flatStartup menu disabled, time from R* logo until in-game (social club login time isn't counted).Old but decent CPU:   AMD FX-8350Cheap-o SSD:          KINGSTON SA400S37120GWe have to have RAM:  2x Kingston 8192 MB (DDR3-1337) 99U5471Good-ish GPU:         NVIDIA GeForce GTX 1070

Знаю, что моё железо устарело, но чёрт возьми, что может замедлить загрузку в 6 раз в онлайн-режиме? Я не мог измерить разницу при загрузке из сюжетного режима в онлайн, как это делали другие. Даже если это сработает, разница небольшая.

Я (не) одинок


Если доверять этому опросу, проблема достаточно широко распространена, чтобы слегка раздражать более 80% игроков. Прошло уже семь лет!



Я немного поискал информацию о тех ~20% счастливчиках, которые загружаются быстрее трёх минут, и нашёл несколько бенчмарков с топовыми игровыми ПК и временем загрузки онлайн-режима около двух минут. Я бы кого-нибудь убил хакнул за такой комп! Действительно похоже на железячную проблему, но что-то не складывается

Почему у них сюжетный режим по-прежнему загружается около минуты? (кстати, при загрузке с M.2 NVMe не учитывались видео с логотипами). Кроме того, загрузка из сюжетного режима в онлайн занимает у них всего минуту, в то время как у меня около пяти. Я знаю, что их железо гораздо лучше, но не в пять же раз.

Высокоточные измерения


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



Почти минута уходит на загрузку общих ресурсов, которые нужны и для сюжетного режима, и для онлайна (почти наравне с топовыми ПК), затем GTA в течение четырёх минут полностью нагружает одно ядро CPU, больше ничего не делая.

Использование диска? Нет! Использование сети? Есть немного, но через несколько секунд падает в основном до нуля (кроме загрузки вращающихся информационных баннеров). Использование GPU? Ноль. Память? Вообще ничего

Что это, майнинг биткоинов или что-то такое? Чую здесь код. Очень плохой код.

Единственный поток


На моём старом процессоре AMD восемь ядер, и он ещё молодцом, но это старая модель. Его сделали ещё тогда, когда производительность одного потока у AMD была намного ниже, чем у Intel. Наверное, это главная причина таких различий во времени загрузки.

Что странно, так это способ использования CPU. Я ожидал огромное количество операций чтения с диска или массу сетевых запросов, чтобы организовать сеансы в сети p2p. Но такое? Вероятно, здесь какая-то ошибка.

Профилирование


Профилировщик отличный способ найти узкие места в CPU. Есть только одна проблема большинство из них полагаются на инструментирование исходного кода, чтобы получить идеальную картину происходящего в процессе. А у меня нет исходного кода. Мне также не требуются идеальные показания в микросекундах, у меня узкое место на 4 минуты.

Итак, добро пожаловать в образцы стека (stack sampling). Для приложений с закрытым исходным кодом есть только такой вариант. Сбросьте стек запущенного процесса и местоположение указателя текущей инструкции, чтобы построить дерево вызовов в заданные интервалы. Затем наложите их и получите статистику о том, что происходит. Я знаю только один профилировщик, который может проделать это под Windows. И он не обновлялся уже более десяти лет. Это Люк Stackwalker! Кто-нибудь, пожалуйста, подарите Люку немножко любви :)



Обычно Люк группировал бы одинаковые функции, но у меня нет отладочных символов, поэтому пришлось смотреть на соседние адреса, чтобы искать общие места. И что же мы видим? Не одно, а целых два узких места!

Вниз по кроличьей норе


Позаимствовав у моего друга совершенно законную копию стандартного дизассемблера (нет, я действительно не могу его себе позволить когда-нибудь освою гидру), я пошёл разбирать GTA.



Выглядит совсем неправильно. Да, у большинства топовых игр есть встроенная защита от реверс-инжиниринга, чтобы защититься от пиратов, мошенников и моддеров. Не то чтобы это их когда-то останавливало

Похоже, здесь применили какую-то обфускацию/шифрование, заменив большинство инструкций тарабарщиной. Не волнуйтесь, нужно просто сбросить память игры, пока она выполняет ту часть, на которую мы хотим посмотреть. Инструкции должны быть деобфусцированы перед запуском тем или иным способом. У меня рядом лежал Process Dump, так что я взял его, но есть много других инструментов для подобных задач.

Проблема первая: это strlen?!


Дальнейший разбор дампа выявил один из адресов с некоей меткой strlen, которая откуда-то берётся! Спускаясь вниз по стеку вызовов, предыдущий адрес помечен как vscan_fn, и после этого метки заканчиваются, хотя я вполне уверен, что это sscanf.

Куда ж без графика

Он что-то парсит. Но что? Логический разбор займёт целую вечность, поэтому я решил сбросить некоторые образцы из запущенного процесса с помощью x64dbg. Через несколько шагов отладки выясняется, что это JSON! Он парсит JSON. Колоссальные десять мегабайт JSON'а с записями 63 тыс. предметов.

...,{    "key": "WP_WCT_TINT_21_t2_v9_n2",    "price": 45000,    "statName": "CHAR_KIT_FM_PURCHASE20",    "storageType": "BITFIELD",    "bitShift": 7,    "bitSize": 1,    "category": ["CATEGORY_WEAPON_MOD"]},...

Что это? Судя по некоторым ссылкам, это данные для сетевого торгового каталога. Предполагаю, он содержит список всех возможных предметов и обновлений, которые вы можете купить в GTA Online.

Проясним некоторую путаницу: я полагаю, что это предметы, приобретаемые за игровые деньги, не связанные напрямую с микротранзакциями.

10 мегабайт? В принципе, не так уж и много. Хотя sscanf используется не самым оптимальным образом, но, конечно, это не так уж плохо? Что ж



Да, такая процедура займёт некоторое время Честно говоря, я понятия не имел, что большинство реализаций sscanf вызывают strlen, поэтому не могу винить разработчика, который написал это. Я бы предположил, что он просто сканировал байт за байтом и мог остановиться на NULL.

Проблема вторая: давайте использовать хэш-массив?


Оказывается, второго преступника вызывают сразу за первым. Даже в одной и той же конструкции if, как видно из этой уродливой декомпиляции:



Все метки мои, и я понятия не имею, как на самом деле называются функции/параметры.

Вторая проблема? Сразу после разбора элемента он хранится в массиве (или встроенном списке C++? не уверен). Каждая запись выглядит примерно так:

struct {    uint64_t *hash;    item_t   *item;} entry;

А перед сохранением? Он проверяет весь массив, сравнивая хэш каждого элемента, есть он в списке или нет. С 63 тыс. записей это примерно (n^2+n)/2 = (63000^2+63000)/2 = 1984531500, если я не ошибаюсь в расчётах. И это в основном бесполезные проверки. У вас есть уникальные хэши, почему не использовать хэш-карту.



Во время реверс-инжиниринга я назвал его hashmap, но это явно не_hashmap. И дальше ещё интереснее. Этот хэш-массив-список пуст перед загрузкой JSON. И все элементы в JSON уникальны! Им даже не нужно проверять, есть они в списке или нет! У них даже есть функция прямой вставки элементов! Просто используйте её! Серьёзно, ну ребята, что за фигня!?

PoC


Всё это конечно классно, но никто не воспримет меня всерьёз, пока я не напишу реальный код для ускорения загрузки, чтобы сделать кликбейтный заголовок для поста.

План такой. 1. Написать .dll, 2. внедрить её в GTA, 3. зацепить некоторые функции, 4. ???, 5. профит. Всё предельно просто.

Проблема с JSON нетривиальная, я не могу реально заменить их парсер. Более реалистичным кажется заменить sscanf на тот, который не зависит от strlen. Но есть ещё более простой способ.

  • зацепить strlen
  • подождать длинной строки
  • закэшировать начало и длину
  • если поступит ещё вызов в пределах диапазона строки, вернуть закэшированное значение

Что-то вроде такого:

size_t strlen_cacher(char* str){  static char* start;  static char* end;  size_t len;  const size_t cap = 20000;  // if we have a "cached" string and current pointer is within it  if (start && str >= start && str <= end) {    // calculate the new strlen    len = end - str;    // if we're near the end, unload self    // we don't want to mess something else up    if (len < cap / 2)      MH_DisableHook((LPVOID)strlen_addr);    // super-fast return!    return len;  }  // count the actual length  // we need at least one measurement of the large JSON  // or normal strlen for other strings  len = builtin_strlen(str);  // if it was the really long string  // save it's start and end addresses  if (len > cap) {    start = str;    end = str + len;  }  // slow, boring return  return len;}


А что касается проблемы хэш-массива, то здесь просто полностью пропускаем все проверки и вставляем элементы напрямую, поскольку мы знаем, что значения уникальны.

char __fastcall netcat_insert_dedupe_hooked(uint64_t catalog, uint64_t* key, uint64_t* item){  // didn't bother reversing the structure  uint64_t not_a_hashmap = catalog + 88;  // no idea what this does, but repeat what the original did  if (!(*(uint8_t(__fastcall**)(uint64_t*))(*item + 48))(item))    return 0;  // insert directly  netcat_insert_direct(not_a_hashmap, key, &item);  // remove hooks when the last item's hash is hit  // and unload the .dll, we are done here :)  if (*key == 0x7FFFD6BE) {    MH_DisableHook((LPVOID)netcat_insert_dedupe_addr);    unload();  }  return 1;}

Полный исходный код PoC здесь.

Результаты


Ну и как оно работает?

Original online mode load time:        ~6m flatTime with only duplication check patch: 4m 30sTime with only JSON parser patch:       2m 50sTime with both issues patched:          1m 50s(6*60 - (1*60+50)) / (6*60) = 69.4% load time improvement (nice!)

Да, чёрт возьми, получилось! :))

Скорее всего, это не решит всех проблем с загрузкой в разных системах могут быть и другие узкие места, но это такая зияющая дыра, что я понятия не имею, как R* пропустила её за все эти годы.

Краткое содержание


  • При запуске GTA Online есть узкое место, связанное с однопоточным вычислением
  • Оказалось, GTA изо всех сил пытается распарсить 1-мегабайтный файл JSON
  • Сам парсер JSON плохо сделан/наивен и
  • После парсинга происходит медленная процедура удаления дублей

R*, пожалуйста, исправьте


Если информация каким-то образом дойдёт до инженеров Rockstar, то проблему можно решить в течение нескольких часов силами одного разработчика. Пожалуйста, ребята, сделайте что-нибудь с этим :<

Вы можете либо перейти на хэш-карту для удаления дублей, либо полностью пропустить дедупликацию при запуске как быстрое исправление. Для парсера JSON просто замените библиотеку на более производительную. Не думаю, что есть более простой вариант.

ty <3
Подробнее..

Расследование гениальной схемы развода людей на биткоине от Илона Маска

06.06.2021 22:21:53 | Автор: admin

Привет, Хабр!

Сегодня хочу поделиться с вами своими исследованиями корреляции твитов Илона Маска с ценой криптовалюты Биткоин.

Сразу предупреждаю, что мой отчет является лишь плодом моих догадок и никак не может быть использован в качестве рекомендаций для покупки или продажи Биткоина, а также в качестве иска в сторону Илона Маска и/или компании Tesla.

Итак, Илон Маск за первую половину 2021 года проработал и реализовал гениальную схему по тому, как заработать иксы на держателях криптовалюты "Биткоин" и оставить их с дырой в кармане. Будучи большим поклонником инвестиций в традиционные инструменты, постарался прокопать всю стратегию развода:

1. Первым делом необходимо протестировать стратегию на небольших объемах. Так сказать, методика Agile.

Для этого Илон Маск выбран DogeCoin (который, между прочим, в 2015 году за бесценок слил сам его создатель). В начале февраля 2021г. Илон Маск публикует твиты с упоминаниями DogeCoin. В т.ч. и сказку о том, как заботливый папаша Илон купил DogeCoin своему сыну X. На этом моменте надо пустить слезу.

Сразу после каждого твита цена монеты растет в разы.

Вывод: схема работает!

2. 8 февраля Илон Маск объявил, что компания Tesla закупит биткоинов на 1,5 млрд. $
Цена биткоина за 1 день растет с 38 тыс $ до 48 тыс $

И тут происходит вся магия. Ну, конечно же, Илон Маск закупил биткоины намного раньше, нежели опубликовал новость, зная, что после его твита цена битка сразу же взлетит. Предполагаю, что он закупился в период с 1 по 7 февраля, когда курс битка был равен 30 тыс $

3. 24 марта Илон Маск объявил, что компания Тесла начала принимать оплату электрокаров Tesla в биткоинах. Вслед за этим цена биткоина пробивает 60 тыс $

x2 очень крутой показатель. Пора фиксировать прибыль, пока в этот спектакль не вмешались назойливые регуляторы!!!

Как ни странно, я нигде не смог найти номер биткоин-кошелька Tesla. Более того, я нигде не смог найти инфу о продаже хотя бы одного автомобиля Tesla с помощью биткоина.

Тут я обращаюсь к читателям этой статьи: если у вас есть инфа по номеру кошелька Tesla и/или по реальным фактам оплаты авто с помощью биткоина, дайте, пожалуйста, инфу об этом в комментариях.

4. 13 мая Тесла прекратила принимать оплату через биткоины из-за "неэкологичного способа их добычи". Цена биткоина за 1 день упала с 56 тыс $ до 50 тыс $

Простите, чтооооо? Неэкологический способ? Илон, ты реально решил напоследок смачно плюнуть в лицо тем, кто принес в твою компанию Tesla свои последние сбережения!?

Кстати, магия осталась та же: Илон продал все биткоины намного раньше (возможно, в период с 7 по 12 мая по цене 58 тыс $)


5. Вы же не думаете, что Илон настолько глуп, чтобы не шортить раздутый биткоин? Предполагаю, что вместе с закрытием длинной позиции, была сразу же открыта короткая позиция по той же цене. Илон-то в курсе, что Китай скоро введет запрет на криптовалюты, а вслед за ним последуют и другие страны.

6. 18 мая, в связи с ограничениями, наложенными Китаем на криптовалюты, цена битка рухнула с 40 тыс $ до 35 тыс $. На очереди готовятся ограничения от других стран, которые еще больше обрушат биткоин. А, пока, есть передышка, биткоин попытался протестировать 40 тыс $, и тут ...

7. ...4 июня Илон Маск напоминает всем какой биток плохой очередным своим твитом, после чего биткоин упал с 39 тыс $ до 35 тыс $

8. Думаю, что Илон хочет пробить отметку в 5 тыс $, чтобы выйти из своей короткой позиции и тем самым заработать еще иксов.

Остается только ждать и наблюдать за твитами самого успешного мошенника на Земле. Надеюсь, ребята из anonymous дадут жару этому злому гению!

Уважаемые читатели!

В комментариях к статье прошу не разводить холивар. Я не всегда имею возможность оперативно давать ответы на комментарии на Хабре. Все жаркие дискуссии прошу проводить в нашем tg-канале (в нем я доступен 24/7).

Подробнее..

Скрытые мобильные подписки на хостинге Мегафона

02.04.2021 20:22:21 | Автор: admin

Привет, хабр!

Хочу поделиться.

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

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

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

Что меня тригернуло: сначала идет про сайты, использующие невнимательность, а потом лендинговая страница оператора.

Так что я немножко поохотился и на сайте tut.by нашел новую подписочку:

Это объявление через AdSense, модерация гугла, я так понимаю, обходится с помощью первого веб-сайта, на которое ведет объявление, он выглядит настоящим. Потом парочка переадресаций (объясните, как эта схема работает, я по связи больше, я в интернет-рекламе не очень).

И в итоге попадаю на домен gororetros.ru. Там кнопочка Play, нажимаешь ее - все, деньги списаны, получил подписку. Серым по серому изложены условия. А тут начинается интересное. Пробил whois

То есть деньги с меня списывали на странице оператора. Так и кто использовал мою невнимательность? Юридически вроде чей домен - тот и отвечает за содержимое.

В общем, я 106 таких доменов Мегафона нашел, они прям пачками регистрировали, ежесекундно. Я это не вчера сделал, так что некоторые сайты уже протухли. Отметил те, которые браузер считает мошенническими. Отлично там все устроено.

Имя

Дата регистрации (UTC)

Предупреждение
Google Chrome

Организация

podpiski.megafon.ru

2000-07-17 20:00:00

PJSC "MegaFon"

moy-m-portal.ru

2016-04-07 15:00:38

North-West Branch of PJSC "MegaFon"

propodpiski.ru

2016-05-10 11:39:21

Опасность!

North-West Branch of PJSC "MegaFon"

mfprovas.ru

2016-05-10 11:39:22

North-West Branch of PJSC "MegaFon"

vasmfpro.ru

2016-05-10 11:39:22

North-West Branch of PJSC "MegaFon"

podpiskimf.ru

2016-05-10 11:39:23

North-West Branch of PJSC "MegaFon"

promfvas.ru

2016-05-10 11:39:23

Опасность!

North-West Branch of PJSC "MegaFon"

propodpiskimf.ru

2016-05-10 11:39:23

Опасность!

North-West Branch of PJSC "MegaFon"

vasmpro.ru

2016-05-10 11:39:24

Опасность!

North-West Branch of PJSC "MegaFon"

vaspromf.ru

2019-02-26 8:33:40

Опасность!

North-West Branch of PJSC "MegaFon"

proprovas.ru

2019-03-05 7:10:14

Опасность!

North-West Branch of PJSC "MegaFon"

vasprovp.ru

2019-03-05 7:10:14

Опасность!

North-West Branch of PJSC "MegaFon"

mvpvas.ru

2019-03-15 8:26:24

Опасность!

PJSC "MegaFon"

ppmprop.ru

2019-03-15 8:26:24

Опасность!

PJSC "MegaFon"

vasnpro.ru

2019-03-15 8:26:24

Опасность!

PJSC "MegaFon"

wasnopro.ru

2019-03-15 8:26:24

Опасность!

PJSC "MegaFon"

savorpm.ru

2019-03-15 8:26:25

Опасность!

PJSC "MegaFon"

litorsav.ru

2019-03-20 12:28:32

Опасность!

PJSC "MegaFon"

masseva.ru

2019-03-20 12:28:32

Опасность!

PJSC "MegaFon"

solnesc.ru

2019-03-20 12:28:32

Опасность!

PJSC "MegaFon"

zprozo.ru

2019-03-20 12:28:32

Опасность!

PJSC "MegaFon"

arusav.ru

2019-03-20 12:28:33

Опасность!

PJSC "MegaFon"

dmvasor.ru

2019-03-20 12:28:33

Опасность!

PJSC "MegaFon"

qunru.ru

2019-03-20 12:28:33

Опасность!

PJSC "MegaFon"

truvpro.ru

2019-03-20 12:28:33

Опасность!

PJSC "MegaFon"

ursavet.ru

2019-03-20 12:28:33

Опасность!

PJSC "MegaFon"

jaavury.ru

2019-03-20 12:28:40

PJSC "MegaFon"

pravvopros.ru

2019-03-20 12:28:40

Опасность!

PJSC "MegaFon"

ropovasru.ru

2019-03-20 12:28:40

Опасность!

PJSC "MegaFon"

vosvopra.ru

2019-03-20 12:28:40

Опасность!

PJSC "MegaFon"

zaaspro.ru

2019-03-20 12:28:40

Опасность!

PJSC "MegaFon"

fpromwas.ru

2019-03-20 12:28:41

Опасность!

PJSC "MegaFon"

vasservices.ru

2019-03-27 7:04:48

Опасность!

PJSC "MegaFon"

kubesercbroses.ru

2019-03-27 12:08:18

PJSC "MegaFon"

deffmfassers.ru

2019-03-27 12:08:19

PJSC "MegaFon"

doveserpros.ru

2019-03-27 12:08:19

PJSC "MegaFon"

prossejobes.ru

2019-03-27 12:08:19

PJSC "MegaFon"

vasgonumers.ru

2019-03-27 12:08:19

PJSC "MegaFon"

dobrovasgoes.ru

2019-03-27 12:08:19

Опасность!

PJSC "MegaFon"

kabravaspros.ru

2019-03-27 12:08:19

Опасность!

PJSC "MegaFon"

serschewobro.ru

2019-03-27 12:08:19

Опасность!

PJSC "MegaFon"

skymovarsappro.ru

2019-03-27 12:08:19

Опасность!

PJSC "MegaFon"

someonespro.ru

2019-04-10 15:48:49

PJSC "MegaFon"

zarafest.ru

2019-04-10 15:48:49

PJSC "MegaFon"

regtardos.ru

2019-04-10 15:48:49

Опасность!

PJSC "MegaFon"

lakesmodernpro.ru

2019-04-10 15:48:49

Опасность!

PJSC "MegaFon"

donesredirgo.ru

2019-04-10 15:48:49

Опасность!

PJSC "MegaFon"

sprosmademf.ru

2019-04-10 15:48:49

Опасность!

PJSC "MegaFon"

vaspromactes.ru

2019-04-10 15:48:50

Опасность!

PJSC "MegaFon"

areredirdone.ru

2019-04-10 15:48:50

PJSC "MegaFon"

hustlookelatos.ru

2019-04-10 15:48:50

PJSC "MegaFon"

sirmenosgone.ru

2019-04-10 15:48:50

PJSC "MegaFon"

surefacdos.ru

2019-04-10 15:48:50

Опасность!

PJSC "MegaFon"

anyflowfarmos.ru

2019-04-10 15:48:50

Опасность!

PJSC "MegaFon"

dfcallesnoit.ru

2019-04-10 15:48:50

Опасность!

PJSC "MegaFon"

diffstopimf.ru

2019-04-10 15:48:50

Опасность!

PJSC "MegaFon"

maindrogroses.ru

2019-05-16 13:29:07

Опасность!

PJSC "MegaFon"

hredspagose.ru

2019-05-16 13:29:07

Опасность!

PJSC "MegaFon"

spacetororeg.ru

2019-05-16 13:29:07

Опасность!

PJSC "MegaFon"

reredvaspro.ru

2019-05-16 13:29:08

PJSC "MegaFon"

malceshtopro.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

htopgobroses.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

gogodoromain.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

gororeretro.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

bossrobsetgo.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

donopogreses.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

snegosedobro.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

somedomasinreg.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

seonesvrasbros.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

retrepresgo.ru

2019-05-16 13:29:08

Опасность!

PJSC "MegaFon"

pagefordone.ru

2019-05-16 13:29:09

Опасность!

PJSC "MegaFon"

presercheties.ru

2019-05-16 13:29:09

Опасность!

PJSC "MegaFon"

saajabbress.ru

2019-05-16 13:29:09

Опасность!

PJSC "MegaFon"

scaillshells.ru

2019-05-16 13:29:09

Опасность!

PJSC "MegaFon"

vassprososes.ru

2019-05-16 13:29:09

Опасность!

PJSC "MegaFon"

vasjoyredir.ru

2019-05-16 13:29:09

Опасность!

PJSC "MegaFon"

mfprojectserv.ru

2019-08-23 6:30:01

PJSC "MegaFon"

retopproonly.ru

2019-08-23 6:30:02

PJSC "MegaFon"

aredirgodone.ru

2019-08-23 6:30:02

PJSC "MegaFon"

bossgorumf.ru

2019-08-23 6:30:02

PJSC "MegaFon"

dovasmvservpro.ru

2019-08-23 6:30:02

PJSC "MegaFon"

processevgovas.ru

2019-08-23 6:30:02

PJSC "MegaFon"

prodosservjoin.ru

2019-08-23 6:30:02

PJSC "MegaFon"

vasprofserf.ru

2019-08-23 6:30:02

PJSC "MegaFon"

megafroddomru.ru

2019-08-23 6:30:03

PJSC "MegaFon"

vassprojsoses.ru

2019-08-23 6:30:03

PJSC "MegaFon"

mfontopgoredir.ru

2019-08-23 6:30:03

PJSC "MegaFon"

mfredirgoes.ru

2019-08-23 6:30:04

PJSC "MegaFon"

prodservices.ru

2019-08-23 6:30:04

PJSC "MegaFon"

prodproredir.ru

2019-08-23 6:30:04

PJSC "MegaFon"

areredirdones.ru

2019-08-23 6:30:05

PJSC "MegaFon"

gororetros.ru

2019-08-23 6:30:05

PJSC "MegaFon"

gurumfms.ru

2019-08-23 6:30:05

PJSC "MegaFon"

topproservas.ru

2019-08-23 6:30:05

PJSC "MegaFon"

rerevasprod.ru

2019-08-23 6:30:06

PJSC "MegaFon"

bossgoru.ru

2019-08-23 6:30:07

PJSC "MegaFon"

vasproservices.ru

2019-08-23 6:30:07

PJSC "MegaFon"

mftopsels.ru

2019-08-23 6:30:07

PJSC "MegaFon"

aredirdone.ru

2019-08-23 6:30:08

PJSC "MegaFon"

aspromacties.ru

2019-08-23 6:30:08

PJSC "MegaFon"

vasjoysredir.ru

2019-08-23 6:30:08

PJSC "MegaFon"

prodsproredirgo.ru

2019-08-23 6:30:08

PJSC "MegaFon"

mfgoredirgo.ru

2019-08-23 6:30:09

PJSC "MegaFon"

vasgonomers.ru

2019-08-23 6:30:09

PJSC "MegaFon"

passjoyredir.ru

2019-08-23 6:30:10

PJSC "MegaFon"

Тогда пошел посмотреть на сайт Мегафона, а что у них там за подписки такие, по цене пары нетфликсов и попкорна. Они там все в открытом доступе, смотрите.

Собрал. 3 808 подписок.

НО. Строка с подпиской MOBILE CLUB продублирована 203(!) раза.

Причесал, убрал дубли и подписки без указания сайта.

Осталось 3 225 штук. (-583 штуки).

Дальше пытаюсь отрезолвить днс.

Тут УПС. 1 039 просто в принципе не работают! Это 32% партнерских подписок на сайте Мегафона!

Остается 2 186 сайтов подписок. Тут уже в полуручном режиме. Еще 254 штуки - 404, припаркованные домены, освобожденные домены.

Остаётся 1932 домена. В итоге - чуть больше половины от изначального количества.

Даже если сайт работает, то на нем не всегда какая-то подписка. Вот характерный пример, сайт goonter.ru. Там подписка была в 2013 году, потом домен ушел на продажу, потом его купила семья Гунтеров в 2016 году. Тут я скорее об отношении к этим подпискам, никто даже не делает вид, что сервис есть.

Поскольку саппорт в переписке послал меня к партнеру, я сходил. Выручка компании Информпартнер составила 17,9 миллиардов рублей за пять лет, это годовой бюджет для города.

И кстати, я собрал в итоге с работающих сайтов, кто именно предоставляет услугу подписки - в 96% случаев это либо сам Информпартнер, либо вообще Ай-Куб, которая давно ликвидирована. А иногда и обе вместе =)

В общем, картина вырисовывается такая, что не в недобросовестных партнерах дело. А в ком-то другом.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru