Как стать автором
Обновить
172.38

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

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

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

Как работает лазерная рулетка: реверс-инжиниринг

Время на прочтение22 мин
Количество просмотров101K
image Ранее в своей статье я рассказывал о том, как устроены фазовые лазерные дальномеры. Теперь пришло время разобраться с тем, как работают бытовые лазерные рулетки. Разобраться — это не просто заглянуть, что же там внутри, а полностью восстановить всю схему и написать собственную программу для микроконтроллера.
Читать дальше →
Всего голосов 112: ↑112 и ↓0+112
Комментарии37

HexRaysPyTools: декомпилируй с удовольствием

Время на прочтение10 мин
Количество просмотров52K


В этой статье я собираюсь рассказать о плагине для IDA Pro, который написал прошлым летом, еще находясь на стажировке в нашей компании. В итоге, плагин был представлен на ZeroNights 2016 (Слайды), и с тех пор в нём было исправлено несколько багов и добавлены новые фичи. Хотя на GitHub я постарался описать его как можно подробнее, обычно коллеги и знакомые начинают пользоваться им только после проведения небольшого воркшопа. Кроме того, опущены некоторые детали внутренней работы, которые позволили бы лучше понять и использовать возможности плагина. Поэтому хотелось бы попытаться на примере объяснить, как с ним работать, а также рассказать о некоторых проблемах и тонкостях.

Всего голосов 48: ↑48 и ↓0+48
Комментарии16

Недокументированные возможности Windows: регистрация событий доступа к ключам реестра

Время на прочтение3 мин
Количество просмотров9.9K
Начиная с Windows 8 пользователи операционной системы могут заметить в журнале системных событий такое сообщение: «The access history in hive […] was cleared updating [...] keys and creating [...] modified pages». Что же скрывается за этим сообщением?
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии3

Реверс-инжиниринг игры Lost Vikings

Время на прочтение31 мин
Количество просмотров25K
После интересной обратной разработки игрового движка Comprehend (см. Recomprehend) я подбирал новый проект для реверс-инжиниринга игры под DOS. За долгие годы разные люди реверсировали множество старых популярных игр и опубликовали для них спецификации и инструменты. Например, на сайте shikadi.net есть куча информации об играх, в которые я играл в детстве.

Я обнаружил, что для реверс-инжиниринга игры The Lost Vikings компании Blizzard (тогда она называлась Silicon and Synapse), похоже, не предпринималось никаких серьёзных попыток. Игра была выпущена в 1993 году, на закате эры DOS, и очень нравилась мне в юности. The Lost Vikings — это головоломка-платформер, в которой игрок управляет тремя викингами, каждый из которых имеет собственные умения. Викингам нужно объединить свои силы для решения загадок и прохождения уровней с различной тематикой: космический корабль, доисторический мир, Древний Египет. На изображении ниже показан первый уровень игры (источник: Strategy Wiki):

image

Казалось, что эту игру разобрать будет довольно просто. Уровни основаны на тайловых картах и содержат простые загадки: кнопки, включающие и отключающие объекты, передвижные ящики и поднимающий предметы кран. И на самом деле, бóльшая часть проекта по обратной разработке была достаточно прямолинейной. У игры есть один пакетный файл данных, содержащий сжатые блоки файлов. Блоки кодируют различные ресурсы игры, такие как спрайты, карты, звуки и т.д. Я написал несколько утилит, которые можно использовать для просмотра ресурсов игры: The Lost Vikings Tools.
Всего голосов 58: ↑58 и ↓0+58
Комментарии20

Истории

30 000 скачиваний ReactOS v.0.4.5 за 5 дней

Время на прочтение1 мин
Количество просмотров30K
image

Приветствуем хабражителей!

18 мая 2017 года в свет вышел новый релиз ReactOS под номером 0.4.5, и за 5 дней его скачали почти 30 000 раз с официальных зеркал. Вот пруфы, Билли.

Страница загрузки | список изменений | альтернативный список изменений | официальная новость
Всего голосов 66: ↑61 и ↓5+56
Комментарии159

Баг в NTFS, или как подвесить всю систему

Время на прочтение5 мин
Количество просмотров82K
Не так давно при разработке фильтра файловых систем возникла проблема, которая приводила к подвисанию всей системы. Казалось бы, фильтр выполнял очень простые действия и сам был очень примитивным. Чтобы выяснить причину, пришлось спуститься до отладки и реверс-инжиниринга драйвера NTFS. Анализ выявил очень интересный эффект. Если скомпилировать и выполнить очень простую программу, изображенную на рисунке ниже, то доступ к соответствующему тому подвиснет.


Т.е. в данном примере, если попытаться открыть любой файл относительно файла $mft, доступ ко всему тому «С» повиснет, а так как этот том является системным, подвиснет и вся система. При этом не нужно иметь каких-либо прав. Если же том был не системным, то повиснет только доступ к этому тому, но если выполнить перезагрузку, то система повиснет на ней.
Читать дальше →
Всего голосов 127: ↑126 и ↓1+125
Комментарии305

