Power Mac G3 ROMで27年前のイースターエッグが見つかった話
(downtowndougbrown.com)- 1997〜1999年のベージュの Power Macintosh G3 ROM には隠されたチーム写真が入っていたが、実機で表示する方法は2025年まで知られていなかった
- 決定的な手がかりは
nittresource ID 43「Native 4.3」の末尾にあった.Edisk、secret ROM image、The Teamといった Pascal文字列で、このリソースは PowerPC ネイティブの SCSI Manager 4.3 コードだった Ghidraで PEF 実行ファイルをリバースエンジニアリングしたところ、RAM Disk のボリューム名がsecret ROM imageのときHPOEresource ID 1 の JPEG をThe Teamファイルとして書き出す流れが確認された- 有効化は RAM Disk を有効にして再起動した後、RAM Disk を消去する際にフォーマットダイアログへ
secret ROM imageを正確に入力する方式で、エミュレータと実機のデスクトップ G3 の両方で再現された - 複数のテスト結果から、この方法は Mac OS 9.0.4 まで動作するようで、9.1 が動作しなくなる最初のバージョンである可能性がある
ROMの中に残されていた隠しチーム写真
- Power Macintosh G3 ROM を調べる過程で、まだ文書化されていなかったイースターエッグの有効化方法が明らかになった
- 対象の ROM は 1997〜1999 年に発売されたベージュのデスクトップ、ミニタワー、オールインワン G3 モデルで使われていた
- ROM の調査には Hex Fiend と Eric Harmonの Mac ROM テンプレート ROM Fiend が使われた
- ROM 内の
HPOEタイプのリソースには、この Mac モデルの開発者たちと思われる複数人の JPEG 写真が入っていた - 写真の存在自体は新発見ではなく、Pierre Dandumont が 2014 年にすでに取り上げている
- 当時は実機でこの画像を表示する方法は確認されていなかった
- 一部のより古い Mac には似た写真を表示する秘密のキー操作があったが、G3 ROM の写真を表示する方法は謎のままだった
手がかりとなった SCSI Manager 4.3 リソース
- 追加調査の途中で
nittresource ID 43、名前「Native 4.3」が見つかった - Keith Kaisershot の Pippin 研究 のおかげで、このリソースが PowerPC ネイティブの SCSI Manager 4.3 コードだとすぐに判断できた
- リソース末尾には、イースターエッグと結びつきそうな Pascal 文字列が入っていた
.Edisksecret ROM imageThe Team
- とくに
secret ROM imageは、以前に見つかっていた隠し写真と関係している可能性が高かった - インターネット検索の結果、同じ文言は 以前の PowerPC Mac のイースターエッグ にも使われていた
- 以前の機種では、その文言を入力して選択し、デスクトップへドラッグすると写真が現れた
- しかし同じ方法は G3 では動作しなかった
Ghidraで確認した実際のコードフロー
nittresource ID 43 全体をファイルとして抽出すると、PowerPC PEF executableと認識された- ファイルの先頭 12 バイトは
Joy!peffpwpcで、Ghidra はこれを PEF ファイルとしてそのまま読み込んだ - 最初の解析では
secret ROM image文字列の参照がうまく取れなかったが、Auto Analyze をもう一度実行すると、注目していた文字列への参照が追加で見つかった - その関数は
.EDiskドライバ、つまり RAM ディスクドライバに関する処理を行っていた - デコンパイル結果の主要な動作は次のとおり
.Ediskというドライバを探す- そのドライバに接続されたディスク、つまり RAM ディスクを探す
- そのディスクに接続されたボリュームを探す
- ボリューム名が
secret ROM imageの場合:HPOEresource ID 1 をロードして JPEG 画像データを取得する- creator が
ttxt、type がJPEGのThe Teamファイルを作成する - ファイルを開いて JPEG データを書き込み、閉じる
- その後、ドライバの control entry に関連する追加処理を行う
- この関数は他の 1 箇所からしか呼ばれておらず、呼び出し元では第1引数が
0x3DA(10進数で 986)かどうかを確認していた
RAM Disk のフォーマットで有効化する方法
- 実機のベージュ G3 が手元になかったため、Libera の
#mac68kチャンネルに発見内容を共有したところ、^alexが Infinite Mac での実験により、RAM Disk を消去する過程が必要だと突き止めた - その後、デスクトップ G3 の実機ハードウェアでも同じ方法が動作した
- ブラウザでは Mac OS 8.1 がインストールされたエミュレート済みのベージュ G3 を実行して再現できる
- DingusPPC を使用している
- 起動時に alias 解決失敗エラーが出ることがあるが、その場合は Stop を押せばよい
- 再現手順は次のとおり
- Memory control panel で RAM Disk を有効にする
- Special メニューで Restart を選ぶ
- デスクトップが再表示されたら RAM Disk アイコンを選ぶ
- Special メニューで Erase Disk を選ぶ
- フォーマットダイアログに
secret ROM imageを正確に入力する - Erase をクリックする
- 新しくフォーマットされた RAM Disk を開くと、
The Teamというファイルが現れる - そのファイルをダブルクリックすると SimpleText が開く
Mac OS 9.0.4 まで残っていた最後期のイースターエッグ
- 複数人のテストと筆者自身の確認によれば、この方法は Mac OS 9.0.4 まで動作 するようだ
- Mac OS 9.1 は、この方法が動作しなくなった最初のバージョンである可能性がある
- これまで確認できる範囲では、この秘密は新発見とみられる
- ROM 内に画像があること自体はすでに知られていた
- 実際にどう有効化するかは文書化されていなかった
- このイースターエッグは、Steve Jobs が 1997 年に Apple に復帰した後、イースターエッグを禁止したと報じられる以前の Mac に入った最後期のイースターエッグの 1 つかもしれない
^alexが RAM Disk を消去する必要があるという有効化条件を見つけていなければ、残りのコードをさらに追う必要があった可能性が高い
1件のコメント
Hacker News のコメント
こういうイースターエッグは全体として、初期のデスクトップPC時代の雰囲気を強く感じさせる
製品の背後には顔と名前を持つ人々がいるのだと結びつけてくれる、とても人間的な要素だった
当時はハードコアな nerd たちが情熱で作っていたプロジェクトだったが、最近は製品の抽象化レイヤーの向こう側を見せないようにする空気が強い
プロダクト担当者は製品全体のイメージをコントロールしたがるし、名簿が大きすぎたり、その中の誰かが後で問題になる可能性まで考えると、非人間化しておくほうが安全だと見ているようだ
今なら、iPhone で有効化するたびに開発に参加した人を何人かランダムに表示するような素敵なイースターエッグを想像できる。個人的には好きだろうけれど、プロダクト担当者の高尚な趣味には障る気がする
締め切り中心の開発では、チームの一部がマイルストーンを越えるために別のメンバーが何かを終えるのを待つ状況が生まれ、バックログをひたすら漁るのにも限界がある
退屈さと「小さなものをこっそり入れてもロードマップには影響しないだろう」という合理化が合わさると、動機も機会もずっと増える
特にソフトウェアがこれほど複雑で大きくなった今ではなおさらだし、会社でくだらないものを作る時間があるのかも分からない
いつも120%で働いている感じだ
昔のソフトウェアは少人数で作られていたが、今では1つの組織の中で何千人もが関わっている
良くも悪くもそれが現実で、今日の大規模ソフトウェアプロジェクトで数人だけを強調するイースターエッグは、あまり意味をなさない
かなり素敵だし、企業の背後に本物の人間がいることを示している
金持ちの一部は「自分が作った」と言いながら、小さな人々の功績を横取りすることもある
一方で実際の小さな人々は、歴史の中に「いや、これを成し遂げるために魂を込めたのは私たちだ」という痕跡を残す
もちろん Steve Jobs なら禁止しただろうけど
この話題に関しては、むしろこういう流れの起点に近かった: https://www.folklore.org/Signing_Party.html
だから「もちろん」と言えることではないし、Microsoft も2000年代初頭からイースターエッグ禁止ポリシーを持っていたので、Jobs だけの問題でもない
よりありそうなのは、そうした「本物の人間」の一人が整理作業中に消したということだ
Jobs は Apple で働くすばらしい人々について公の場でよく語っていたし、Walt Mossberg とも優れたチームを作り創造性を育てることがいかに重要かを話していた
「その金はまさにそのためのものだ!」
80年代から90年代半ばまで Apple でASIC とボード設計をしていた人と働いたことがある
あるとき、ハードウェアチームはシステム設計とデバッグに血と汗を注いだのに、ソフトウェア側が ROM イメージを50KBほど使ってコンピュータを設計したチームを称賛しながら、ハードウェアチームを完全に抜かしていたと怒っていた
「We made the Amiga, they f----d it up!」というメッセージを思い出す
https://arstechnica.com/gadgets/2007/12/amiga-history-part-5...
イースターエッグが本当に懐かしい
復活してくれるといいのに
最近は小さなプロジェクトでなら見かけるかもしれないが、もっと大規模な仕事でも見たい
子どもの頃、製品の中のイースターエッグを見つけたり聞いたりすると、それを探すためだけでもその製品をもっと使うようになった
隠された小さな喜びが昔ほど人気ではないのが残念だし、最新の Android バージョンでさえ、開発者機能を開かなければならないユーザーに、がっかりするほど乏しいインタラクションしかない退屈な「イースターエッグ」を与えるだけなのは悲しい
https://raw.githubusercontent.com/tirrenotechnologies/tirren...
以前、誰かが iPad の playground アプリで小さなコードを書いて、ROM の次のロゴのようなものを呼び出すイースターエッグを共有していたことがある
当時は再現できたが、その後は関連資料を再び見つけられなかった
だいたい6年ほど前のことだった
印象的
このイースターエッグの発動メカニズムを誰かが見つけるまで、そんなに長くかかったというのが興味深い
リバースエンジニアリングは難しい
さて、どこでリバースエンジニアリングを学べるのか気になる
どこから始めればいいのか、オンラインチュートリアルやおすすめの本があるのか知りたい
実験結果がすぐ目に見えるし、デバイスも単純
ただしハードウェアの「API」は、現代のプログラマーにはかなり直感的でないかもしれない
ハッキングやリバースエンジニアリング用のツールもすでにたくさん作られているので、好きなNESゲームをMesenで読み込み、ブラウザでnesdev.orgを開いたままデバッグツールを触ってみればいい
扱っているゲームを誰かがすでにリバースエンジニアリングしているなら、https://datacrystal.tcrf.netでも有用な情報が見つかることがある
より現代的なソフトウェアをリバースエンジニアリングするのは厄介
以前にGameCubeゲームのハッキングについて書いた2本の記事も面白いかもしれない: https://www.smokingonabike.com/2021/01/17/hacking-super-monk..., https://www.smokingonabike.com/2021/02/28/hacking-super-monk...
関連するHNの議論: https://news.ycombinator.com/item?id=26315368
多くの場合、ただ誰かが初めてコードを掘ってみただけだったりする
特にGhidraのおかげで、あまり人気のないアーキテクチャでもデコンパイルがはるかに簡単になってからはなおさら
一度やってみるといい。手の届きやすい果実はかなり多い
以前、似たような事例を投稿したこともある
幸い、ほかのOSのイースターエッグと違って、「サポートの悪い実行ファイル形式のビットマップリソースに保存された連鎖XOR」のような難読化はなかったようだ: https://x.com/mswin_bat/status/1504788425525719043
人々はSteve Jobsをあまりに神格化しがちだが、どうだろう
個人的には、Macが荒野をさまよっていた時代もけっこう好きだ
こういうものを読むと、たとえ全体としては利益になったとしても、Jobsの復帰によってAppleの文化とアイデンティティは何かを失ったように感じる
Sculley、Spindler、Amelioは最高のリーダーではなかったし、AppleはPink/Taligent、Copland、PowerBook 5300、Performa 5200/6200/5300/6300シリーズのようなハードウェアの失敗で大きく揺らいだ
特に1995年はAppleにとって災厄のような年だった
それでもこの時期には素晴らしい点がたくさんあった
Jean Louis Gasséeは拡張可能なMacのために戦い、その影響はMacintosh IIにつながり、これは「ゴミ箱」型の2013年Mac Proが出るまで途切れなかった拡張型Macの長い系譜を始めた
System 7は最も安定したOSではなかったが、UIは素晴らしかった
Don NormanとBruce Tognazziniは堅実なUI/UX原則とガイドラインを推し進め、HyperCardもこの時期の産物だ
Larry Tesler、Alan KayらがいたAppleのAdvanced Technology Groupは、Dylanプログラミング言語やSK8環境のような興味深いプロジェクトを進めていた
OpenDocも、コンポーネントベースのソフトウェアプラットフォームを作ろうとする興味深い試みだった
クラシックMac OSには居心地のよい、遊び心のある感覚もあったが、Mac OS Xへ移行する中で消えてしまった
もちろんMac OS Xにはとても感謝している
「空位期」のAppleも、Jobsが戻ってきた1997〜2011年のAppleも好きだが、Tim CookのAppleはあまり好きではない
この頃からAppleは根本から大きく変わったと感じた
Appleは財務的には史上最も成功したが、Macにはもはや1990年代や2000年代の感覚はない
Appleは今やMacの会社からiPhoneの会社になった
これはStump the Expertsにぴったりの題材だったはずだが、仕方ない
初期コンピューティングの時代のチームがどれほど小さかったのかにはいつも魅了されるし、どうにかしてあの時代に戻れたらいいのにと思う