Реверс-инжиниринг *
Расковырять и понять как работает
HexRaysPyTools: декомпилируй с удовольствием
В этой статье я собираюсь рассказать о плагине для IDA Pro, который написал прошлым летом, еще находясь на стажировке в нашей компании. В итоге, плагин был представлен на ZeroNights 2016 (Слайды), и с тех пор в нём было исправлено несколько багов и добавлены новые фичи. Хотя на GitHub я постарался описать его как можно подробнее, обычно коллеги и знакомые начинают пользоваться им только после проведения небольшого воркшопа. Кроме того, опущены некоторые детали внутренней работы, которые позволили бы лучше понять и использовать возможности плагина. Поэтому хотелось бы попытаться на примере объяснить, как с ним работать, а также рассказать о некоторых проблемах и тонкостях.
Недокументированные возможности Windows: регистрация событий доступа к ключам реестра
Реверс-инжиниринг игры Lost Vikings
Я обнаружил, что для реверс-инжиниринга игры The Lost Vikings компании Blizzard (тогда она называлась Silicon and Synapse), похоже, не предпринималось никаких серьёзных попыток. Игра была выпущена в 1993 году, на закате эры DOS, и очень нравилась мне в юности. The Lost Vikings — это головоломка-платформер, в которой игрок управляет тремя викингами, каждый из которых имеет собственные умения. Викингам нужно объединить свои силы для решения загадок и прохождения уровней с различной тематикой: космический корабль, доисторический мир, Древний Египет. На изображении ниже показан первый уровень игры (источник: Strategy Wiki):
Казалось, что эту игру разобрать будет довольно просто. Уровни основаны на тайловых картах и содержат простые загадки: кнопки, включающие и отключающие объекты, передвижные ящики и поднимающий предметы кран. И на самом деле, бóльшая часть проекта по обратной разработке была достаточно прямолинейной. У игры есть один пакетный файл данных, содержащий сжатые блоки файлов. Блоки кодируют различные ресурсы игры, такие как спрайты, карты, звуки и т.д. Я написал несколько утилит, которые можно использовать для просмотра ресурсов игры: The Lost Vikings Tools.
Истории
30 000 скачиваний ReactOS v.0.4.5 за 5 дней
Приветствуем хабражителей!
18 мая 2017 года в свет вышел новый релиз ReactOS под номером 0.4.5, и за 5 дней его скачали почти 30 000 раз с официальных зеркал. Вот пруфы, Билли.
Страница загрузки | список изменений | альтернативный список изменений | официальная новость
Баг в NTFS, или как подвесить всю систему
Т.е. в данном примере, если попытаться открыть любой файл относительно файла $mft, доступ ко всему тому «С» повиснет, а так как этот том является системным, подвиснет и вся система. При этом не нужно иметь каких-либо прав. Если же том был не системным, то повиснет только доступ к этому тому, но если выполнить перезагрузку, то система повиснет на ней.
Как устроены протоколы в Elixir
В нашей компании мы активно используем Erlang, но часто рассматриваем другие альтернативные языки и подходы для улучшения качества собственного кода.
Elixir – это функциональный язык программирования общего назначения, который работает на виртуальной машине BeamVM. От Erlang отличается синтаксисом, более похожим на Ruby, и расширенными возможностями метапрограммирования.
В Elixir также существует замечательный механизм для полиморфизма под названием Protocols, но в Erlang нет синтаксической конструкции для динамической диспетчеризации, которая необходима для их реализации.
Тогда как же они устроены внутри? Какой overhead дает код с использованием протоколов? Попробуем разобраться.
PHDays HackQuest 2017: RanSomWare — небольшой криптор на GO
К заданию была всего 1 подсказка:
Warn: erawmosnar == ransomware, do not run it, if you do not know what you doing.
Обзор исходного кода Quake 2
Около месяца свободного времени я уделил чтению исходного кода Quake II. Это был удивительный и поучительный опыт, потому что в движок idTech3 внесено большое изменение: Quake 1, Quake World и QuakeGL объединены в одну красивую архитектуру кода. Особенно был интересен способ, которым достигли модульности, несмотря на то, что язык программирования C не обеспечивает полиморфизма.
Quake II во многих отношениях является блестящим образцом программного обеспечения, потому что это был самый популярный (по количеству лицензий) трёхмерный движок всех времён. На его основе было создано более 30 игр. Кроме того, он ознаменовал переход игровой индустрии от программной/8-битной системы цветов к аппаратной/24-битной. Этот переход произошёл примерно в 1997 году.
Поэтому я крайне рекомендую всем, кто любит программирование, изучить этот движок. Как обычно, я вёл бесконечное количество заметок, затем подчистил их и опубликовал как статью, чтобы сэкономить вам несколько часов.
Процесс «подчистки» меня сильно увлёк: в статье теперь более 40 мегабайт видео, скриншотов и иллюстраций. Сейчас я не знаю, стоили ли мои труды того, и нужно ли публиковать в будущем необработанные заметки в ASCII, выскажите своё мнение.
Использование инструментов исследования NES-игр на примере разбора формата компрессии игры Felix The Cat
Как удалённо отлаживать через WinDbg не включая отладочный режим Windows
В таких ситуациях помогает использование виртуальной машины с подключённым к ней отладчиком (например, GDB или IDA). Это если программа не пытается «сломаться» и в виртуальной машине тоже.
Что ждет нас в ReactOS версии 0.4.5?
Приветствуем всех Хабражителей!
Мы решили прервать затянувшееся молчание и приоткрыть завесу неизвестности над тем, что интересного подстерегает всех в приближающемся релизе версии 0.4.5. Ждать релиза осталось совсем недолго, всего две недели.
Как три школьника взломали исходный код Final Fantasy V, чтобы локализовать её
Однажды в конце 90-х Мирия (Myria) зашла в компьютерный класс старшей школы Ирвайна и наткнулась на парня, игравшего в Final Fantasy V. Это было необычно: во-первых, Final Fantasy V никогда не выпускали в США. Чтобы поиграть в эту японскую игру 1992 года на английском, нужно было сначала скачать ROM, а потом установить неофициальный фанатский патч с переводом, который недавно появился в Интернете. Мирия знала об этом патче, и это тоже было необычно: она помогала в его создании.
Парень был потрясён тем, что этот патч создала его одноклассница. «Он не знал, что я работала над патчем», — сказала Мирия, попросившая не раскрывать своего настоящего имени. «Меня удивило, что нашёлся тот, кто действительно играет в него».
За двадцать лет Мирия привыкла встречать людей, игравших в неофициальную английскую версию Final Fantasy V. Хоть это и не был первый фанатский перевод видеоигры (первым стал голландский перевод 1993 года игры для MSX SD Snatcher), но он стал наиболее существенным. Он дал понять бесчисленным западным фанатам, что "Final Fantasy III" Squaresoft на самом деле не была третьей частью Final Fantasy, и, что более важно, продемонстрировал миру силу, которую имеют фанаты в индустрии видеоигр. Устав от того, что такие компании как Square отказываются от распространения игр на западных рынках, фанаты просто локализовали Final Fantasy V самостоятельно. Позже они сделали то же самое с RPG, например, с Seiken Densetsu 3 и Mother 3. Они переводили скрипты с японского на английский, редактировали перевод и реализовывали эти скрипты в играх с помощью постоянно совершенствующихся программ.
Ближайшие события
YUBITSEC CTF: Изучайте реверс или +925 очков рейтинга за несколько минут
Анализ исходного кода и защиты от копирования Prince of Persia
Часть 1: введение
17 апреля 2012 года Джордан Мекнер опубликовал исходный код Prince of Persia.
Даже несмотря на то, что это версия для Apple II, написанная на ассемблере процессора 6502, было очень приятно погрузиться в код этой легендарной игры. Как обычно, меня ждало множество программных интересностей.
Очевидно слабая для программирования игр среда Apple II на самом деле была фундаментом несравнимых ни с чем инноваций и творчества: самомодифицирующийся код, внутренний загрузчик, умный формат гибких дисков и смещение таблиц поиска. В каждом своём модуле Prince Of Persia хранит сокровища инженерной мысли.
Чтение исходников позволило мне не только узнать больше о процессе разработки игр в 80-х, но и снова вызвало чувство признательности за те вещи, которые сегодня считаются естественными.
Как обычно, я вёл подробные записи и на их основе создал эту статью. Надеюсь, она вдохновит других на чтение исходного кода и усовершенствование своих навыков разработки.
Погоня за первой пасхалкой
«Вы когда-нибудь играли в Starship 1?»
Про технику безопасности, ядерную физику и любовь: о противоречиях современной ИТ-архитектуры фронтальных решений
Больше изоленты!
У меня есть друг, его профессия связана с электромонтажом. Когда он был моложе и циничнее, он любил травить байки про электриков, которые работали на необесточенных сетях. Конец всегда был занимательный, но печальный для главного героя. С компонентной архитектурой так же: где-нибудь не изолируешь один функционал от другого, «ударит током» и тебя, и того, кто будет после тебя. Разница в том, что изоляция в IT пока более затратное удовольствие, чем в электрике.
Доверенная загрузка Шрёдингера. Intel Boot Guard
Предлагаем вновь спуститься на низкий уровень и поговорить о безопасности прошивок x86-совместимых компьютерных платформ. В этот раз главным ингредиентом исследования является Intel Boot Guard (не путать с Intel BIOS Guard!) – аппаратно-поддержанная технология доверенной загрузки BIOS, которую вендор компьютерной системы может перманентно включить или выключить на этапе производства. Ну а рецепт исследования нам уже знаком: тонко нарезать реверс-инжинирингом имплементацию данной технологии, описать её архитектуру, наполнив недокументированными деталями, приправить по вкусу векторами атак и перемешать. Подбавим огня рассказом о том, как годами клонируемая ошибка на производстве нескольких вендоров позволяет потенциальному злоумышленнику использовать эту технологию для создания в системе неудаляемого (даже программатором) скрытого руткита.
Кстати, в основе статьи – доклады «На страже руткитов: Intel BootGuard» с конференции ZeroNights 2016 и 29-й встречи DefCon Russia (обе презентации здесь).
Реверс-инжиниринг радиоуправляемого танка с помощью GNU Radio и HackRF
Год назад наша CTF-команда на крупном международном соревновании RuCTF в Екатеринбурге в качестве одного из призов получила радиоуправляемый танк.
Зачем команде хакеров игрушечный радиоуправляемый танк? Чтобы его реверсить, конечно.
В статье я расскажу, как при помощи GNU Radio и HackRF One можно c нуля разобраться в беспроводном протоколе управления танком, как декодировать его пакеты и генерировать их программно, чтобы управлять танком с компьютера.
Проверяем честность игры в рулетку на смарт-контракте Ethereum
Мало кто нынче не слышал о криптовалютах и, в частности, Bitcoin. В 2014-м году, на волне интереса к биткоину, появилась новая криптовалюта — Ethereum. Сегодня, в 2017-м, она является второй по капитализации после биткоина. Одним из важнейших её отличий от биткоина является использование тьюринг-полной виртуальной машины — EVM. Подробнее про эфир можно прочитать в его Yellow Paper.
Смарт-контракты Ethereum обычно пишут на языке Solidity. На Хабре уже были статьи про написание и тестирование смарт-контрактов, например 1, 2, 3. А про связь смарт-контракта с сайтом можно почитать, например, статью о создании простейшей голосовалки на смарт-контракте. В этой статье используется встроенный в кошелёк Mist броузер, но то же самое можно делать используя плагин к Chrome, например MetaMask. Именно так, через MetaMask, и работает игра, которую мы будем исследовать.