Обновить
130.08

Реверс-инжиниринг *

Расковырять и понять как работает

Сначала показывать
Порог рейтинга
Уровень сложности

Timebug часть 2: интересные решения от EA Black Box

Время на прочтение4 мин
Охват и читатели9.9K
Привет, хабр! В своей предыдущей статье я рассказал об интересном баге в одной старенькой игрушке, наглядно продемонстрировал явление накопления ошибки округления и просто поделился своим опытом в обратной разработке. Я надеялся, что на этом можно было бы поставить точку, но я очень сильно ошибался. Поэтому под катом я расскажу продолжение истории о звере по имени Timebug, о 60 кадрах в секунду и об очень интересных решениях при разработке игр.


Читать дальше →

Убершейдеры в эмуляторе GameCube/Wii: восхитительное решение нерешаемой проблемы

Время на прочтение19 мин
Охват и читатели12K


Любимые игры через Dolphin на мощном компьютере работают достаточно неплохо. Игра выполняется с полной скоростью, нет графических глитчей и можно использовать любой контроллер. Однако при попадании в новую область или загрузке нового эффекта присутствует совсем небольшое, но заметное «подвисание». Если отключить для проверки ограничитель количества кадров, то видно, что игра может работать гораздо быстрее, чем на полной скорости. Что же происходит?

Замедление при загрузке новых областей, эффектов, моделей и остального обычно называется пользователями и разработчиками «подвисанием при компиляции шейдеров». Эта проблема присутствовала в Dolphin с самого начала, но привлекла внимание только недавно.

Когда игры едва работали, лёгкие подвисания конечно были, но не вызывали больших проблем. Однако, эмуляция во многих играх постепенно улучшилась до почти идеального состояния, а подвисания оставались неизменными в течение многих лет. С момента выпуска Dolphin 4.0 пользователи начали ещё сильнее жаловаться на подвисание при компиляции шейдеров. Частично это было вызвано повышением требований к видеопроцессору из-за целочисленной математики, но в основном подвисание стало заметно потому, что других серьёзных проблем в эмуляторе не осталось.
Читать дальше →

Второй Hackfest в истории ReactOS начнется 14 августа 2017

Время на прочтение2 мин
Охват и читатели5.1K
Спешим поделиться важной информацией.

Мы решили продолжить традицию, поэтому второму в истории ReactOS хакфесту быть! Мероприятие пройдет с 14 по 18 августа 2017 года в Кёльне (Германия). Приглашаются желающие, для участия требуется предварительная регистрация.

Всю информацию о событии можно получить на специальной вики-страничке.

image
Фотография с хакфеста, прошедшего в 2015 году

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

Свое участие уже подтвердили такие разработчики, как Colin Finck, Eric Kohl, Giannis Adamopoulos, Mark Jansen, Thomas Faber, Victor Martinez, Timo Kreuzer.

Список участников и идей для хакфеста постоянно обновляется на второй вики-страничке.

Спасите самолет (задача со звездочкой)

Время на прочтение2 мин
Охват и читатели11K
В ноябре 2016-го мы задумались о том, как стать необычным партнером отраслевой конференции — чтобы запомниться участникам, но при этом не ограничиваться стендом и раздачей фирменных стикеров и другой сувенирки, ради которых участники обходят выставочную зону на любом мероприятии. Для Highload 2016 мы тогда придумали небольшой интеллектуальный квест — поставили прямо на стенде компьютер, на котором нужно было починить сломанный сервер. Всем понравилось, а мы стали думать дальше. На афтепати Codefest в Новосибирске в апреле мы придумали и провели гикнайт Deadliner — это была альтернативная тусовка, где у участников была важная миссия: команды спасали падающий самолет. Сегодня мы предлагаем спасти его хабрасообществу.

image
Читать дальше →

Взлом игры Clocktower — The First Fear

