TECH 으로 돌아가기
TECH HACKER NEWS 어제 5분 읽기 48 READS

1989년 DOS 게임을 한 줄 한 줄 되살린다 — 리버스 엔지니어링에 'DOS 테스트 파일럿' 모집

무슨 일이 있었냐면요

1989년에 나온 도스(DOS) 비행 시뮬레이션 게임 'F-15 Strike Eagle II'를 통째로 역공학(리버스 엔지니어링)으로 되살리는 프로젝트가 진행 중이에요. 그런데 작업을 이끄는 개발자가 '도스 테스트 파일럿'을 구한다는 요청을 올렸어요. 비유가 재밌죠? 옛날 도스 환경에서 직접 게임을 돌려보고, 되살린 버전이 원본과 똑같이 동작하는지 검증해 줄 사람을 찾는 거예요.

리버스 엔지니어링이 뭐냐면요

주니어 분들을 위해 풀어볼게요. 우리가 보통 프로그램을 만들 때는 C 같은 사람이 읽는 언어(소스 코드)를 컴파일해서 컴퓨터가 실행하는 기계어로 바꿔요. 그런데 옛날 게임은 소스 코드가 사라진 경우가 많아요. 남은 건 실행 파일, 즉 기계어 덩어리뿐이죠.

리버스 엔지니어링은 그 방향을 거꾸로 가는 거예요. 기계어를 한 줄씩 뜯어 읽어서 '아, 이 부분은 적기 위치를 계산하는 함수구나' 하고 의미를 복원해, 다시 사람이 읽는 소스 코드로 되돌리는 작업이에요. 마치 완성된 빵을 보고 거꾸로 레시피를 알아내는 것과 비슷해요. 특히 이 게임은 16비트 도스 시절, x86의 '리얼 모드'라는 옛 동작 방식으로 짜여 있어서 요즘 코드와는 결이 많이 달라요.

왜 '테스트 파일럿'이 필요하냐면

이런 프로젝트의 목표는 '대충 비슷하게'가 아니라 원본과 동작이 똑같은 재구성이에요. 그래서 보통 이런 방법을 써요. 복원한 소스를 다시 컴파일해서 나온 기계어가, 원본 실행 파일과 일치하는지 비교하는 거죠. 이게 들어맞으면 '내가 해석한 게 맞았다'는 강력한 증거가 돼요.

그런데 코드가 똑같아도, 실제로 게임을 켰을 때 비행기가 제대로 뜨고 미사일이 맞고 점수가 올라가는지는 또 다른 문제예요. 그래서 진짜 도스 환경(혹은 도스박스 같은 에뮬레이터)에서 손으로 플레이해보며 '원본과 행동이 어긋나는 지점'을 찾아줄 사람이 필요한 거예요. 사람의 눈과 손으로만 잡히는 버그가 있거든요. 그게 바로 '도스 테스트 파일럿'의 임무예요.

업계 맥락에서 보면

오래된 게임을 코드 수준에서 되살리는 시도는 꽤 있어왔어요. 트랜스포트 타이쿤을 재구성한 OpenTTD, 롤러코스터 타이쿤을 되살린 OpenRCT2 같은 프로젝트가 대표적이에요. 이런 작업은 단순 추억팔이가 아니라, 사라질 뻔한 소프트웨어를 보존하고(디지털 유산 보존), 현대 OS에서도 돌아가게 만들고, 모드나 개선까지 가능하게 한다는 의미가 있어요. F-15 프로젝트도 그 계보 위에 있는데, '재컴파일 결과가 원본과 일치하는지'를 기준으로 삼는 엄격한 방식을 택했다는 점이 인상적이에요.

한국 개발자에게는

게임 개발자가 아니어도 배울 게 많아요. 리버스 엔지니어링 기술은 보안 분야(악성코드 분석, 취약점 연구), 호환성 작업, 사라진 시스템 유지보수 같은 실무에서 그대로 쓰여요. 바이너리를 읽고 디스어셈블러로 함수 흐름을 따라가는 감각은 한번 익혀두면 평생 자산이 돼요. 게다가 이런 오픈 프로젝트는 누구나 참여할 수 있으니, 포트폴리오로도 좋고요. 거창한 환경이 필요 없어요. 도스박스 같은 에뮬레이터만 깔면 옛 게임을 띄워볼 수 있으니, 저비용으로 저수준(low-level) 컴퓨팅을 체험하기에 딱이에요.

마무리

핵심은 이거예요. 소스 코드가 사라진 37년 전 게임을, 기계어를 거꾸로 읽어 원본과 똑같이 되살리는 작업이 진행 중이고, 그걸 검증할 사람의 손이 필요하다. 여러분은 추억의 옛 프로그램 중 '이건 꼭 코드로 보존됐으면' 싶은 게 있나요? 그리고 한번쯤 바이너리를 거꾸로 읽어보는 도전, 해볼 만하지 않나요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://neuviemeporte.github.io/f15-se2/2026/06/20/needyou.h...
SHARE
처리 중...