# Ghidra와 Python을 활용한 Ecco the Dolphin 역공학 분석

> Clean Markdown view of GeekNews topic #17647. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17647](https://news.hada.io/topic?id=17647)
- GeekNews Markdown: [https://news.hada.io/topic/17647.md](https://news.hada.io/topic/17647.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-08T13:33:21+09:00
- Updated: 2024-11-08T13:33:21+09:00
- Original source: [32bits.substack.com](https://32bits.substack.com/p/under-the-microscope-ecco-the-dolphin)
- Points: 2
- Comments: 1

## Topic Body

##### 현미경 아래: 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에 관한 기사에서 확인 가능
- 이전에 알려지지 않은 치트 코드를 찾는 다른 기사들은 아카이브에서 확인 가능

## Comments



### Comment 31037

- Author: neo
- Created: 2024-11-08T13:33:22+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42076884) 
- CRC32 해시 알고리즘에 대한 설명과 관련 링크 제공. CRC32의 다항식을 알면 로그 시간 내에 답을 구할 수 있음.
  
- Megadrive의 Ecco 게임에 대한 개인 경험 공유. 게임이 매우 어려워서 암호 시스템을 해독하여 최종 레벨에 도달했음. 게임을 이틀 만에 완료한 것에 대한 죄책감 언급.

- "QQRIQ"는 여러 언어에서 수탉 소리를 나타내는 단어의 음성 약어임. 암호 선택 과정에 대한 궁금증 제기.

- Ecco의 개발자인 Ed Annunziata가 LSD를 사용하지 않았지만 John C. Lilly의 작품을 많이 읽었다고 언급함. Lilly는 동물 지능, 케타민 심리치료, 고립 탱크, 의식 탐구 분야에서 선구적인 작업을 한 인물임. 그의 자서전 &lt;i&gt;The Center of the Cyclone&lt;/i&gt; 추천.

- Dreamcast 게임 리버스 엔지니어링에 대한 자료 요청. Skies of Arcadia와 관련된 체계적인 기술을 찾고 있음.

- 리버스 엔지니어링 학습 시작점에 대한 고민. 대부분 Assembly를 먼저 배우라고 하지만, 그 이후의 구체적인 정보는 부족함. x86/arm/아케이드 플랫폼의 공통 패턴을 시도와 오류로 알아내는지에 대한 의문 제기.

- 오래된 게임들이 더 많은 영혼을 가지고 있다고 느끼며, 최근 몇 년간 더 많이 즐기고 있음. 자동차 관련 경고에 감사함.

- Sega Saturn에 관한 블로그 발견. 부모님 집에서 Saturn을 발견했으며, 게임 CD도 함께 있었음. 게임은 작동했지만 어떻게 활용할지 모름.

- 수중 축구 치트의 작동 영상을 보고 싶다는 의견.

- PS2 버전의 게임을 살펴보기를 권장. 레벨 잠금 해제 코드가 동일할 수 있으며, 리버스 엔지니어링이 더 쉬울 수 있음.
