- PVSM.RU - https://www.pvsm.ru -

Призраки в ROM

Призраки в ROM

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

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

Призраки в ROM

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

Призраки в ROM

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

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

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

Инструкция по пасхальному яйцу гласит, что изображения спрятаны начиная с адреса 0x41D89A. Исследователи сумели загрузиться с исторических ROM в эмуляторе Mini vMac [4] и подтвердить, что там что-то есть. Но они хотели изъять конкретные фотографии и поискать другие секреты, которые могут скрываться в 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. Здесь на помощь приходит список инструкций [5] для 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 [6]. Применив утилиту для распаковки PackBits, а также утилиту hex2png, эти биты расположили строками по 536 пикселей — и на экране впервые появились лица людей.

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

Призраки в ROM

Призраки в ROM

Призраки в ROM

Призраки в ROM

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

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

Автор: alizar


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/staroe-zhelezo/13750

Ссылки в тексте:

[1] историю: http://www.nycresistor.com/2012/08/21/ghosts-in-the-rom/

[2] PROMdate: http://bitbucket.org/hudson/prom/

[3] пасхальное яйцо: http://www.eeggs.com/items/2258.html

[4] Mini vMac: http://minivmac.sourceforge.net/

[5] список инструкций: http://www.mac.linux-m68k.org/devel/macalmanac.php

[6] PackBits: http://en.wikipedia.org/wiki/PackBits