Как устроены протоколы в Elixir

Время на прочтение8 мин
Количество просмотров6.3K

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


Elixir – это функциональный язык программирования общего назначения, который работает на виртуальной машине BeamVM. От Erlang отличается синтаксисом, более похожим на Ruby, и расширенными возможностями метапрограммирования.


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


Тогда как же они устроены внутри? Какой overhead дает код с использованием протоколов? Попробуем разобраться.


Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии12

PHDays HackQuest 2017: RanSomWare — небольшой криптор на GO

Время на прочтение2 мин
Количество просмотров4.7K
Всем доброго времени суток, только что подошел к концу двухнедельный HackQuest от PHDays. Не смотря на преобладание заданий связанных с WEB, организаторы не оставили без внимания и задания связанные с реверсом. Решение одного из таких заданий (erawmosnar), я бы хотел сегодня рассмотреть. К тому же думаю после WannaCry подобная тема станет ещё актуальнее.
К заданию была всего 1 подсказка:
Warn: erawmosnar == ransomware, do not run it, if you do not know what you doing.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии4

Обзор исходного кода Quake 2

Время на прочтение51 мин
Количество просмотров60K
image

Около месяца свободного времени я уделил чтению исходного кода Quake II. Это был удивительный и поучительный опыт, потому что в движок idTech3 внесено большое изменение: Quake 1, Quake World и QuakeGL объединены в одну красивую архитектуру кода. Особенно был интересен способ, которым достигли модульности, несмотря на то, что язык программирования C не обеспечивает полиморфизма.

Quake II во многих отношениях является блестящим образцом программного обеспечения, потому что это был самый популярный (по количеству лицензий) трёхмерный движок всех времён. На его основе было создано более 30 игр. Кроме того, он ознаменовал переход игровой индустрии от программной/8-битной системы цветов к аппаратной/24-битной. Этот переход произошёл примерно в 1997 году.

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

Процесс «подчистки» меня сильно увлёк: в статье теперь более 40 мегабайт видео, скриншотов и иллюстраций. Сейчас я не знаю, стоили ли мои труды того, и нужно ли публиковать в будущем необработанные заметки в ASCII, выскажите своё мнение.
Всего голосов 111: ↑110 и ↓1+109
Комментарии63

Использование инструментов исследования NES-игр на примере разбора формата компрессии игры Felix The Cat

Время на прочтение9 мин
Количество просмотров7.2K
В этой статье я расскажу, как использовать описанные в прошлой статье инструменты для исследования игры Felix The Cat для NES. Моя первоначальная цель была, как обычно, разобрать формат уровней игры и добавить её в свой универсальный редактор уровней CadEditor, однако в ходе изучения игры обнаружилось, что описание уровней сжато (это редкость для NES-игр!), поэтому я также разобрал формат компрессии данных, и написал компрессор, позволяющий сжимать отредактированные уровни так же, как это делали разработчики игры.


Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии5

Как удалённо отлаживать через WinDbg не включая отладочный режим Windows

Время на прочтение4 мин
Количество просмотров13K
Иногда при анализе какой-нибудь платной программы малвари случается так, что она не хочет нормально работать, если в памяти есть отладчик или включён отладочный режим Windows.
В таких ситуациях помогает использование виртуальной машины с подключённым к ней отладчиком (например, GDB или IDA). Это если программа не пытается «сломаться» и в виртуальной машине тоже.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии1

Что ждет нас в ReactOS версии 0.4.5?

Время на прочтение2 мин
Количество просмотров19K


Приветствуем всех Хабражителей!

Мы решили прервать затянувшееся молчание и приоткрыть завесу неизвестности над тем, что интересного подстерегает всех в приближающемся релизе версии 0.4.5. Ждать релиза осталось совсем недолго, всего две недели.
Всего голосов 64: ↑55 и ↓9+46
Комментарии67

Как три школьника взломали исходный код Final Fantasy V, чтобы локализовать её

Время на прочтение10 мин
Количество просмотров24K
image

Однажды в конце 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. Они переводили скрипты с японского на английский, редактировали перевод и реализовывали эти скрипты в играх с помощью постоянно совершенствующихся программ.
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии26

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

YUBITSEC CTF: Изучайте реверс или +925 очков рейтинга за несколько минут

Время на прочтение5 мин
Количество просмотров9.7K

Всем доброго времени суток. Только что подошел к концу очередной CTF от YubitSec, не смотря на сложности, которые возникли в самом начале из-за обильного DDoS'а всех сайтов с заданиями, битва была довольно жесткой. Задания всё ещё доступны по ссылке.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии4

Анализ исходного кода и защиты от копирования Prince of Persia

Время на прочтение13 мин
Количество просмотров27K
image

Часть 1: введение


17 апреля 2012 года Джордан Мекнер опубликовал исходный код Prince of Persia.

Даже несмотря на то, что это версия для Apple II, написанная на ассемблере процессора 6502, было очень приятно погрузиться в код этой легендарной игры. Как обычно, меня ждало множество программных интересностей.

