GN⁺: Ghidra와 Python을 활용한 Ecco the Dolphin 역공학 분석
(32bits.substack.com)현미경 아래: Ecco the Dolphin — 미래의 수호자
- Ecco the Dolphin: Defender of the Future는 저장 파일 이름에 따라 활성화되는 숨겨진 치트 기능이 있음
- Ghidra와 Python을 사용하여 인코딩 방식을 역설계하여 특별한 이름을 발견함
- 일부 이름은 오래전부터 알려져 있었으나, 나머지를 발견하여 "불사"와 디버그 표시 같은 기능을 잠금 해제함
인트로
- Ecco the Dolphin: Defender of the Future는 공식적으로 출시된 마지막 Ecco 게임이며, 이후 게임은 취소됨
- 알려진 치트는 VMU 화면에서 New Game을 선택하고, 이니셜을
GYU
로 입력한 후,GYU
를 다시 입력하고 세 글자를 추가하여 모든 스테이지를 잠금 해제할 수 있음
Ghidra를 통한 분석
- flycast 에뮬레이터의 메모리 스냅샷을 분석하여 이니셜 입력 버퍼를 발견함
- Ghidra를 사용하여 변환 함수가 버퍼를 읽고 변환된 값이 여섯 가지 특별한 값 중 하나인지 확인함
-
GYU GYU XXX
는9388D627
로 변환되어 첫 번째 특별한 값이 됨
Python을 사용한 무차별 대입
-
GYU GYU
는 여섯 글자이며, 가능한 조합은 26^6=308,915,776개임 - 7글자 조합은 8억 개, 8글자 조합은 2080억 개로, 노트북에서 처리하기 어려움
- Python으로 처리 코드를 복제하여 모든 가능한 조합을 체크함
효과
- SOCCER+XXX를 입력하면 Bonus Game이 잠금 해제되어 수중 축구를 할 수 있음
- EXBBERX+XXX는 옵션 화면에 Immortality Enabled를 표시하며, 익사하거나 죽지 않음
- QQRIQ+XXX는 게임의 프레임 속도와 디버그 값을 표시함
- XYZZYX+XXX는 현재 시계를 표시함
- POPELY+XXX는 특별한 효과가 없는 것으로 보임
아웃트로
- Appaloosa Interactive 게임의 인코딩 방식에 대한 다른 분석은 Three Dirty Dwarves에 관한 기사에서 확인 가능
- 이전에 알려지지 않은 치트 코드를 찾는 다른 기사들은 아카이브에서 확인 가능
Hacker News 의견
-
CRC32 해시 알고리즘에 대한 설명과 관련 링크 제공. CRC32의 다항식을 알면 로그 시간 내에 답을 구할 수 있음.
-
Megadrive의 Ecco 게임에 대한 개인 경험 공유. 게임이 매우 어려워서 암호 시스템을 해독하여 최종 레벨에 도달했음. 게임을 이틀 만에 완료한 것에 대한 죄책감 언급.
-
"QQRIQ"는 여러 언어에서 수탉 소리를 나타내는 단어의 음성 약어임. 암호 선택 과정에 대한 궁금증 제기.
-
Ecco의 개발자인 Ed Annunziata가 LSD를 사용하지 않았지만 John C. Lilly의 작품을 많이 읽었다고 언급함. Lilly는 동물 지능, 케타민 심리치료, 고립 탱크, 의식 탐구 분야에서 선구적인 작업을 한 인물임. 그의 자서전 <i>The Center of the Cyclone</i> 추천.
-
Dreamcast 게임 리버스 엔지니어링에 대한 자료 요청. Skies of Arcadia와 관련된 체계적인 기술을 찾고 있음.
-
리버스 엔지니어링 학습 시작점에 대한 고민. 대부분 Assembly를 먼저 배우라고 하지만, 그 이후의 구체적인 정보는 부족함. x86/arm/아케이드 플랫폼의 공통 패턴을 시도와 오류로 알아내는지에 대한 의문 제기.
-
오래된 게임들이 더 많은 영혼을 가지고 있다고 느끼며, 최근 몇 년간 더 많이 즐기고 있음. 자동차 관련 경고에 감사함.
-
Sega Saturn에 관한 블로그 발견. 부모님 집에서 Saturn을 발견했으며, 게임 CD도 함께 있었음. 게임은 작동했지만 어떻게 활용할지 모름.
-
수중 축구 치트의 작동 영상을 보고 싶다는 의견.
-
PS2 버전의 게임을 살펴보기를 권장. 레벨 잠금 해제 코드가 동일할 수 있으며, 리버스 엔지니어링이 더 쉬울 수 있음.