1 ポイント 投稿者 GN⁺ 2025-06-25 | 1件のコメント | WhatsAppで共有
  • 1997〜1999年のベージュの Power Macintosh G3 ROM には隠されたチーム写真が入っていたが、実機で表示する方法は2025年まで知られていなかった
  • 決定的な手がかりは nitt resource ID 43「Native 4.3」の末尾にあった .Edisksecret ROM imageThe Team といった Pascal文字列で、このリソースは PowerPC ネイティブの SCSI Manager 4.3 コードだった
  • Ghidra で PEF 実行ファイルをリバースエンジニアリングしたところ、RAM Disk のボリューム名が secret ROM image のとき HPOE resource 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 FiendEric Harmonの Mac ROM テンプレート ROM Fiend が使われた
  • ROM 内の HPOE タイプのリソースには、この Mac モデルの開発者たちと思われる複数人の JPEG 写真が入っていた
  • 写真の存在自体は新発見ではなく、Pierre Dandumont が 2014 年にすでに取り上げている
    • 当時は実機でこの画像を表示する方法は確認されていなかった
    • 一部のより古い Mac には似た写真を表示する秘密のキー操作があったが、G3 ROM の写真を表示する方法は謎のままだった

手がかりとなった SCSI Manager 4.3 リソース

  • 追加調査の途中で nitt resource ID 43、名前「Native 4.3」が見つかった
  • Keith Kaisershot の Pippin 研究 のおかげで、このリソースが PowerPC ネイティブの SCSI Manager 4.3 コードだとすぐに判断できた
  • リソース末尾には、イースターエッグと結びつきそうな Pascal 文字列が入っていた
    • .Edisk
    • secret ROM image
    • The Team
  • とくに secret ROM image は、以前に見つかっていた隠し写真と関係している可能性が高かった
  • インターネット検索の結果、同じ文言は 以前の PowerPC Mac のイースターエッグ にも使われていた
    • 以前の機種では、その文言を入力して選択し、デスクトップへドラッグすると写真が現れた
    • しかし同じ方法は G3 では動作しなかった

Ghidraで確認した実際のコードフロー

  • nitt resource ID 43 全体をファイルとして抽出すると、PowerPC PEF executable と認識された
  • ファイルの先頭 12 バイトは Joy!peffpwpc で、Ghidra はこれを PEF ファイルとしてそのまま読み込んだ
  • 最初の解析では secret ROM image 文字列の参照がうまく取れなかったが、Auto Analyze をもう一度実行すると、注目していた文字列への参照が追加で見つかった
  • その関数は .EDisk ドライバ、つまり RAM ディスクドライバに関する処理を行っていた
  • デコンパイル結果の主要な動作は次のとおり
    • .Edisk というドライバを探す
    • そのドライバに接続されたディスク、つまり RAM ディスクを探す
    • そのディスクに接続されたボリュームを探す
    • ボリューム名が secret ROM image の場合:
      • HPOE resource ID 1 をロードして JPEG 画像データを取得する
      • creator が ttxt、type が JPEGThe 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件のコメント

 
