1P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • 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"는 도스 맥의 이스터에그와 연관될 수 있다고 추정했으나, 기존 방식은 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로 복귀한 후 공식적으로 금지했던 마지막 이스터에그들 중 하나일 가능성이 큼
  • 여러 테스트와 힌트 덕분에 숨겨진 기능이 세상에 드러난 것으로, 올드맥 하드웨어와 소프트웨어 분석역사적 기술 발굴 측면에서 큰 의미를 가짐

마무리

  • RAM 디스크를 이름 바꿔 포맷하는 단순한 방법으로 27년간 잠자고 있던 개발팀의 비공식 추억 이미지가 드러난 사례임
  • 이스터에그 기술과 Apple 개발문화, 숨은 개발자들의 흔적에 관심 있는 독자들에게 흥미로운 사례임
Hacker News 의견
  • 이런 이스터 에그는 초창기 데스크탑 PC 시대의 감성을 강하게 주는 요소라고 생각함, 덕분에 실제 사람이 만든 소프트웨어라는 걸 더 실감할 수 있음, 예전에는 소수의 열정적인 개발자가 모여서 만든 작품이 많았던 추억이 떠오름, 요즘은 제품의 이미지를 완전히 통제하려는 Product People(기획/관리 부서)이 있어서 의도적으로 소름 끼칠 만큼 비인간적으로 느껴지기도 한다고 느낌, 상상해보면 오늘날 내 iPhone 안에 이스터에그가 있어서 작동시킬 때마다 랜덤으로 개발에 참여한 일부 인물의 사진이나 이름이 나온다면 즐거울 듯함, 하지만 아마 Product People의 기준에는 맞지 않을 것 같다는 생각
    • 예전에는 이런 이스터 에그가 Agile 도입 전에는 더 많지 않았을까 궁금함, deadline 기반의 개발을 하면 팀 일부가 기다릴 수밖에 없는 상황이 종종 생기고 백로그도 한계라 이런 틈에 작은 '동기'와 '기회'가 생겨서 이스터 에그 같은 게 많이 들어갔던 추억
    • 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 해킹 파트1 파트2, decompilation with ghidra HN 토론도 참고
  • 이런 건 Stump the Experts(애플 관련 퀴즈쇼)에 나왔다면 완전 딱이었을 소재인데 아쉬움