Очевидно слабая для программирования игр среда Apple II на самом деле была фундаментом несравнимых ни с чем инноваций и творчества: самомодифицирующийся код, внутренний загрузчик, умный формат гибких дисков и смещение таблиц поиска. В каждом своём модуле Prince Of Persia хранит сокровища инженерной мысли.

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

Как обычно, я вёл подробные записи и на их основе создал эту статью. Надеюсь, она вдохновит других на чтение исходного кода и усовершенствование своих навыков разработки.
Всего голосов 72: ↑71 и ↓1+70
Комментарии25

Погоня за первой пасхалкой

Время на прочтение9 мин
Количество просмотров9.4K
Все началось с приближающегося релиза проекта, над которым я работаю, под названием «починка Gran Trak 1», о первой аркадной видео-игре 1974 года. Я закончил ремонт электроники и пытался взять интервью у как можно большего числа людей, которые занимались созданием игры. Одно из интервью было с Роном Милнером. Рон интересный парень. Он был инженером и изобретателем секретного мозгового центра Atari в горах — Cyan Engineering с 1973 по 1985 год. Помимо работы с монетоприёмниками он был одним из изобретателей системы видеоигр Atari 2600 и даже помог прототипировать анимации для роботов в Chuck E Cheese. В конце нашего разговора, когда мы болтали обо всем подряд, он спросил:

«Вы когда-нибудь играли в Starship 1
Всего голосов 23: ↑22 и ↓1+21
Комментарии1

Про технику безопасности, ядерную физику и любовь: о противоречиях современной ИТ-архитектуры фронтальных решений

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

Больше изоленты!


У меня есть друг, его профессия связана с электромонтажом. Когда он был моложе и циничнее, он любил травить байки про электриков, которые работали на необесточенных сетях. Конец всегда был занимательный, но печальный для главного героя. С компонентной архитектурой так же: где-нибудь не изолируешь один функционал от другого, «ударит током» и тебя, и того, кто будет после тебя. Разница в том, что изоляция в IT пока более затратное удовольствие, чем в электрике.

Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии14

Доверенная загрузка Шрёдингера. Intel Boot Guard

Время на прочтение19 мин
Количество просмотров55K

Предлагаем вновь спуститься на низкий уровень и поговорить о безопасности прошивок x86-совместимых компьютерных платформ. В этот раз главным ингредиентом исследования является Intel Boot Guard (не путать с Intel BIOS Guard!) – аппаратно-поддержанная технология доверенной загрузки BIOS, которую вендор компьютерной системы может перманентно включить или выключить на этапе производства. Ну а рецепт исследования нам уже знаком: тонко нарезать реверс-инжинирингом имплементацию данной технологии, описать её архитектуру, наполнив недокументированными деталями, приправить по вкусу векторами атак и перемешать. Подбавим огня рассказом о том, как годами клонируемая ошибка на производстве нескольких вендоров позволяет потенциальному злоумышленнику использовать эту технологию для создания в системе неудаляемого (даже программатором) скрытого руткита.

Кстати, в основе статьи – доклады «На страже руткитов: Intel BootGuard» с конференции ZeroNights 2016 и 29-й встречи DefCon Russia (обе презентации здесь).
Читать дальше →
Всего голосов 57: ↑57 и ↓0+57
Комментарии35

Реверс-инжиниринг радиоуправляемого танка с помощью GNU Radio и HackRF

Время на прочтение10 мин
Количество просмотров31K

Год назад наша CTF-команда на крупном международном соревновании RuCTF в Екатеринбурге в качестве одного из призов получила радиоуправляемый танк.


Зачем команде хакеров игрушечный радиоуправляемый танк? Чтобы его реверсить, конечно.


В статье я расскажу, как при помощи GNU Radio и HackRF One можно c нуля разобраться в беспроводном протоколе управления танком, как декодировать его пакеты и генерировать их программно, чтобы управлять танком с компьютера.


image

Читать дальше →
Всего голосов 60: ↑55 и ↓5+50
Комментарии21

Проверяем честность игры в рулетку на смарт-контракте Ethereum

Время на прочтение8 мин
Количество просмотров24K


Мало кто нынче не слышал о криптовалютах и, в частности, Bitcoin. В 2014-м году, на волне интереса к биткоину, появилась новая криптовалюта — Ethereum. Сегодня, в 2017-м, она является второй по капитализации после биткоина. Одним из важнейших её отличий от биткоина является использование тьюринг-полной виртуальной машины — EVM. Подробнее про эфир можно прочитать в его Yellow Paper.

Смарт-контракты Ethereum обычно пишут на языке Solidity. На Хабре уже были статьи про написание и тестирование смарт-контрактов, например 1, 2, 3. А про связь смарт-контракта с сайтом можно почитать, например, статью о создании простейшей голосовалки на смарт-контракте. В этой статье используется встроенный в кошелёк Mist броузер, но то же самое можно делать используя плагин к Chrome, например MetaMask. Именно так, через MetaMask, и работает игра, которую мы будем исследовать.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии46
Изменить настройки темы

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