GN⁺ 2025-06-25
Hacker News のコメント
  • こういうイースターエッグは全体として、初期のデスクトップPC時代の雰囲気を強く感じさせる
    製品の背後には顔と名前を持つ人々がいるのだと結びつけてくれる、とても人間的な要素だった
    当時はハードコアな nerd たちが情熱で作っていたプロジェクトだったが、最近は製品の抽象化レイヤーの向こう側を見せないようにする空気が強い
    プロダクト担当者は製品全体のイメージをコントロールしたがるし、名簿が大きすぎたり、その中の誰かが後で問題になる可能性まで考えると、非人間化しておくほうが安全だと見ているようだ
    今なら、iPhone で有効化するたびに開発に参加した人を何人かランダムに表示するような素敵なイースターエッグを想像できる。個人的には好きだろうけれど、プロダクト担当者の高尚な趣味には障る気がする

    • Agile 以前には、こういうことがもっと多かったのかもしれないとも思う
      締め切り中心の開発では、チームの一部がマイルストーンを越えるために別のメンバーが何かを終えるのを待つ状況が生まれ、バックログをひたすら漁るのにも限界がある
      退屈さと「小さなものをこっそり入れてもロードマップには影響しないだろう」という合理化が合わさると、動機も機会もずっと増える
    • 自分で作った成果物にイースターエッグを入れたことがある立場からすると、最大の問題は、冗談以上の価値がない機能のためにソフトウェアへ潜在的な障害点を追加する度胸がないことだ
      特にソフトウェアがこれほど複雑で大きくなった今ではなおさらだし、会社でくだらないものを作る時間があるのかも分からない
      いつも120%で働いている感じだ
    • 新しい Mac で特殊なショートカットキーを押すと、Craig Federighiの豊かな胸毛の全身ポートレートが全画面で表示され、胸の部分を「無限」に拡大できる5GBのダウンロードが提供されるかもしれないので注意が必要だ
    • プロダクト担当者に何か妙な不満があるのかは分からないが、これはプロダクト管理とはまったく関係ない
      昔のソフトウェアは少人数で作られていたが、今では1つの組織の中で何千人もが関わっている
      良くも悪くもそれが現実で、今日の大規模ソフトウェアプロジェクトで数人だけを強調するイースターエッグは、あまり意味をなさない
  • かなり素敵だし、企業の背後に本物の人間がいることを示している
    金持ちの一部は「自分が作った」と言いながら、小さな人々の功績を横取りすることもある
    一方で実際の小さな人々は、歴史の中に「いや、これを成し遂げるために魂を込めたのは私たちだ」という痕跡を残す
    もちろん Steve Jobs なら禁止しただろうけど

    • Jobs が大好きというわけではないが、時々戯画化される悪役像よりはるかに複雑な人物だったと思う
      この話題に関しては、むしろこういう流れの起点に近かった: https://www.folklore.org/Signing_Party.html
      だから「もちろん」と言えることではないし、Microsoft も2000年代初頭からイースターエッグ禁止ポリシーを持っていたので、Jobs だけの問題でもない
    • 危機に陥った Apple に戻ってきた Jobs が、秘密のアセンブリコードに埋もれた何らかのかすかな ROM イメージとその位置を個人的に知っていた可能性は低い
      よりありそうなのは、そうした「本物の人間」の一人が整理作業中に消したということだ
      Jobs は Apple で働くすばらしい人々について公の場でよく語っていたし、Walt Mossberg とも優れたチームを作り創造性を育てることがいかに重要かを話していた
    • 利潤は未払い労働の窃盗だという考えは揺るがないが、Meta レベルの給与なら、仕事に対する個人的な承認の問題では Mad Men のあの場面を思い出す
      「その金はまさにそのためのものだ!」
  • 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 バージョンでさえ、開発者機能を開かなければならないユーザーに、がっかりするほど乏しいインタラクションしかない退屈な「イースターエッグ」を与えるだけなのは悲しい
    • FILE_ID.DIZ の中に小さなものがある
      https://raw.githubusercontent.com/tirrenotechnologies/tirren...
  • 以前、誰かが iPad の playground アプリで小さなコードを書いて、ROM の次のロゴのようなものを呼び出すイースターエッグを共有していたことがある
    当時は再現できたが、その後は関連資料を再び見つけられなかった
    だいたい6年ほど前のことだった

  • 印象的
    このイースターエッグの発動メカニズムを誰かが見つけるまで、そんなに長くかかったというのが興味深い
    リバースエンジニアリングは難しい
    さて、どこでリバースエンジニアリングを学べるのか気になる
    どこから始めればいいのか、オンラインチュートリアルやおすすめの本があるのか知りたい

    • ビデオゲームは始めるにはいい題材で、特にNESのような古いコンソールが向いている
      実験結果がすぐ目に見えるし、デバイスも単純
      ただしハードウェアの「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
    • 発見を共有するのはいつだって素晴らしいことだが、本当に27年間、誰かが積極的に探していたのかは別の話
      多くの場合、ただ誰かが初めてコードを掘ってみただけだったりする
      特にGhidraのおかげで、あまり人気のないアーキテクチャでもデコンパイルがはるかに簡単になってからはなおさら
      一度やってみるといい。手の届きやすい果実はかなり多い
      以前、似たような事例を投稿したこともある
      幸い、ほかのOSのイースターエッグと違って、「サポートの悪い実行ファイル形式のビットマップリソースに保存された連鎖XOR」のような難読化はなかったようだ: https://x.com/mswin_bat/status/1504788425525719043
  • 人々はSteve Jobsをあまりに神格化しがちだが、どうだろう
    個人的には、Macが荒野をさまよっていた時代もけっこう好きだ
    こういうものを読むと、たとえ全体としては利益になったとしても、Jobsの復帰によってAppleの文化とアイデンティティは何かを失ったように感じる

    • Steve Jobsの大ファンだが、1985年から1996年までの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にぴったりの題材だったはずだが、仕方ない

  • 初期コンピューティングの時代のチームがどれほど小さかったのかにはいつも魅了されるし、どうにかしてあの時代に戻れたらいいのにと思う