Призраки в ROM

в 10:36, , рубрики: apple, История ИТ, реверс-инжиниринг, старое железо, метки:

Призраки в ROM

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

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

Призраки в ROM

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

Призраки в ROM

Микросхемы 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 года.

Призраки в ROM

Призраки в ROM

Призраки в ROM

Призраки в ROM

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

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

Автор: alizar

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js