AI 요약
개발자 phulin은 에뮬레이터 없이 플레이하기 힘든 추억의 게임 '심타워'를 현대적으로 복원하기 위해 LLM 기반의 리버스 엔지니어링 프로젝트를 수행했습니다. 그는 Ghidra와 연동되는 자체 정적 분석 프레임워크 'reaper'를 사용하여 바이너리 코드를 분석하고, 이를 바탕으로 'towers.world'라는 협업 가능한 클론 게임을 제작했습니다. 분석 과정에서 심타워의 핵심인 엘리베이터 시스템과 9시-5시 스케줄을 따르는 6명의 사무실 심(Sim)들의 복잡한 상호작용을 파악하려 노력했습니다. 하지만 과거 하드웨어 제약으로 인해 비트필드 등에 압축된 최적화 데이터 구조와 각 방마다 존재하는 10-15개의 복잡한 상태값은 AI가 완벽하게 해석하기에 너무 정교했습니다. 결과적으로 AI는 구동 가능한 수준의 시뮬레이션에는 도달했으나 원작과 완벽한 행동 일치(parity)를 이루는 데는 실패했으며, 이 과정에서 AI가 가지는 추상화 오류와 고정관념 등의 한계점을 노출했습니다.
핵심 인사이트
- 공개 날짜 및 프로젝트명: 2026년 4월 28일, 심타워의 협업 클론 버전인 'towers.world'가 공식적으로 라이브됨.
- 사용 기술 스택: LLM 코딩 에이전트와 Ghidra를 연결하는 정적 분석 도구 'reaper'를 활용하여 바이너리 코드를 분석함.
- 핵심 게임 로직: 사무실 한 칸에는 9시부터 5시까지 근무하는 6명의 심이 배정되며, 이들의 이동 동선이 엘리베이터 시스템에 막대한 부하를 주는 구조임.
주요 디테일
- 복잡한 상태 관리: 각 방의 심들은 10~15가지의 가능한 상태값을 가지며, 이를 추적하기 위한 전이 함수(transition function)가 매우 복잡하게 설계되어 있음.
- 최적화 기법의 장벽: 원작 게임은 과거 환경에 맞춰 연산 결과를 패킹된 비트필드(packed bitfields)나 모호한 구조체에 공격적으로 캐싱하여 저장하고 있어 AI의 해석을 어렵게 만듦.
- AI의 정적 분석 오류: AI는 하위 시스템에 대해 성급한 결론을 내린 후 이를 수정하지 못하는 경향을 보였으며, 심(Sim)을 'runtime entity'라고 부르는 등 지나치게 추상적인 용어를 선택하는 문제를 보임.
- 프로젝트 영감: Simon Willison의 프로그래밍 언어 번역 포스트에서 영감을 얻어, 어셈블리어를 의미가 정의된 하나의 언어로 보고 리버스 엔지니어링을 시도함.
향후 전망
- 고전 소프트웨어의 복원 과정에서 AI를 활용한 '클린 룸 사양서(Clean-room spec)' 작성 시도가 늘어날 것이나, 복잡한 로직에 대한 AI의 추론 정확도 개선이 선행되어야 함.
- AI가 정적 분석 도중 내린 잘못된 가설을 스스로 폐기하고 수정할 수 있는 메커니즘이 리버스 엔지니어링 분야의 핵심 과제가 될 것으로 보임.