Время на прочтение19 мин
Охват и читатели9.4K
Давайте возьмём отличную японскую игру в жанре survival horror, разберёмся, как она работает, переведём её на английский и сделаем с ней ещё кое-что.

Введение


ClockTower (известная в Японии как Clocktower — The First Fear) — это игра, изначально выпущенная Human Entertainment для Super Nintendo.



Это одна из игр жанра «point and click adventure», но она также стала одним из основателей жанра survival horror. Сюжет заключается в том, что четыре сироты после закрытия приюта попали в особняк, в котором один за другим начали исчезать. Игрок управляет одной из сирот, Дженнифер, и пытается найти выход, своих друзей и выяснить, что же происходит в особняке.
Читать дальше →

Анализ исходного кода Doom 3

Время на прочтение32 мин
Охват и читатели58K
image

23 ноября 2011 года id Software поддержала собственную традицию и опубликовала исходный код своего предыдущего движка.

На сей раз настало время idTech4, который использовался в Prey, в Quake 4 и, разумеется, в Doom 3. Всего за несколько часов было создано больше 400 форков репозитория на GitHub, люди начали исследовать внутренние механизмы игры или портировать её на другие платформы. Я тоже решил поучаствовать и создал Intel-версию для Mac OS X, которую Джон Кармак любезно прорекламировал.

С точки зрения чистоты и комментариев это самый лучший релиз кода id Software со времени кодовой базы Doom iPhone (которая была выпущена позже, а потому откомментирована лучше). Крайне рекомендую каждому изучить этот движок, собрать его и поэкспериментировать.

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

Gamecube — устройство файловой системы

Время на прочтение5 мин
Охват и читатели9.5K


Привет, хабровчане! В прошлой теме я рассказывал, как мы с командой производили (и дальше производим) ромхакинг такой игры, как Xenoblade Chronicles на Nintendo Wii. Я бы хотел рассказать о менее простой, но интересной теме – устройство хранения файловой системы у Nintendo GameCube. Так уж вышло, что я полюбил данную консоль и никак не мог упустить шанс рассказать о её технической стороне, хоть и малой. Не будем затягивать, начнём!
Читать дальше →

Как EA усложнили нам жизнь, или как мы чинили баг 12-летней давности

Время на прочтение9 мин
Охват и читатели44K
Иногда в программы закрадываются баги. Причем закрадываются так, что обнаружить их получается лишь через много-много лет после выпуска, когда чинить их уже нерентабельно. Иногда такие баги оказываются слишком критическими, чтобы их игнорировать. Поэтому под катом я расскажу, как мы устраняли один такой критический баг в одной старенькой гонялке. А заодно наглядно продемонстрирую, чем плох float, какие могут быть последствия и как с этим бороться.

image
Читать дальше →

«Ваш следующий шаг к блокчейну»: релиз платформы Exonum от Bitfury Group

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

Технологию планируют применять для утверждения результатов выборов и защиты авторских прав создателей контента в цифровом пространстве. Exonum поможет «перевести» системы предоставления государственных услуг на Украине в блокчейн-среду. И платформа уже используется в Грузии, где на базе Exonum реализована регистрация прав собственности.

Читать дальше →

Прокачиваем NES Classic Mini — продолжение

Время на прочтение9 мин
Охват и читатели37K
В феврале я писал статью о том, как русские энтузиасты «взламывали» консоль NES Classic Mini, как мы занимались её реверс-инжинирингом, и как я писал приложение для того, чтобы каждый мог легко закачать в неё свои игры буквально в пару кликов.



Сегодня я напишу продолжение этой истории, ведь за полгода мы добились гораздо более существенного прогресса в этом деле.

Как обычно, под катом моё повествование и в современной видеоформе, и в виде традиционной статьи.
Читать дальше →

Реверс-инжиниринг одной строчки JavaScript

Время на прочтение10 мин
Охват и читатели48K
Несколько месяцев назад я получил от друга такое письмо:



