1 ポイント 投稿者 GN⁺ 2025-06-25 | 1件のコメント | WhatsAppで共有
  • Power Mac G3 ROM の内部を解析している最中に、ユニークなイースターエッグを偶然発見した体験の紹介
  • HPOE というリソースに開発者の写真が隠されていることは既に知られていたが、実際の表示方法はこれまで謎だった
  • "secret ROM image" というテキストが SCSI Manager のコード内に現れ、手がかりを与えた
  • RAMディスクを特定の名前でフォーマットすると "The Team" ファイルが生成され、このファイルが 隠された画像を公開する
  • この方法は Mac OS 9.0.4 まで動作し、今回の発見が このイースターエッグの初公開 と見られる

Power Mac G3 ROMにおけるイースターエッグ発見の背景

  • 最近 Power Macintosh G3 の ROMを解析 する過程で、これまで公式に文書化されていなかった イースターエッグ を発見した
  • 解析には Hex Fiend と、Eric Harmon の Mac ROM テンプレートである ROM Fiend が使われた
  • 1997年から1999年まで使われていた beige デスクトップ、ミニタワー、all-in-one G3 モデルの ROM が対象
  • 開発者本人も G3 が27年以上前のものだという事実に感嘆している

ROMでの興味深い発見の要約

  • 最初に目を引いたのは HPOE タイプリソース にある JPEG 画像で、これは当時このモデルの開発に参加していた人々の集合写真と推定される
  • この画像は以前にも言及されたことがあったが、実際に表示する方法は明らかになっていなかった
  • 次に、nitt リソース ID 43 (Native 4.3) で興味深い Pascal 文字列 を発見した: ".Edisk", "secret ROM image", "The Team"
  • "secret ROM image" は DOS Mac のイースターエッグと関係している可能性があると推測されたが、既存の方法は G3 では動作しなかった

コード解析と方法導出の過程

  • コードを逆アセンブルすることに決め、nitt43 ファイル全体を Ghidra で解析した
  • PowerPC アセンブリコードには不慣れだったものの、Ghidra のデコンパイラ のおかげで可読性の高いコードに変換できた
  • 主要な関数が .EDisk (RAMディスク) ドライバ と相互作用していることが判明した
  • 名前が "secret ROM image" のボリューム (=RAMディスク) が検出されると、HPOE リソース ID 1 に入っている JPEG データを "The Team" というファイルに書き込む

実際のイースターエッグ発動方法

  • 解析の結果、RAMディスクを "secret ROM image" という名前でフォーマットするとイースターエッグが実行される
  • Infinite Mac プロジェクトなどのオンラインエミュレータでこの方法を確認できる
  • 具体的な手順:
    • メモリコントロールパネルで RAMディスクを有効化
    • Special メニューで Restart を選択
    • デスクトップに戻ったら RAMディスクアイコンを選択
    • Special メニューで Erase Disk を選択
    • 名前を "secret ROM image" と正確に入力し、Erase をクリック
    • フォーマットした RAMディスクを開くと "The Team" ファイルが生成される
  • ファイルは SimpleText などで開いて内部画像を確認できる

イースターエッグの意義と締めくくり

  • この方法は Mac OS 9.0.4 バージョンまで正常に動作することがテストされた
  • これまでその画像が ROM に存在すること自体は知られていたが、実際の発動方法 は今回初めて完全に明らかになった
  • これは Steve Jobs が1997年に Apple に復帰した後、公式に禁止していた最後のイースターエッグの1つである可能性が高い
  • 数々のテストと手がかりによって隠された機能が世に出たもので、オールドMacのハードウェアとソフトウェアの解析、および 歴史的技術の発掘 という観点から大きな意味を持つ

締めくくり

  • RAMディスクを名前を変えてフォーマットするというシンプルな方法で、27年間眠っていた 開発チームの非公式な記念画像 が姿を現した事例
  • イースターエッグの技術や Apple の開発文化、隠れた開発者たちの痕跡に関心のある読者にとって興味深い事例

