Призраки в ROM



Старый компьютер иногда хранит совершенно неожиданные секреты. Ребята с сайта NYResistor опубликовали историю, как они героическими усилиями восстановили несколько цифровых фотографий из флэш-памяти доисторического компьютера Macintosh SE, который валялся на обочине дороги в Бруклине. Неизвестных людей на этих снимках они назвали «призраками в ROM».

Найденный на обочине компьютер Macintosh SE погрузили на багажник велосипеда и привезли домой.



Компьютер загружался, но не содержал никаких носителей информации. Однако, исследователи решили заняться цифровой археологией. Они извлекли из материнской платы две микросхемы ROM и сделали дампы с помощью устройства PROMdate.



Микросхемы ROM похожи на чипы программируемой флэш-памяти M27C512 PROM, но только здесь они непрограммируемые, поэтому отсутствует соответствующий контакт, а адресное пространство ROM увеличено до 128 КБ, по сравнению с обычными 64 КБ в программируемой M27C512.

Компьютер работает на 16-битной шине, и каждая из двух 8-битных микросхем содержит половину слова, так что вместе они сливаются в единый бинарный файл 256 килобайт. Операция по снятию дампов и слиянию прошла успешно: поиск strings выдал читаемый текст вроде “Chicago“, “PACK” и “CDEF”. Если бы байты после слияния встали не в том порядке, то было бы нечто вроде APKC вместо PACK.

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

Инструкция по пасхальному яйцу гласит, что изображения спрятаны начиная с адреса 0x41D89A. Исследователи сумели загрузиться с исторических ROM в эмуляторе Mini vMac и подтвердить, что там что-то есть. Но они хотели изъять конкретные фотографии и поискать другие секреты, которые могут скрываться в ROM.

Бинарный файл ROM сконвертировали в формат ELF и изучали фрагмент в районе 0x41D89A.

  41d89a:       4eba 0018          jsr %pc@(41d8b4 <rom+0x1d8b4>)
  41d89e:       5847                 addqw #4,%d7
  41d8a0:       0287 0000 000c  andil #12,%d7
  41d8a6:       6100 002e          bsrw 41d8d6 <rom+0x1d8d6>
  41d8aa:       307c 00b5          moveaw #181,%a0
  41d8ae:       a03b                 0120073
  41d8b0:       4efa ffec            jmp %pc@(41d89e <rom+0x1d89e>)


Инструкция 0xa03b явно выглядит подозрительно, потому что Motorola резервировала все инструкции на 0xA для процессора Motorola 68000. Здесь на помощь приходит список инструкций для Motorola 68000, откуда видно, что a03b соответствует _Delay c указанием значения задержки в %a0. То есть эту функцию можно перевести на Си примерно так:

void easter_egg(void) { func_41d8b4(); while (1) { d7 = (d7 + 4) & 0xC; func_0x41d8d6(); _Delay(181); } }


Эта функция ссылается на 0x41d8b4:

  41d8b4:       31fc ffff 0b9e     movew #-1,b9e
  41d8ba:       594f                 subqw #4,%sp
  41d8bc:       2f3c 6262 6d63  movel #1650617699,%sp@-
  41d8c2:       4267                clrw %sp@-
  41d8c4:       a9a0                0124640
  41d8c6:       201f                 movel %sp@+,%d0
  41d8c8:       6700 0050         beqw 41d91a <rom+0x1d91a>
  41d8cc:       2040                moveal %d0,%a0
  41d8ce:       21d0 0a78         movel %a0@,a78
  41d8d2:       7e00                moveq #0,%d7
  41d8d4:       4e75                rts
...
  41d91a:       a9ff                 0124777


Там идёт ссылка на _GetResource(0x62626d63) и явно начинается исполнение программы. После немалых трудов по реверс-инжинирингу специалисты сумели всё-таки восстановить структуру и обнаружить данные в формате PackBits. Применив утилиту для распаковки PackBits, а также утилиту hex2png, эти биты расположили строками по 536 пикселей — и на экране впервые появились лица людей.

Зашитые в ROM четыре фотографии неизвестных сотрудников Apple датированы 20 ноября 1986 года.









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

Кстати, в ROM обнаружена ещё пятая область с данными, но расшифровать её пока не удалось. Возможно, это аудиозапись.

Анатолий Ализар,

Хабрахабр

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя mike

Срочно перерыть все свалки! Искать старые ПЗУ и винты! Искать дискетты! Отмыть, отремонтировать! Испорченные записи восстановить! Всё раскодировать! И точно установить: а кто это там изображён??

mike, ну согласитесь, ведь интересно - легенда о пасхальном яйце действительно подтвердилась

Аватар пользователя mike

Легенда о пасхальном яйце действительно подтвердилась

Тоже мне легенда. В ПЗУ аппаратуры, что разрабатывалась в РБ ещё до перестройки и мною, и не мною, тоже есть яйца. И пасхальные, и непасхальные. Не верите?

Разработчики любят "отмечать" себя. Авось кто-нибудь откопает. Случается, откапывают. Журналистам хлебушко.

У меня когда-то произошел аналогичный случай с ЕС 1842. Она долго валялась среди разного хлама, потом из нее выкусили пару деталюшек с платы. При включении она выдала "сопряженное устройство №2 не обнаружено, введите параметры цели вручную" :)

Аватар пользователя mental

ЭТО ПРОСТО ОФИГЕННО

Аватар пользователя Dmitry

Интересно.

Очень даже.)

Аватар пользователя mike

Да, это может быть интересным всем, кто не занимался аппаратными разработками и не писал ПЗУ на Си. Ясен пень, что таких абсолютное большинство.

Сегодня я столкнулся с призраком. Вылетело от грозы древнее устройство, которое выпускалось в прошлом веке  Гомельским КБ "Луч". Выгорел оптрон, связь с периферией потерялась. Перепаял. Ура, устройство  настраивается, работает, опрашивает периферию но на компьютерные запросы данных отвечает отрицательной квитанцией. Делаю активацию -- то же. Вспоминаю, что код активации основан на фамилиях разработчиков, которые хранятся в ПЗУ устройства, как пасхальные яйца. Вытаскиваю ПЗУ, вставляю в программатор и -- представляете -- нашёл-таки фамилии! Вычисляю свёртку, заношу в энергонезависимое ОЗУ  устройства -- тот же бант. И тут вспомнил, что было два варианта активации. Самый старый вариант хранится на древнем буке P-133 с 98-ой Вендой и содержал ещё одну фамилию. Слава Богу, бук тот не выбросил.

А чувака того уже давно нет в живых...