Старый компьютер иногда хранит совершенно неожиданные секреты. Ребята с сайта 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 обнаружена ещё пятая область с данными, но расшифровать её пока не удалось. Возможно, это аудиозапись.
Автор: alizar