Недавно залез в ROM оригинального Power Macintosh G3 и случайно обнаружил там пасхалку, о которой до этого ещё нигде не писали.

Началось с того, что одним воскресным утром я решил заглянуть в файл-шаблон ROM для Mac с помощью программы HEX Fiend Эрика Хармана. Меня интересовало, какие ресурсы хранятся в постоянной памяти Power Mac G3. Эта ROM использовалась в моделях Beige, Mini Tower и всех G3, выпускавшихся с 1997 по 1999 год.

Пишу я эту статью в середине 2025, и мне не верится, что сегодня Power Mac G3 уже больше 27 лет. Невероятно!

Изучая память этого ПК, я заметил два интересных момента.

Во-первых, я нашёл в ней ресурс с типом HPOE, где хранилась фотография в формате JPEG с изображением множества людей, предположительно тех, кто работал над этими моделями Mac.

Но сей факт не стал открытием. Пьер Дандюмонт писал об этом ещё в 2014 году. Тем не менее в своей статье он отметил, что так и не выяснил, как вывести это скрытое фото на устройстве. В некоторых более старых моделях Mac подобные изображения выводятся секретной комбинацией клавиш, но в этой аналогичный механизм оставался загадкой.

Вторым же интересным наблюдением стала полезная зацепка. Я продолжал искать в ROM прочую любопытную информацию и наткнулся на ресурс nitt с ID 43, который назывался «Native 4.3». Благодаря статье Кита Кайзершота, который хорошо расписал историю Pippin, я быстро понял, что это нативный код SCSI Manager 4.3 для PowerPC. Но внимание моё к этому ресурсу привлёк отнюдь не SCSI Manager. В самом конце этой области данных я нашёл интересные строки Pascal:

Особенно меня заинтриговали следующие:

  • .Edisk,

  • secret ROM image,

  • The Team.

В частности, мне показалось, что текст «secret ROM image» связан с показанной выше фотографией. В надежде разгадать возникшую загадку я решил копнуть глубже, чтобы выяснить роль этих строк в SCSI Manager. Я рассчитывал, что это поможет мне понять, как заставить Power Mac G3 вывести скрытое изображение.

Обратившись к интернету с запросом «secret ROM image», я выяснил, что эта строка использовалась для размещения пасхалок в ранних моделях PowerPC. На них нужно было просто ввести этот текст, выделить его, перетащить на рабочий стол, и вуаля — изображение открывалось. Но на G3 такой подход не работал.

Я подумал, что на этих ПК есть какой-то похожий способ вывода скрытых картинок, но его описание нигде найти не смог. Оставалось только дизассемблировать код в поиске мест использования этого текста. И почему меня постоянно тянет в эти безумные кроличьи норы?

Я извлёк весь ресурс nitt с ID 43 в файл и просмотрел его:

$ file nitt43
 nitt43: header for PowerPC PEF executable

Не сильно удивительно, учитывая, что первые 12 байт представляли “Joy!peffpwpc”. Я сунул весь этот файл в декомпилятор Ghidra, который сразу же распознал его формат PEF и без проблем загрузил. И хотя у меня есть достаточный опыт чтения кода ассемблера для x86 и ARM, я практически ничего не знаю об ассемблере для PowerPC. К счастью, Ghidra прекрасно с этим файлом справился.

Но здесь возникла одна проблемка: анализатор не нашёл в огромном списке указателей на переменные никаких ссылок на строку “secret ROM image”. Немного поломав голову, я понял, что он не обнаруживал ссылки на несколько переменных. И здесь мне повезло, так как повторное выполнение Auto Analyze помогло найти ещё некоторые ссылки, включая все интересовавшие меня строки. Причём для этого не пришлось менять никакие настройки анализатора.

Функция, оперировавшая этими строками, определённо взаимодействовала с драйвером .EDisk, который, как я уже знал из своего опыта, являлся драйвером RAM-диска. Похоже, она с помощью strncmp() проверяла строки на содержание “secret ROM image” и в случае совпадения создавала файл “The Team”, который открывала и заполняла нужными данными.

Я причесал этот вывод дизассемблера, присвоив переменным имена и выяснив типы данных. К счастью, для многих функций вроде PBGetVInfoSync() имелось много доступной документации, поэтому нужно было лишь сообщить Ghidra об использовавшихся структурах Mac Toolbox.

Хорошо, так уже куда понятнее!

