Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

«Hello, world!» на вашем iPhone уже сегодня

Смартфоны
Блог TUAW пишет о завершении своеобразного прорыва, который совершила группа волшебников программного кода, собравшаяся вокруг IRC-канала #iphone. Ими наконец-то выпущена в свет бинарная версия и исходники первой неофициальной программы для мегадевайса Apple iPhone.

По вполне понятным причинам, программа только демонстрирует саму возможность установки и работы стороннего ПО на iPhone и потому не делает ничего кроме традиционного выведения приветствия «Hello, world!» через GUI гаджета. Возможно это не самый яркий пример обратной разработки в компьютерной области, но он совершенно точно заслуживает внимания.
Всего голосов 31: ↑21 и ↓10 +11
Просмотры 467
Комментарии 11

Конкурс «Лучший реверсер» на PHDays III: взгляд разработчика

Блог компании Positive Technologies Спортивное программирование *Отладка *
Когда мы взялись за подготовку задания для конкурса, нам хотелось сделать его интересным, сложным, но одновременно решаемым.

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

В качестве платформы была выбрана 64-битная версия ОС Windows. 64 бита — потому что использование Hex-Rays Decompiler для x86 сильно упрощает задачу, а под x64 декомпилятора пока нет. Да и вообще, 64-битные приложения уже стали обычным явлением.

Итак, была собрана небольшая программа с использованием Qt (и статических библиотек). При этом исполняемый файл получился размером почти 10 МБ. Но разве это много для настоящего реверсера? Хотя, по отзывам, некоторых участников напугал размер файла. С другой стороны, Qt оставляет кучу полезной информации, а уж отделять зерна от плевел реверсер должен уметь…
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Просмотры 4.5K
Комментарии 4

А много ли дроны дают молока? Приёмы обратной разработки в звуковом дизайне

Работа с видео *Звук
Tutorial
Статья является попыткой разобраться, можно ли передавать опыт обратной разработки в звуковом дизайне средствами выразительности русского языка.

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

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


Если вам ещё интересно, прошу под кат. Трафик!
Всего голосов 106: ↑103 и ↓3 +100
Просмотры 31K
Комментарии 12

Взламываем D-Link DSP-W215 Smart Plug

Информационная безопасность *Реверс-инжиниринг *
Перевод
image
D-Link DSP-W215 Smart Plug — беспроводное устройство для мониторинга и контроля за электрическими розетками. Его пока нельзя купить в магазинах Amazon или Best Buy, но прошивка уже доступна для скачивания на сайте D-Link.

TL;DR: DSP-W215 содержит ошибку переполнения буфера, которая позволяет неаутентифицированному пользователю полностью управлять устройством, в том числе и самой розеткой.
Читать дальше →
Всего голосов 68: ↑67 и ↓1 +66
Просмотры 30K
Комментарии 14

Взламываем D-Link DSP-W215 Smart Plug. Снова

Информационная безопасность *Реверс-инжиниринг *
Перевод
image
Недавно, D-Link выпустил прошивку v1.02 для DSP-W215, в которой исправлен баг HNAP с переполнением буфера в my_cgi.cgi. Хоть они и быстренько убрали прошивку с сайта: «Вы можете обновить прошивку через мобильное приложение», я успел ее скачать перед моим рейсом в Мюнхен, и 8-часовой перелет предоставил мне достаточно времени для качественного анализа новой версии прошивки.

К сожалению, баг с HNAP был не единственной проблемой этого устройства. Конфигурационный файл lighttpd показывает нам, что my_cgi.cgi используется для обработки некоторых страниц, а не только HNAP-запросов:
alias.url += ( "/HNAP1/" => "/www/my_cgi.cgi",
               "/HNAP1"  => "/www/my_cgi.cgi",
               "/router_info.xml" => "/www/my_cgi.cgi",
               "/post_login.xml" => "/www/my_cgi.cgi",
               "/get_shareport_info" => "/www/my_cgi.cgi",
               "/secmark1524.cgi" => "/www/my_cgi.cgi",
               "/common/info.cgi" => "/www/my_cgi.cgi"
)


Главная функция в my_cgi.cgi имеет два ветвления кода: один для обработки HNAP-запросов, а другой — для всего остального:
image
Читать дальше →
Всего голосов 45: ↑43 и ↓2 +41
Просмотры 12K
Комментарии 4

Взламываем D-Link DSP-W215 Smart Plug. Снова и опять

Информационная безопасность *Реверс-инжиниринг *
Перевод
Вот мы снова и опять.
image

В последнем эксплоите к DSP-W215 я говорил, чтобы функция get_input_entries не падала, нужно использовать имя «storage_path» в POST-запросе. Так нужно было сделать из-за того, что есть еще одно переполнение буфера, на этот раз в функции get_input_entries, которую вызывает get_input_entries, если имя пост параметра отлично от «storage_path» или «path»:
image