Тема: Можешь объяснить мне эту одну строчку кода?

Текст: Считай меня тупым, но… я не понимаю её и буду благодарен, если растолкуешь подробно. Это трассировщик лучей в 128 символах. Мне кажется, он восхитительный.

<pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>



Эта строчка JavaScript отрисует анимацию, которая показана на изображении под катом. В браузере она запускается здесь. Скрипт написан автором www.p01.org, где вы можете найти эту и много других классных демок.

Немного о багах в BIOS/UEFI ноутбуков Lenovo/Fujitsu/Toshiba/HP/Dell

Время на прочтение11 мин
Охват и читатели18K
В этой статье я приведу описание багов в BIOS/UEFI ноутбуков, с которыми приходилось работать и для которых приходилось адаптировать загрузчики. В первую очередь речь пойдет о багах, которые не видны пользователю, но которые могут помешать работе загрузчика даже при условии, что все было сделано правильно. Баги были выявлены как в интерфейсах соответствующих сред исполнения, так и в коде режима SMM процессоров Intel. Приводимый материал основывается на накопленном опыте, который растянут на достаточно большой период времени. Поэтому к моменту написания список конкретных моделей был утрачен. Тем не менее, сохранился список фирм-производителей, на ноутбуках которых возникали проблемы. Баги будут описаны последовательно, начиная с простых и заканчивая самыми сложными. Также по ходу описания будет приведен способ их обхода.
Читать дальше →

Уязвимость ВКонтакте: отправляем сообщение с кодом восстановления страницы на чужой номер

Время на прочтение5 мин
Охват и читатели131K


Обычным весенним днем, занимаясь «подготовкой» к ЕГЭ по информатике, наткнулся на статью об уязвимости Facebook, позволявшей взломать все аккаунты в социальной сети, за которую выплатили 15000$. Суть уязвимости заключалась в переборе кодов восстановления на тестовом домене компании. Я подумал, а чем собственно ВКонтакте хуже? И решил попробовать провернуть подобный трюк у них. Зная, что веб-версия уже достаточно хорошо исследована, жертвой должен был стать Android клиент, а что из этого вышло можно прочитать под катом.

Ближайшие события

Взлом Age of Mythology: отключение тумана войны

Время на прочтение16 мин
Охват и читатели15K

Введение


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





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

No place to hide — как сервисы агрессивного маркетинга преследуют вас

Время на прочтение7 мин
Охват и читатели26K
Интернет уже довольно давно стал некоторым подобием Дикого Запада: каждый отвечает сам за себя, а некоторые вещи из сумеречных областей морали, вроде сбора персональных данных, регулируются только тогда, когда это кому-то выгодно (да-да, мы все знаем, какие законы стоит вспомнить тут).

Давайте разберём это на примере одного сервиса, который для меня оказался абсолютно неизвестной областью тьмы, но существует уже с 2015-го года. Его название в статье упоминать не будем, но подобное можно без проблем нагуглить.

image

Итак, в один прекрасный день моей знакомой пришло сообщение, предлагающее ознакомиться с линейкой продуктов яхт-клуба. Формулировка «Некоторое время назад, вы были гостем нашего сайта» особенно привлекает внимание. Поэтому пора засучить рукава и окунуться в мир интернет-сталкинга и хотя бы немного разобраться в том, как же всё устроено.
Читать дальше →

Исходный код Quake III

Время на прочтение13 мин
Охват и читатели44K
image

[Примечание переводчика: перевод первой части этой статьи уже есть на Хабре, но её автор почему-то не завершил работу.]

Рендерер Quake III


Рендерер Quake III стал эволюционным развитием рендерера Quake II с аппаратным ускорением: классическая часть построена на архитектуре «двоичного разбиения»/«потенциально видимых наборов», но добавлены два новых заметных ключевых аспекта:

  • Система шейдеров, построенная поверх фиксированного конвейера OpenGL 1.X. Это было большим достижением для 1999 года. Она обеспечивала большое пространство для инноваций в эру до повсеместно распространённых сегодня вершинных, геометрических и фрагментных шейдеров.
  • Поддержка многоядерной архитектуры: клиент-серверная модель OpenGL блокирует некоторые методы и система потоков частично решает эту проблему.
