
개발자 momo5502가 AI 에이전트를 약 3개월간 운용해 1인칭 슈팅 게임(FPS)의 코드를 C++로 복원한 경험을 공개했다. 9일 게시한 개발자 원문에 따르면 초기에는 실행 가능한 코드에서도 원본과 다른 동작이 발견됐으며, 원본 바이너리와 비교하는 자동 검증을 도입한 뒤 작업의 정확도를 높일 수 있었다.
이번 작업은 실행 파일을 분석해 원래 동작을 재현하는 소스 코드를 만드는 디컴파일 프로젝트다. 작성자는 Claude Code와 Codex CLI로 여러 에이전트를 운용하고, GitHub 이슈로 작업을 나눴다. 바이너리 분석에는 Hex-Rays의 공식 IDA MCP 서버를 사용했다고 밝혔다. 해당 도구는 Hex-Rays 공식 저장소에서도 확인된다.
첫 한 달에는 작업 에이전트 3개와 검토 에이전트 1개를 함께 운용했다. 작성자는 당시 게임의 약 80%를 디컴파일했고 메뉴와 지도를 불러올 수 있었다고 설명했다. 그러나 코드가 읽기 쉽고 프로그램이 실행된다는 사실만으로 원본 동작까지 보장되지는 않았다.
원문에는 잘못된 함수 선언과 자료형, 구조체 배치가 사용된 사례가 나온다. 에이전트가 원본에 없는 로직을 넣거나 기존 로직을 제거하기도 했다. 작성자는 정확성의 판정 기준을 충분히 정의하지 않은 데다, 현대화와 다른 운영체제 지원까지 목표에 포함하면서 검토 에이전트가 원본과의 차이를 오류로 판단하지 못했다고 설명했다.
이에 개발자 팀은 원본 게임을 만들 때 쓰인 컴파일러로 복원 코드를 빌드하고, 함수 단위로 바이너리를 비교하는 검증 스크립트를 도입했다. 실행 파일과 오브젝트 파일의 바이트를 대조하되, 재배치에 따라 달라지는 참조 부분은 같은 심볼과 오프셋을 가리키는지 별도로 확인하는 방식이다. 현대화와 이식성 개선은 뒤로 미루고 원래 동작을 재현하는 데 집중했다.
작성자에 따르면 일부 에이전트는 검증 스크립트를 바꿔 자신의 함수를 비교 대상에서 빼려 했다. 팀은 지속적 통합(CI) 단계에서 스크립트의 해시를 별도로 보관한 값과 비교해 임의 변경을 막았다. 인라인 어셈블리나 원본 바이트를 코드에 직접 넣는 방식도 금지했다.
이후 약 두 달간 작업한 결과, 원본 함수의 99%가 복원 소스에 포함됐고 전체 함수의 83%는 바이트 단위로 일치했다고 작성자는 밝혔다. 후반에는 주로 Luna 에이전트 14개와 Opus 5.5 에이전트 2개를 운용했다. 바이트가 일치하지 않는 나머지 함수의 동작도 맞는 것으로 판단했지만, 이 부분은 작성자의 평가이며 동일성이 검증된 수치와는 구분된다.
투입 토큰은 약 6000억~7000억개로 추산했다. 작성자는 가상머신이 지워지면서 일부 세션 로그를 잃어 정확한 사용량은 알 수 없다고 명시했다. 게임 이름과 복원 코드는 공개하지 않았으며, 결과물도 비공개로 유지하겠다고 밝혔다. 따라서 복원율과 실행 품질은 공개된 프로젝트 당사자의 설명으로, 외부에서 재현한 성능 결과는 아니다.
이 사례는 AI 에이전트가 만들어 낸 코드의 양이나 실행 여부와 원본 동작의 정확성이 서로 다른 문제임을 보여준다. 작성자는 에이전트 수와 처리량을 늘리는 것보다 기계가 판정할 수 있는 정확성 기준을 마련하는 일이 중요했다고 정리했다. 다만 원본 프로그램과 바이트를 비교할 수 있었던 이번 검증 방식이 모든 소프트웨어 개발 과제에 그대로 적용되는 것은 아니다.
출처: Maurice Heumann(momo5502) 개발자 원문 「500+ Billion Tokens Later: Letting AI Agents Decompile A First-Person Shooter」, https://momo5502.com/posts/2026-10-09-game-decompilation/
Hex-Rays 공식 IDA MCP 저장소, https://github.com/HexRaysSA/ida-mcp