1P by GN⁺ | ★ favorite | 댓글 1개
  • 1997~1999년 베이지 Power Macintosh G3 ROM에는 숨겨진 팀 사진이 들어 있었지만, 실제 기기에서 띄우는 방법은 2025년까지 알려지지 않았음
  • 결정적 단서는 nitt resource ID 43 “Native 4.3” 끝의 .Edisk, secret ROM image, The Team 같은 Pascal 문자열에서 나왔고, 이 리소스는 PowerPC-native SCSI Manager 4.3 코드였음
  • Ghidra로 PEF 실행 파일을 역공학하자, RAM 디스크 볼륨 이름이 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-native 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와 관련된 추가 동작을 수행함
  • 이 함수는 다른 한 곳에서만 호출됐고, 호출 지점은 첫 번째 인자가 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에 들어간 마지막 축의 이스터에그 중 하나일 수 있음
  • ^alex가 RAM Disk를 지워야 한다는 활성화 조건을 찾아내지 않았다면, 나머지 코드를 더 추적해야 했을 가능성이 큼

댓글과 토론

Hacker News 의견들
  • 이런 이스터에그는 전체적으로 초기 데스크톱 PC 시대의 분위기를 강하게 줌
    제품 뒤에 얼굴과 이름이 있는 사람들이 만들었다는 사실과 연결해 주는, 아주 인간적인 요소였음
    당시에는 하드코어 nerd들이 열정으로 만들던 프로젝트였지만, 요즘은 제품 추상화 계층 너머를 보지 못하게 하려는 분위기가 강함
    제품 담당자들은 제품의 전체 이미지를 통제하고 싶어 하고, 명단이 너무 크거나 그 안의 누군가가 나중에 문제가 될 가능성까지 생각하면 비인간화하는 편이 더 안전하다고 보는 듯함
    지금이라면 iPhone에서 활성화할 때마다 개발에 참여한 사람 몇 명을 무작위로 보여주는 멋진 이스터에그를 상상할 수 있는데, 개인적으로는 좋아하겠지만 제품 담당자들의 고상한 취향에는 거슬릴 것 같음

    • Agile 이전에는 이런 일이 더 많았을지도 궁금함
      마감 중심 개발에서는 팀 일부가 이정표를 넘기기 위해 다른 팀원이 뭔가 끝내기를 기다리는 상황이 생기고, 백로그만 계속 뒤적이는 데도 한계가 있음
      지루함과 “작은 걸 몰래 넣어도 로드맵에는 영향 없겠지”라는 합리화가 만나면, 동기와 기회가 훨씬 많아짐
    • 직접 만든 작업물에 이스터에그를 넣어본 입장에서, 가장 큰 문제는 장난 이상의 가치가 없는 기능 때문에 소프트웨어에 잠재적 장애 지점을 추가할 배짱이 없다는 것임
      특히 소프트웨어가 이렇게 복잡하고 커진 지금은 더 그렇고, 회사에서 우스운 걸 만들 시간이 있는지도 모르겠음
      항상 120%로 일하는 느낌임
    • 새 Mac의 특수 단축키를 누르면 Craig Federighi의 풍성한 가슴털 전신 초상화가 전체 화면으로 뜨고, 가슴 부분을 “무한” 확대할 수 있는 5GB 다운로드가 제공될 수도 있으니 조심해야 함
    • 제품 담당자에게 무슨 묘한 불만이 있는지는 모르겠지만, 이건 제품 관리와는 전혀 상관없음
      예전 소프트웨어는 소수의 사람들이 만들었지만, 지금은 한 조직 안에서 수천 명이 관여함
      좋든 나쁘든 현실이 그렇고, 오늘날의 대형 소프트웨어 프로젝트에서 몇 명만 강조하는 이스터에그는 별로 말이 안 됨
  • 꽤 멋지고, 기업 뒤에 진짜 사람들이 있다는 걸 보여줌
    돈 많은 몇몇은 “내가 만들었다”고 말하면서, 작은 사람들의 성취를 가로채기도 함
    반면 실제 작은 사람들은 역사 속에 “아니, 이걸 이루려고 영혼을 넣은 건 우리다”라는 흔적을 남김
    물론 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 게임 해킹에 대해 쓴 글 두 편도 재미있을 수 있음: 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 덕분에 덜 인기 있는 아키텍처에서도 디컴파일이 훨씬 쉬워진 뒤에는 더 그렇음
      한번 해보면 좋음, 낮게 달린 열매가 꽤 많음
      예전에 비슷한 사례를 하나 제출한 적도 있음
      다행히 다른 운영체제 이스터에그들과 달리 “지원이 나쁜 실행 파일 형식의 비트맵 리소스에 저장된 체인 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은 가장 안정적인 운영체제는 아니었지만 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에 완벽한 소재였을 텐데, 어쩔 수 없음

  • 초기 컴퓨팅 시절의 팀이 얼마나 작았는지 항상 매혹적이고, 어떻게든 그 시절로 돌아갈 수 있으면 좋겠음