1件のコメント

 
GN⁺ 2025-06-25
Hacker Newsのコメント
  • こういうイースターエッグは、初期のデスクトップPC時代の空気感を強く感じさせる要素だと思う。おかげで、本当に人間が作ったソフトウェアなのだと実感できる。昔は少人数の情熱的な開発者が集まって作った作品が多かったことを思い出す。今は製品イメージを完全に統制しようとする Product People(企画・管理部門)がいて、意図的にぞっとするほど非人間的に感じられることもある。想像してみると、もし今の自分の iPhone にイースターエッグがあって、起動するたびに開発に関わった人たちの写真や名前がランダムに出てきたら楽しいだろう。でも、たぶん Product People の基準には合わないのだろうとも思う。
    • 昔は、Agile 導入前のほうがこういうイースターエッグは多かったのではないかと気になる。締切ベースの開発だと、チームの一部が待たされる状況がしばしば生まれるし、バックログにも限界があるので、そうした隙間に小さな「動機」と「機会」ができて、イースターエッグのようなものがよく入り込んでいた記憶がある。
    • Product People への批判は少し強すぎる気がする。昔は数人で作っていたが、今はひとつのプロジェクトに何千人も関わっているのが現実だ。大規模ソフトウェアで一部の開発者の名前だけが出るイースターエッグは、あまり意味を持たなくなってしまう。
  • 昔 Apple で ASIC とボード設計をしていた同僚と働いていたのだが、その人が、どれだけ必死にシステムハードウェアを開発してデバッグしても、ソフトウェアチームは ROM 容量を無駄遣いして自分たちを美化するチーム紹介画像を入れ、ハードウェアチームは完全に無視されたと残念がっていたのを思い出す。
  • 企業の裏側に実際の人間がいることを見せるのは素敵なことだと思う。大金持ちは「これを作ったのは自分だ」と言って実際の功績を持っていこうとしがちだが、本当に実務に携わった普通の人たちは、歴史の片隅に「自分たちの魂が溶け込んでいる」という痕跡を残す。もちろん、Steve Jobs ならこういうイースターエッグを禁止したかもしれないが。
    • 個人的には Jobs のファンではなかったが、あまりに単純に悪役として見るのも不当だと思う。こういう面では、むしろ Jobs が主導的だったという歴史もある。Apple の署名パーティーを参照。ちなみに Microsoft は 2000年代初頭から「no easter eggs」ポリシーだった。Jobs だけの特徴ではなかったということだ。
    • Jobs が危機的状況で Apple に復帰したとき、どこかに隠された obscure ROM イメージの存在まで把握していたとは思えない。むしろ普通のエンジニアが整理の過程で消したのだろう。Jobs はむしろ Apple の優れたチームや創造性をよく称賛していたし、良いチーム作りの重要性についても何度も語っていた。
    • 利益とは結局、賃金として支払われなかった労働を盗むことだという信念もあるが、Meta 級の給与の話になると、昔の Mad Men で、個人としての功績を認めてほしいと望む人に対して「だからこそ金を払っているんだ」という名台詞があったのを思い出す。
  • Amiga コンピュータの開発陣が残した有名なメッセージ「We made the Amiga, they f----d it up!」を思い出す。関連リンク
  • 昔のコンピューティング時代の小規模チームには、いつも惹かれるものがある。いつかまたああいう時代に戻れたらと思う。
  • 90年代に図書館で MacWorld を読んでいて、数回のクリックとキー入力でプロセッサ関連の何かをアンロックするトリックを知った記憶がある。正確に何の機能だったかは完全には覚えていないが、Apple IIci の 33mhz プロセッサに関係するものだった。
    • 個人的には、System 7.5 で「secret about box」というテキストクリッピングをデスクトップにドラッグすると、dev チームのメンバー一覧が「レンガ」として出てくる breakout ゲームが開いたのが一番好きな思い出だ。本当に楽しい時代だった。
  • iPad の playground アプリで少しコードを書くだけで、ROM から次のロゴを読み出すイースターエッグを見つけたことがある。当時それを試してみたのだが、その後はどこにも参照を見つけられなかった。6年くらい前の話だ。
  • イースターエッグが本当に恋しい。復活してほしいと思う。
    • 同感。今でも小規模プロジェクトでは少し残っているが、大規模プロジェクトでも復活してほしい。子どもの頃は、イースターエッグがあるという噂だけでその製品をより長く使ってみたくなったものだ。今では Android ですらイースターエッグが味気なくなっていて、開発者モードでようやく解放してもあまり感動がなく、かなり残念だ。
    • うちのチームのプロジェクトには小さなイースターエッグが FILE_ID.DIZ に入っている。リンク
  • こうしたイースターエッグの仕組みが長いあいだ誰にも発見されなかったことが印象的だ。リバースエンジニアリングが本当に難しいのだと感じる。始めるならどこから手をつければいいのか、オンラインチュートリアルやおすすめの本があれば教えてほしい。
    • ビデオゲーム、とくに NES のような古いコンソールは入門に向いているのでおすすめだ。やってみると結果がすぐ見えるので面白いし、関連ツールも多い。たとえば Mesen で NES ゲームをデバッグツール付きで動かして、nesdev.org を見るとよい。すでに解析済みのゲームなら Data Crystal で追加情報を探すのもコツだ。現代のソフトウェアはもっと難しいが、以前 Gamecube ゲームのハックについて書いたことがある。Super Monkey Ball ハック Part 1 Part 2, decompilation with ghidra HN の議論も参照
  • こういうのは Stump the Experts(Apple 関連のクイズ番組)に出てきたらぴったりの題材だったのに、惜しい。