В функцию replace_special_char передается один аргумент — указатель на обрабатываемое POST-значение:
image
Читать дальше →
Всего голосов 48: ↑44 и ↓4 +40
Просмотры 9.5K
Комментарии 0

Взламываем D-Link DSP-W215 Smart Plug: Опять, снова, еще раз

Информационная безопасность *Реверс-инжиниринг *
Перевод
image

В предыдущих сериях:
  1. Взламываем D-Link DSP-W215 Smart Plug
  2. Взламываем D-Link DSP-W215 Smart Plug. Снова
  3. Взламываем D-Link DSP-W215 Smart Plug. Снова и опять


До сих пор, все найденные в DSP-W215 уязвимости могли быть выполнены только из LAN, ну, если вы не глупец и не открыли доступ к Smart Plug из интернета.
Типичным способом атаки устройств со встроенным веб-сервером, доступным только из внутренней сети, типа того, что у DSP-W215 — через CSRF. Проблема этого метода в том, что любой веб-браузер будет кодировать (urlencode) передаваемые данные, например, адрес возврата, но до этого момента мы использовали уязвимости, которые не декодируют (urldecode) наши данные (уязвимость в функции replace_special_char, которую мы эксплуатировали в предыдущей статье, декодирует только ограниченный набор ASCII-символов).

Бинарный файл my_cgi.cgi, который является основной уязвимой целью, содержит функцию-декодировщик «decode», которая декодирует POST-данные. Этой функции передается два аргумента: указатель на закодированные данные и указатель на буфер, где хранятся раскодированные данные:
void decode(char *encode_buf, char *decode_buf);


Эта функция просто проходит циклом по всем байтам в encode_buf и раскодирует или копирует их в decode_buf:
image
Читать дальше →
Всего голосов 56: ↑46 и ↓10 +36
Просмотры 24K
Комментарии 17

PHDays V: как сделать свой Shodan, противостоять ROP-шеллкодам и автоматизировать обратную разработку

Блог компании Positive Technologies Информационная безопасность *


Пятый международный форум по практической безопасности Positive Hack Days состоится 26 и 27 мая 2015 года в московском Центре международной торговли. Недавно завершилась вторая волна Call For Papers и сегодня мы представляем вашему вниманию новую порцию выступлений.
Читать дальше →
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 6.4K
Комментарии 4

Реверс-инжиниринг мерцающего светодиода (+RGB)

Блог компании Zeptobars Реверс-инжиниринг *
1.5 года назад на Хабре писали о попытке реверс-инжениринга случайно мерцающего светодиода. Тогда попытки проанализировать паттерны мерцания светодиода как черного ящика окончательным успехом не увенчались — однако было установлено распределение скважностей модуляции яркости, и был написан эмулятор. За прошедшее время разные группы вскрывали мерцающие светодиоды — и об их работе стало известно несколько больше. Наконец, дошли до них руки и у меня.

За прошедшее время обнаружилось, что кристаллов «случайного моргания» — довольно много разновидностей. Фотографии и размышления авторов на тему принципа работы аналогичных кристаллов — siliconpr0n.org, cpldcpu.wordpress.com, hackaday.com. Удивляет то, что мало того, что кто-то предметно занимается разработкой и массовым производством такой казалось бы незначительной вещи как мерцающий светодиод — там еще есть и прогресс/конкуренция!
Читать дальше →
Всего голосов 52: ↑50 и ↓2 +48
Просмотры 45K
Комментарии 14

Анализируем необычные прошивки: разбор конкурса Best Reverser

Блог компании Positive Technologies Информационная безопасность *Разработка веб-сайтов *


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

Как обычно выглядят задачки на реверс? Есть исполняемый файл под Windows (или Linux, или MacOS, или другую популярную операционную систему), его можно запускать, смотреть под отладчиком, крутить как угодно в виртуальных средах. Формат файла — известный. Система команд процессора — x86, AMD64 или ARM.

Библиотечные функции и системные вызовы — задокументированы. Доступ к оборудованию — только через механизмы операционной системы.

С использованием существующих инструментов (например, IDAPro с HеxRays и всеми сопутствующими возможностями) анализ подобных приложений становится практически детской забавой: все получается просто и быстро.
Читать дальше →
Всего голосов 22: ↑20 и ↓2 +18
Просмотры 14K
Комментарии 2

Сказ о компрессоре, который можно называть, но не помню, как

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

Читать дальше →
Всего голосов 66: ↑64 и ↓2 +62
Просмотры 22K
Комментарии 15

Подключение символьного ЖКИ к плате от WD MyBook Live на AppliedMicro APM82181

