- PVSM.RU - https://www.pvsm.ru -
Старый компьютер иногда хранит совершенно неожиданные секреты. Ребята с сайта NYResistor опубликовали историю [1], как они героическими усилиями восстановили несколько цифровых фотографий из флэш-памяти доисторического компьютера Macintosh SE, который валялся на обочине дороги в Бруклине. Неизвестных людей на этих снимках они назвали «призраками в ROM».
Найденный на обочине компьютер Macintosh SE погрузили на багажник велосипеда и привезли домой.
Компьютер загружался, но не содержал никаких носителей информации. Однако, исследователи решили заняться цифровой археологией. Они извлекли из материнской платы две микросхемы ROM и сделали дампы с помощью устройства PROMdate [2].
Микросхемы 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 года.
Хакеры с 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
Нажмите здесь для печати.