• Защита и взлом Xbox 360 (Часть 1)

      image Вы наверняка слышали про игровую приставку Xbox 360, и что она «прошивается». Под «прошивкой» здесь имеется в виду обход встроенных механизмов защиты для запуска копий игр и самописного софта. И вот здесь возникают вопросы! Каких механизмов, как они обходятся? Что же наворотили разработчики, как это сумели обойти? На самом деле, тема очень обширная и интересная, особенно для Xbox 360 — здесь можно встретить уязвимости в ПО, аппаратные недочеты, и совсем уж магическую магию. Интересно? Заглядываем! В первой части у нас знакомство с гипервизором, приводами и прошивками…

      Читать дальше →
    • История одного патча Apple

        image


        В этом году мы с a1exdandy выступали на конференциях VolgaCTF и KazHackStan с докладом про Patch Diffing программ, написанных на Оbjective-С, и то, как с его помощью можно искать и находить 0-day и 1-day уязвимости в продуктах компании Apple. Видео выступления можно посмотреть по ссылке, а для чтения статьи добро пожаловать под кат.

        Читать дальше →
        • +43
        • 8.7k
        • 2
      • Как создавался кроссплатформенный Half-Life или «Хедкрабы внутри ваших часов»



        Парочку месяцев назад на Гиктаймсе проскакивала новость о запущенной Half-Life на Android Wear. В статье ни слова не сказано было о разработчиках и тогда один из хабровчан спросил в комментариях, почему никто из них не напишет здесь?

        И вот уже годовщина с того момента, как я начал порт свободного движка Xash3D на Linux, а также, поскольку несколько моих знакомых всё же интересовались подробностями, я решил написать этот пост. Кому интересна история проекта, обходы разных проблем и мои личные советы, прошу под кат.
        Читать дальше →
      • Благодаря удивительному глитчу в Ocarina of Time удалось добавить модели из Star Fox 64

        • Translation
        image

        За долгие годы написания статей про игры я рассказал о многих удивительных глитчах, неизвестных с давних пор кодах, трюках с выполнением произвольного кода и поисках глубоко сокрытого контента внутри классических игр и оборудования. Но ничто не смогло подготовить меня к этому видео с Twitch, в котором флот летающих Arwing из Star Fox 64 вторгаются в мир Ocarina of Time, чтобы напасть на Линка.

        Подобную сцену ожидаешь увидеть только в созданном фанатом мультфильме или ROM-хаке, которые Nintendo так любит изымать из Интернета. Но самое удивительное в этом клипе то, что он демонстрирует немодифицированную версию оригинального японского ROM Ocarina of Time с использованием стандартной консоли и контроллеров N64.

        Целое утро я разбирался с тем, как такое вообще возможно. Чтобы объяснить это, придётся совершить глубокое погружение в суть инструкций машинного языка Nintendo 64, управления памятью Ocarina of Time и самого процесса разработки игр середины 90-х. Если вам так же любопытно, как и мне, присоединяйтесь.
        Читать дальше →
        • +25
        • 3.9k
        • 1
      • История создания торрент-рендера для 3ds max



        Всем привет, хочу поведать хабру об одном необычном сетевом сервисе и процессе его разработки. Но сперва пару слов непосредственно обо мне — я прикладной программист MAXScript (это встроенный в 3ds max скриптовый язык), а 3ds max это один из популярнейших пакетов для создания разнообразной 3d-графики и в нем, естественно, есть такая штука как рендеринг, из-за которой собственно все ниженаписанное и делалось.

        Идея


        Начался процесс с одной идеи, которая пришла мне в голову совершенно внезапно поздней ночью 30 ноября 2010 года и вылилась на следующий день вот в такой пост на форуме 3dcenter.ru:
        01/12/2010, 12:49
        Пришла эта мысль в голову и не вылазит. Хочу обсудить с сообществом полезность и целесообразность. Основную часть технических подробностей пока опускаю, но сделать сие вполне реально либо в качестве плагина (SDK), либо даже скрипта (MAXScript).
        Итак, смысл в том, чтобы бесплатно (или не очень) использовать чужие компы для рендера своих сцен. Есть система рейтинга, т.е. нельзя долго рендерить свое («качать»), но не рендерить чужое («раздавать»). Для тех, кто боится, что его сцены или текстуры будут использовать чужие нехорошие люди, предусмотрена защита — координаты всех объектов сцены изначально обнуляются, правильные координаты шифруются и передаются на рендер отдельным файлом, текстуры бьются на маленькие квадратики и собираются в одну тоже только перед рендером. Показ самой визуализации (VFB) можно отключить, т.е. человек даже не видит, что он рендерит. Аналогичные действия происходят и после рендера — изображение автоматически разбивается на кусочки (либо просто перемешиваются пиксели по какому-то закону) и собрать его правильно можно только на стороне автора сцены. Для альтруистов есть возможность отключения защиты, т.е. сцена с барахлом передается в свободном доступе. Защита может быть и другая, и вообще все что я пишу еще до конца не обдумано — только варианты.

        Ну вот в общем как-то так, прошу не кидаться помидорами, и, если велосипед я не изобрел, то обсудим, насколько вообще жизнеспособна эта идея.
        Читать дальше →
      • Простая игра на SFML

        • Tutorial
        Будем делать игру «пятнашки» на языке C++ с использованием библиотеки SFML. Пятнашки — это широко известная головоломка, которая выглядит следующим образом:


        На игровом поле размером 4х4 случайным образом расположены 15 плашек с номерами от 1 до 15 и одно свободное место. Передвигать плашки можно только по одной и только на свободное место. Целью игры является выстроение плашек на игровом поле в порядке, соответствующем их номерам.

        Итак, начнем.
        Читать дальше →
      • Естественный отбор — враг бота

          Интересный баг только что отловили. Рассказываю.

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

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

            Я иногда путешествую по разным странам, и языковой барьер, довольно часто, становится серьезным препятствием для меня. И если в странах, где используются языки германской группы, я еще как то могу сориентироваться, то в таких странах как Китай, Израиль и арабские страны без сопровождающего, путешествие превращается в загадочный квест. Невозможно понять местное расписание автобусов/поездов/электричек, названия улиц в небольших городах очень редко есть на английском языке. А уж проблема с выбором, что бы поесть, из меню на непонятном языке вообще сродни ходьбы по минному полю.
            Так как я разработчик под iOS, я подумал, а почему бы не написать такое приложение: наводишь камеру на вывеску/расписание/меню и тут же получаешь перевод на русский.
            Читать дальше →
          • Реверс-инжиниринг популярного античита BattlEye

            • Translation

            BattlEye — это преимущетвенно немецкий сторонний античит, в основном разрабатываемый 32-летним Бастианом Хейко Сутером. Он предоставляет (или пытается предоставить) издателям игр простую в применении систему античита, использующую механизмы общей защиты, а также обнаружение читов для конкретных игр для оптимизации безопасности. Как сказано на веб-сайте продукта, он всегда остаётся на вершине современных технологий и использует инновационные методики защиты и обнаружения; очевидно, это следствие национальности разработчика: QUALITY MADE IN GERMANY. BattlEye состоит из множества элементов, совместно работающих над поиском читеров в играх, оплативших использование продукта. Четырьмя основными элементами являются:

            • BEService
              • Системная служба Windows, обменивающаяся данными с сервером BattlEye BEServer, который обеспечивает возможности клиент-серверной связи с BEDaisy и BEClient.
            • BEDaisy
              • Драйвер ядра Windows, регистрирующий превентивные механизмы обработки событий и мини-фильтры, чтобы препятствовать читерам в незаконном изменении игры
            • BEClient
              • Динамически подключаемая библиотека Windows, отвечающая за большинство векторов обнаружения, в том числе за описанные в данной статье. После инициализации она привязывается к процессу игры.
            • BEServer
              • Проприетарный бэкенд-сервер, отвечающий за сбор информации и принятие конкретных мер против читеров.

            Шелл-код


            Недавно в Интернете всплыл дамп шелл-кода BattlEye, и мы решили написать о том, что же конкретно ищет текущая версия BattlEye. Мы не анализировали BattlEye целых шесть месяцев, поэтому наш последний дамп шелл-кода скорее всего уже устарел. Различные части кода восстанавливали только по памяти из этого последнего дампа, предположив, что в BattlEye дополняется только шелл-код и не удаляются предыдущие процедуры обнаружения.
            Читать дальше →
          • Введение в ELF-файлы в Linux: понимание и анализ

            • Translation
            Есть в мире вещи, которые мы принимаем как нечто само собой разумеющееся, хотя они являются истинными шедеврами. Одними из таких вещей являются утилиты Linux, такие, как ls и ps. Хотя они обычно воспринимаются как простые, это оказывается далеко не так, если мы заглянем внутрь. И таким же оказывается ELF, Executable and Linkable Format. Формат файлов, который используется повсеместно, но мало кто его понимает. Это краткое руководство поможет вам достичь понимания.



            Прочтя это руководство, вы изучите:

            • Зачем нужен формат ELF и для каких типов файлов он используется
            • Структуру файла ELF и детали его формата
            • Как читать и анализировать бинарное содержимое файла ELF
            • Какие инструменты используются для анализа бинарных файлов
            Читать дальше →
          • Неуловимый баг LittleBigPlanet

              image

              В истории игровой разработки можно обнаружить немало интересных багов, с которыми приходилось сражаться разработчикам. Впрочем, как следует из истории, рассказанной в Twitter техническим директором компании Media Molecule Алексом Эвансом (известен своим участием в демосцене конца 90-ых, серией LittleBigPlanet и игрой Rag Doll Kung Fu) на выходных, многие легенды нам еще только предстоит услышать.

              Случай, о котором пойдет речь, произошел десять лет назад — в 2008 году. Во время разработки первой части игры LittleBigPlanet — оригинального паззл-платформера, который должен быть стать эксклюзивом для PlayStation 3 — разработчикам компании пришлось столкнуться с воистину неуловимым багом.

              Обычно для получения «зелёного света» на выпуск игры на консолях требуется пройти сертификацию — выполнить некоторый набор требований, которые устанавливает платформодержатель. Сертификация может предполагать и такие специфические условия, как стабильная работа игры в течение суток без вылетов.

              Процесс разработки LittleBigPlanet практически подошел к концу и оставалось всего две недели до того, как игра должна была «уйти на золото». Внезапно, тестировщик из отдела QA в Японии сообщил о том, что игра стабильно «падает», когда он оставляет ее работать на ночь. Естественно, теперь до исправления бага ни о каком выпуске игры не могло быть и речи.
              Читать дальше →
            • Как работал графический чип Super Nintendo: руководство по Super PPU

              • Translation
              image

              Описание концепций PPU


              Super PPU

              Super "Picture Processing Unit" — чип видеоконтроллера, обрабатывающий тайловую графику, плоскости скроллинга и спрайты SNES. По функциям схож с PPU консоли NES.

              VRAM

              VideoRAM — ОЗУ, используемое Super PPU. Содержит тайлы. В каждом режиме экрана используется собственный размер тайлов. Обычно это 8x8 или 16x16 пикселей на тайл. VRAM имеет объём 64 КБ.

              OAM

              «Object Attribute Memory» — содержит данные определений спрайтов. Может содержать данные не более чем 128 спрайтов. Схожа с OAM в NES, но более совершенная.
              Читать дальше →
            • Реверс-инжиниринг. История. Моя


                Всем привет,


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

                Читать дальше →
              • Любительский перевод игр: анатомия процесса, часть первая

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

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


                  На картинке изображён логотип российского ромхакинг-сообщества по версии проекта Russian Romhacking.
                  Читать дальше →
                • В конфиге Aliens: Colonial Marines нашли опечатку, из-за которой четыре года глючил игровой ИИ



                    Вышедшую в 2013 году игру Aliens: Colonial Marines для персональных компьютеров не очень хорошо встретила публика. Игровые критики не могли понять, почему многообещающая игра, которая отлично смотрелась в предварительных версиях, превратилась в неюзабельный «плохо спроектированный, глючный кусок мусора» (цитата из одного обзора).

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

                    И только спустя четыре года стало понятно, в чём корень проблем. 1 ноября 2017 года один из разработчиков модов под ником jamesdickinson963 нашёл опечатку в конфигурационном файле .INI, после исправления которой игровой процесс улучшается кардинальным образом. Достаточно удалить лишнюю букву.
                    Читать дальше →
                  • Самостоятельная диагностика жестких дисков и восстановление данных

                    • Tutorial
                    В данной статье описываются методы самостоятельной диагностики различных неисправностей жестких дисков по симптомам их проявления, а также способы относительно безопасного клонирования жестких дисков с незначительными проблемами.

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

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


                    Читать дальше →
                  • Особенности уплаты налогов самозанятыми IT-фрилансерами

                    Решил попробовать новый налоговый режим и озадачился порядком расчета и уплаты налогов при работе через фриланс биржу:


                    • Кто будет являться моим контрагентом — биржа или заказчик (4% или 6% налог соответственно)?
                    • Налоговой базой является сумма, полученная биржей от заказчика, или полученная мной от биржи?
                    • Облагается ли налогом комиссия биржи за вывод денежных средств?
                    • Что является датой получения дохода — дата зачисления на баланс аккаунта фриланс биржи или дата вывода? (При получении дохода в иностранной валюте нужно посчитать рублевый эквивалент по курсу ЦБ на день получения)
                    • Можно ли выводить деньги по итогам месяца или нужно выводить по каждой сделке отдельной транзакцией?

                    Так как беглое гугление результатов не дало, ваш покорный слуга обратился с вышеуказанными вопросами в ФНС (Федеральная налоговая служба). И так: если вам как и мне хочется сразу начать платить налоги правильно — добро пожаловать под кат.

                    Читать дальше →
                  • Правильная передача цветов ретроконсолей в эмуляторах

                    • Translation


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

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

                    Самым распространённым сегодня видом дисплеев являются ЖК-панели (LCD). Они известны тем, что имеют очень плохие уровни чёрного. Различия между TN, PVA и IPS не слишком на это влияют.

                    Отдельные фанаты играют на ЭЛТ-мониторах, и всё большую популярность набирают OLED-экраны, особенно на телефонах и планшетах. Но в этой статье мы в основном будем рассматривать ЖК-экраны, хотя данная методика важна для дисплеев любого типа.

                    Точность цвета


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

                    Например, Sega Genesis кодирует 9-битные цвета, что даёт по 3 бита на канал.

                    Самым наивным решением было бы поместить 3 бита в самые старшие 3 бита вывода, а младшие 5 бит оставить пустыми, но при этом белый цвет становится немного серым.
                    Читать дальше →
                  • Внутренняя структура игры Contra

                    • Translation
                    image

                    Как и многие из тех, кто программирует видеоигры, в детстве я часто играл в игры для NES. Меня всегда поражало, как разработчики смогли добиться столь многого минимальными усилиями, поэтому я потратил кучу времени на анализ внутренней работы некоторых игр. Сегодня я начинаю серию постов, в котором буду документировать то, чему научился, с точки зрения программиста игр. Я постараюсь сосредоточиться на работе систем игры на уровне движка, а не на аппаратном уровне (то есть буду говорить о том, как игра решает, что нужно отрисовать в текущем кадре, а не о том, как работают спрайты на NES). Также я постараюсь добавить любые крупицы информации об играх, которые мне покажутся интересными, например, неочевидное с точки зрения игрока поведение или примеры багов в логике игры.
                    Читать дальше →
                  • Текстовый редактор — это вам не высшая математика, тут думать надо

                      Современные текстовые редакторы умеют не только бибикать и не давать выйти из программы. Оказывается, внутри них кипит очень сложный метаболизм. Хотите узнать, какие ухищрения предпринимаются для быстрого пересчета координат, как к тексту приделываются стили, фолдинги и софтврапы и как это всё обновляется, при чем тут функциональные структуры данных и очереди с приоритетами, а также как обманывать пользователя — добро пожаловать под кат!



                      В основе статьи — доклад Алексея Кудрявцева с Joker 2017. Алексей уже лет 10 пишет Intellij IDEA в JetBrains. Под катом вы найдете видео и текстовую расшифровку доклада.
                      Читать дальше →