C *Разработка под Linux *Программирование микроконтроллеров *
Добрый день! Целью данной работы было расширение возможностей имеющейся платы от NAS WesternDigital MyBook Live.
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 6.7K
Комментарии 19

Подключение символьного ЖКИ к плате от WD MyBook Live на AppliedMicro APM82181. Окончание

C *Разработка под Linux *Программирование микроконтроллеров *
Добрый день! Продожим работу с платой от NAS WesternDigital MyBook Live и подключенным к ней ЖК индикатором. Итак, в предыдущей части мы нашли на плате место для подключения к шине I2C, подключили расширитель портов с индикатором, убедились что все работает. Сегодня выведем на индикатор состояние системы.
image
image
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 6.6K
Комментарии 0

Защита игр GameBoy Advance от эмуляции

Разработка игр *Реверс-инжиниринг *
Перевод


Кое-кто из вас может помнить серию примечательных игр для Game Boy Advance, вышедших в течение 2004 года. Светло-серые картриджи с простыми этикетками сильно отличались от обычных, тёмно-серых, с разноцветными этикетками. На них продавались игры, портированные с оригинальной Nintendo Entertainment System. Эти игры, известные в США как Classic NES Series, интересны по нескольким причинам.

Особенно интересны они с точки зрения эмуляции GBA. Обычно игры для Game Boy Advance невероятно проблемны, а сама платформа содержит множество средств для защиты от сбоев. Поэтому для запуска игр эмуляторы должны быть совместимы с ошибками оригинального оборудования. Однако в серии Classic NES Series разработчики пошли дальше и попытались защитить игру от запуска в эмуляторах.
Читать дальше →
Всего голосов 72: ↑72 и ↓0 +72
Просмотры 12K
Комментарии 9

Анализ исходного кода Another World

Разработка игр *Реверс-инжиниринг *
Перевод
image

Я потратил две недели на чтение и реверс-инжиниринг исходного кода Another World (в Северной Америке игра вышла под названием Out Of This World). Моя работа основана на обратной разработке Грегори Монтуа (Gregory Montoir) оригинального исполняемого файла для DOS из двоичного кода в C++.

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

Всё это умещалось на гибкий диск ёмкостью 1,44 МБ и работало на 600 КБ ОЗУ. Совсем неплохо для 1991 года! Как обычно, я привёл свои заметки в порядок — это поможет кому-нибудь сэкономить несколько часов работы.
Всего голосов 74: ↑74 и ↓0 +74
Просмотры 20K
Комментарии 16

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

Разработка игр *Алгоритмы *Реверс-инжиниринг *
Перевод
image

Я с удовольствием погрузился в изучение исходного кода Quake World и изложил в статье всё, что я понял. Надеюсь, это поможет желающим разобраться. Эта статья разделена на четыре части:

  • Архитектура
  • Сеть
  • Прогнозирование
  • Визуализация
Читать дальше →
Всего голосов 54: ↑54 и ↓0 +54
Просмотры 39K
Комментарии 8

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

Разработка игр *Реверс-инжиниринг *
Перевод
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
Просмотры 23K
Комментарии 26

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

Разработка игр *Компиляторы *Реверс-инжиниринг *
Перевод
После интересной обратной разработки игрового движка 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
Просмотры 24K
Комментарии 17

Внутренняя структура игры Contra

Разработка игр *Реверс-инжиниринг *
Перевод
image

Как и многие из тех, кто программирует видеоигры, в детстве я часто играл в игры для NES. Меня всегда поражало, как разработчики смогли добиться столь многого минимальными усилиями, поэтому я потратил кучу времени на анализ внутренней работы некоторых игр. Сегодня я начинаю серию постов, в котором буду документировать то, чему научился, с точки зрения программиста игр. Я постараюсь сосредоточиться на работе систем игры на уровне движка, а не на аппаратном уровне (то есть буду говорить о том, как игра решает, что нужно отрисовать в текущем кадре, а не о том, как работают спрайты на NES). Также я постараюсь добавить любые крупицы информации об играх, которые мне покажутся интересными, например, неочевидное с точки зрения игрока поведение или примеры багов в логике игры.
Читать дальше →
Всего голосов 113: ↑112 и ↓1 +111
Просмотры 44K
Комментарии 30

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

Разработка игр *Реверс-инжиниринг *
Перевод
image

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

Рендерер Quake III


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

  • Система шейдеров, построенная поверх фиксированного конвейера OpenGL 1.X. Это было большим достижением для 1999 года. Она обеспечивала большое пространство для инноваций в эру до повсеместно распространённых сегодня вершинных, геометрических и фрагментных шейдеров.
  • Поддержка многоядерной архитектуры: клиент-серверная модель OpenGL блокирует некоторые методы и система потоков частично решает эту проблему.
Читать дальше →
Всего голосов 99: ↑97 и ↓2 +95
Просмотры 39K
Комментарии 12