Читать дальше →

Hard Reverse или особенности реверса файлов для архитектуры PowerPC Big-Endian

Время на прочтение5 мин
Охват и читатели4.8K
Задания на reverse engineering — обязательная часть любых CTF, и NeoQUEST в этом плане не исключение. В каждое задание мы добавляем «изюминку», которая, с одной стороны, несколько затрудняет участникам прохождение задания, а с другой — позволяет на практике разобраться с тем, с чем еще не приходилось работать.

Если говорить об «изюминках», то задание online-этапа NeoQUEST-2017 планеты Endian «Спасение экипажа» — практически кекс! Добро пожаловать под кат, в самые дебри реверса: поговорим об архитектуре PowerPC Big-Endian и немного — о QEMU!

А мы напоминаем, что 29 июня в Петербурге состоится «Очная ставка» NeoQUEST-2017: доклады, воркшопы, конкурсы, призы, отличное времяпровождение и свободный вход при регистрации на сайте — всё для тебя! Подробнее о том, что войдет в программу «Очной ставки», читай тут и на сайте!
Читать дальше →

Xenoblade Chronicles — разбор игровых данных

Время на прочтение9 мин
Охват и читатели8.8K
image

Всем привет! Меня зовут Артем, в тырнетах более известен под идиотским ником TTEMMA, но не суть. Я являюсь одним из основателей любительской группы переводчиков Russian Studio Video 7 и единственным ромхакером-программистом в данной команде.

Мы с командой первые, кто смог подарить фанатам Resident Evil переводы двух культовых игр на Nintendo GameCubeResident Evil Remake и Resident Evil Zero, когда-нибудь я расскажу о том, как мы все это делали, но в данной теме я бы хотел рассказать о такой роскошной игре, как Xenoblade Chronicles на Nintendo Wii и о том, как происходил и далее происходит ромхак данной игры. В данной игре всё сделано в японском стиле, странно и в некоторых моментах просто задаёшься вопросом — «Зачем?», но потом вспоминаешь, на сколько японцы странные люди и эти вопросы отпадают. Ну что ж, начнём?
Читать дальше →

Патчим прошивку Android за 5 минут

Время на прочтение2 мин
Охват и читатели36K

Задача


Все началось с того, что я захотел установить на планшет Digma Optima 7.61 игру GTA San Andreas. К сожалению, виртуальная SD-карта планшета имеет объем менее 1 Гб, а кэш игры весит порядка 2-3 Гб. На планшете установлен Android 4.4.2 и возможность просто взять и сменить память по умолчанию в нем отсутствует. Так же в нем отсутствует файл /etc/vold.fstab (он есть на более старых версиях андроида, и изменив данный файл с root-правами, можно поменять местами виртуальную и реальную карты памяти).

Необходимые инструменты


1. Компьютер или ноутбук с ОС Linux.
2. Утилиты adb и fastboot (входят в состав Android SDK, так же, как заметил tmnhy, входят в репозитории как отдельные пакеты).
3. Набор утилит bootimg_tools (нашел здесь).

Решение

Читать дальше →

Браузеры на основе Chromium — теперь и в ReactOS

Время на прочтение2 мин
Охват и читатели19K
Привет, Хабр! Вот и настал тот момент, когда одна картинка лучше тысячи слов.

image

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

--allow-no-sandbox-job --disable-preconnect --disable-translate --disable-accelerated-video --disable-gpu --disable-plugins --no-sandbox

При этом, вероятно, не все они жизненно необходимы, и от некоторых уже можно избавится, Напишите нам об итогах своих экспериментов.

Вклад авторов