Я не смог разобраться, как отформатировать 32-битные аргументы функций вроде 0x48504f45 в 4-буквенные коды вроде HPOE, поэтому добавил комментарии. Просто Ghidra ни в какую не давал мне выводить их при декомпиляции в виде ASCII, хотя при наведении курсора на константу показывал окошко с соответствующим текстом. Это легко проделать в IDA, но добиться того же от Ghidra я так и не смог. Я пробовал Set Equate, но безрезультатно. Если кто-то знает, как это сделать, поделитесь в комментариях.

Тем не менее показанный выше декомпилированный код вполне понятен, и вот описание его действий:

  • Он ищет драйвер .Edisk. (фактически драйвер называется .EDisk, но мне кажется, что Mac OS в этом случае не обращает внимания на регистр.)

  • Находит связанный с этим драйвером диск (RAM-диск).

  • Ищет связанный с этим диском том.

  • Если этот том назван “secret ROM image”:

    • Загружает ресурс HPOE с ID 1, где содержатся JPEG-данные.

    • Создаёт файл с идентификатором создателя ttxt и форматом JPEG под названием “The Team”.

    • Открывает этот файл, записывает в него данные JPEG и закрывает.

    • Проделывает что-то с записью, которая управляет драйвером. Здесь я не стал дальше вникать.

Очень интересно. Значит, этот код явно ищет RAM-диск с именем “secret ROM image”, но я не понимал, как конкретно его запустить. Эта функция вызывалась лишь в одном месте: в другой функции, которая проверяла равенство первого аргумента значению 0x3DA (986 в десятичной форме).

У меня не было подходящего G3 Beige для тестов, поэтому я поделился своими находками в #mac68k на Libera. В итоге на помощь пришёл ^alex, который поэкспериментировал в Infinite Mac, используя мои наработки. Он довольно быстро выяснил, что фишка заключалась в форматировании RAM-диска и вводе специального текста в соответствующее диалоговое окно:

Я достал свой G3 Desktop, протестировал его приём на реальном железе, и он сработал! Если вы хотите попробовать сами, как сделал это ^alex, запустите Infinite Mac в своём браузере по этой ссылке, которая при помощи DingusPPC настроит эмулированный G3 Beige под управлением Mac OS 8.1. Однако есть одна причуда, которая приводит к провалу разрешения псевдонимов при запуске. Я намеренно эту функцию отключил. Просто кликните Stop, когда выскочит ошибка. Вот все необходимые инструкции:

  • Включите Ram Disk в панели управления Memory.

  • Перейдите в меню Special и выберите Restart.

  • Затем на рабочем столе выберите иконку RAM Disk.

  • В меню Special выберите Erase Disk.

  • Введите текст «secret ROM image» в точности, как показано выше.

  • Кликните Erase.

Когда вы откроете отформатированный RAM-диск, там должен находиться файл «The Team»:

Если дважды по нему кликнуть, он откроется в программе SimpleText:

Судя по отзывам тех, кто опробовал этот метод, включая мой собственный опыт, работает он на всех системах вплоть до Mac OS 9.0.4. А вот с 9.1, похоже, уже нет.

Как я понял, этот секрет до нашего эксперимента раскрыт не был. Многие знали, что изображение находится в ROM, но никто не мог выяснить, как активировать его вывод. Это, пожалуй, одна из последних пасхалок, которые были спрятаны в Mac до того, как Стив Джобс открыто запретил их в 1997, когда вернулся в Apple. Интересно, он вообще о ней знал?

Отдельно хочу поблагодарить ^alex, который выяснил, что для активации пасхалки нужно отформатировать Ram Disk. Не уверен, додумался бы я сам до этого или нет, да и мне потребовалось бы куда больше усилий, чтобы трассировать оставшуюся часть кода и разобраться.

Комментарии (1)


  1. danfe
    05.07.2025 05:14

    Это, пожалуй, одна из последних пасхалок, которые были спрятаны в Mac до того, как Стив Джобс открыто запретил их в 1997, когда вернулся в Apple. Интересно, он вообще о ней знал?

    Вполне мог знать, ведь он пасхалки запретил вместе с подробными About-окошками, из-за списков разработчиков (а тут еще такая фоточка цветная), as a way to avoid headhunters and other companies trying to poach Apple engineering talent. At a time when Apple was sinking rapidly, [Jobs] said that it made no sense to make the life of the competition easier. [via Gizmodo]

    С тех пор дела у компании наладились, но если раньше на слуху были больше десятка имен выдающихся сотрудников, не считая руководителей, то нынче кроме Джони Айва никого с ходу не назовешь, да и тот уже давно не в Apple.