1P by neo 6달전 | favorite | 댓글 1개

게임 해킹: 매직 더 개더링 아레나에서 100% 승률 달성

  • 매직 더 개더링: 아레나에서 상대방이 자동으로 항복하게 만드는 방법 발견
  • 문제 보고 의사 표시와 함께 소스 코드 및 해결 방안 제공 제안

서론

  • 클라이언트 측 코드의 난독화에 대한 의견: 난독화는 투자가 적은 사람들을 막기 위한 장벽을 높이지만, 보안 취약점을 보고하는 열정적인 개발자들에게는 장애물
  • 카드 게임은 서버 측에서 게임 상태를 전적으로 관리하고 클라이언트는 필요한 정보만 받음
  • 클라이언트는 제한된 정보만 가지고 있어, 해킹이 어려움

시작하기

  • 네트워크 통신 분석을 통해 게임 해킹 시작
  • C#으로 작성된 MTGA는 런타임에서 게임 객체를 조작하기 쉬움
  • 비공개 필드 및 메소드에 접근 가능한 리플렉션 사용

단서 찾기

  • C# 디컴파일은 메타데이터 토큰을 사용하여 인간이 읽을 수 있는 이름과 연결
  • 'JoinMatch' 함수 발견, 게임 서버에 처음 연결하는 곳으로 추정

Sparky의 구현

  • MTGA의 마스코트인 Sparky는 신규 플레이어를 위한 튜토리얼과 연습용 봇
  • 봇 로직은 로컬에서 실행되며, 모든 결정 과정이 사용자의 컴퓨터 내에서 진행됨

구현의 악마(세부 사항)

  • 봇 매치 시작 시 'HeadlessClient' 클래스를 통해 실제 봇 로직 처리
  • 봇은 게임 보드를 렌더링할 필요 없이 게임 서버에 연결하여 게임 진행

경기 인수

  • 리플렉션을 사용하여 게임 객체의 행동을 변경할 수 있음
  • 본인의 좌석을 파악하고, 다른 좌석에 클라이언트를 연결하여 상대방이 항복하게 만드는 코드 작성

GN⁺의 의견

이 글에서 가장 중요한 점은 게임의 보안 취약점을 발견하고 이를 개선하기 위해 공유하는 개발자의 책임감 있는 행동이다. 카드 게임과 같이 서버가 게임 상태를 전적으로 관리하는 시스템에서도 클라이언트 측 조작을 통해 게임 결과를 조작할 수 있는 취약점이 존재한다는 것은 매우 흥미롭다. 이러한 정보는 게임 개발자들에게 보안을 강화하고, 게임을 더욱 공정하게 만드는 데 중요한 교훈을 제공한다.

Hacker News 의견
  • 리눅스를 처음 접하며 네트워크 트래픽을 조사한 경험

    • EverQuest 게임을 위한 ShowEQ 프로그램을 사용하여 암호화되지 않은 트래픽 분석
    • 허브를 사용하여 리눅스 박스로 트래픽 복제, 실시간 지도 그리기 및 캐릭터 위치 표시
    • 몹이 가진 아이템 확인 가능, 특정 몹 선택적 사냥 지원
    • 패시브하고 탐지 불가능한 방법이었으나, 나중에 SOE가 트래픽 암호화 시작
  • Magic: The Gathering 게임을 위한 AI의 놀라운 효율성

    • 로컬 머신에서 작동 가능한 AI의 작은 메모리 사용량에 놀라움
    • 서버보다 로컬에서 AI를 실행하는 것이 더 합리적일 수 있음
    • 서버와 로컬 머신의 CPU 차이와 멀티코어 지원에 대한 고려
  • Magic: The Gathering AI 개발의 복잡성과 효율성

    • MTG의 복잡한 AI 개발에 대한 오해 해소
    • Sparky 로직의 접근 가능성 및 개발자들의 구현 선택
    • 게임의 거의 튜링 완전성과 AI 전략 개발에 대한 언급
  • MTGA에 대한 개인 프로젝트 및 게임 해킹에 대한 관심

    • 비공식 MTGA 클라이언트 개발 중이나 아직 초기 단계
    • 게임 해킹 경험과 버그 공개, 클라이언트 구조에 대한 관심 표현
  • 아들과 함께하는 Magic 93/94 게임의 즐거움

    • 실제 카드를 사용하여 아들과 게임 즐기기
    • 매드리드에서 열리는 세계 챔피언십 참가 및 아들의 성과 자랑
  • 클라이언트 측 게임 로직의 중요성과 서버 검증의 필요성

    • 실시간 게임에서 클라이언트 측 로직의 반응성 강조
    • 카드 게임에서 서버 검증의 중요성 및 상대방 정보 제한
  • League of Legends 게임의 버그와 그 영향

    • 특정 챔피언과 아이템 조합으로 인한 서버 오류 및 게임 결과 조작
  • 게임 중 AI 연결과 상대방의 기권 처리에 대한 의문

    • 실제 경기 중 AI 연결 허용 및 기권 처리 방식에 대한 질문
  • Diablo 2 게임에서의 서버 연결 패킷 재사용 경험

    • LAN 서버 캐릭터를 공식 인터넷 서버에 연결하는 방법 공유
  • 서버 에뮬레이터 개발과 LAN 매치에 대한 관심

    • 모든 카드가 잠금 해제된 LAN 매치를 위한 서버 에뮬레이터 개발 가능성 탐색