Reddit

GTA 5, Modern Warfare 2, Halo, and many other games have been ported to browser thanks to the power of AI reverse-engineering

AI 역공학으로 GTA 5·모던 워페어 2·헤일로를 브라우저에서 실행한다는 주장

Destructoid는 AI 도구를 활용한 역공학으로 여러 상용 게임을 브라우저에서 실행하는 사례가 나왔다고 전합니다. 다만 Reddit 댓글에서는 GTA 5 사례가 역공학이 아니라 유출된 소스 코드를 WebAssembly로 포팅한 것이라는 반론이 나와, AI가 실제로 맡은 역할은 불분명합니다.

AI 요약

Destructoid는 GTA 5, Call of Duty: Modern Warfare 2, Halo 등 여러 게임을 브라우저에서 실행하는 포트가 등장했다고 소개합니다. 기사 작성자는 GTA 5의 오픈월드와 스토리 모드, MW2의 매치메이킹 등을 직접 시험했다고 말합니다. 링크를 브라우저에 붙여 넣으면 게임을 설치하거나 별도 파일을 내려받지 않고 실행할 수 있었다고 전합니다.

포트의 성능과 배포

기사에 따르면 테스트한 게임에는 Black Ops 1 Zombies, GTA 5, Halo: Combat Evolved, MW2(2008), Counter-Strike, Diablo 1, Pro Evolution Soccer 6, Half-Life 1 등이 포함됩니다. Counter-Strike는 정식 포트가 아니라 Source 기반으로 보이는 복제품이었다고 설명합니다. 성능은 대체로 좋지 않고 그래픽 오류도 있었지만, 일부 게임은 원래 플랫폼에서처럼 매끄럽게 실행됐다고 합니다. 작성자는 이를 브라우저 지원 여부보다 최적화 문제로 봅니다.

Activision과 Bethesda가 Fallout 및 MW2의 브라우저 버전을 내렸고, Rockstar도 GTA 5 포트를 차단했다고 기사는 전합니다. 이후에도 게임과 무관해 보이는 이름의 사이트에 복제본이 올라오고 있다고 설명합니다. 이 사례를 두고 기사는 AI 역공학이 게임 업체의 DRM과 저작권 대응을 어렵게 만들 수 있다고 우려합니다. 특히 Denuvo 같은 DRM이 없는 게임은 더 취약하다고 주장합니다.

브라우저 실행 방식과 AI 기여 논쟁

Reddit 댓글에서는 이 사례가 원격 서버의 화면을 스트리밍하는 방식과 다르다는 기술 설명이 나옵니다. 한 댓글은 게임 코드를 C/C++로 옮긴 뒤 Emscripten으로 WebAssembly(WASM)로 컴파일하면, 게임이 사용자 기기에서 실행되고 서버는 코드와 자산을 전달하는 구조라고 설명합니다. 다만 이 설명이 기사에 언급된 모든 포트의 구현 방식을 확인해 주는 것은 아닙니다.

AI가 게임을 역공학했다는 기사 제목과 설명에도 반론이 나왔습니다. 여러 댓글 작성자는 GTA 5 소스 코드가 유출됐고, 해당 사례는 그 코드를 WebAssembly로 재컴파일한 것이며 AI 역공학으로 만든 포트가 아니라고 주장합니다. 따라서 댓글에서는 다른 게임의 포트까지 같은 방식으로 만들어졌는지, AI가 어느 단계에서 어떤 작업을 했는지가 쟁점으로 남습니다.

한편 AI가 바이너리와 원본 실행 파일을 비교하며 복원 작업을 반복할 수 있다면, 기술보다 법적 대응이 더 큰 제약이 될 수 있다는 의견도 있습니다. 반대쪽에서는 원본 실행 파일을 기준으로 결과를 비교할 수 있는 게임은 복원하기 쉬운 편이며, 기준 구현이 없는 소프트웨어에서는 결과가 정확한지 검증하기 어렵다고 지적합니다. 이 논의는 기사에서 제기한 AI 역공학의 가능성을 뒷받침하는 동시에, 실제 사례의 출처와 구현 방식을 따져야 한다는 점도 보여줍니다.

Reddit 반응

  • @u/fomodesk — 제가 흥미롭게 보는 점은 속도입니다. Mario 64 디컴파일 프로젝트는 소규모 팀이 수년간 손으로 작업했습니다. 모델이 바이너리를 읽기 쉬운 코드로 바꾸는 잡일 대부분을 맡게 된다면 병목은 기술이 아니라 법률 쪽으로 옮겨갑니다. 게임사가 알아차리면 이런 포트가 얼마나 오래 남을지 궁금합니다.
  • @u/Far-Gene-5806 — 게임에서 이런 일이 먼저 벌어진 이유는 원본 실행 파일이라는 완벽한 채점기가 있기 때문이라고 봅니다. 두 프로그램을 나란히 실행하고 출력을 비교하면 모델이 결과가 맞을 때까지 반복할 수 있습니다. SQL 엔진에 SQLLogicTest를 채점기로 붙여 에이전트를 돌려 봤는데 같은 결과였습니다. 검증 기준이 있으면 사람이 지겨워서 포기할 일을 계속 처리하지만, 기준이 없으면 자신 있게 엉뚱한 방향으로 갑니다.
  • @u/LucyIsaTumor — GTA 5 버전은 디컴파일이 아닙니다. 소스 코드가 두 번 유출됐고, 그 프로젝트는 그 코드를 Emscripten으로 WASM에 포팅한 것입니다. AI 지원을 받기는 했지만 역공학은 아니었습니다.
  • @u/SaltedPiano — Halo CE 디컴파일처럼 게임을 C/C++로 옮긴 다음 Emscripten으로 컴파일하면 WASM이 됩니다. 그러면 게임은 원격 서버에서 실행되고 화면을 스트리밍하는 대신 브라우저에서 실제 게임 코드가 실행됩니다. 서버는 게임 전체를 전송하고, 사용자의 기기가 실행하는 셈입니다. 법적으로는 논란이 있지만 흥미로운 방식입니다.
  • @u/Ellipsoider — 특정 바이트 인코딩이 불변인 것도 아닙니다. 단순하거나 중복된 가상 머신 하나만 넣어도 기반 바이트코드를 대부분 바꿀 수 있습니다. 게임을 리마스터하거나 확장하고 다시 섞을 가능성도 흥미롭습니다.

원문: Destructoid / 번역·요약: Trawling