1 điểm bởi GN⁺ 2023-12-06 | 1 bình luận | Chia sẻ qua WhatsApp

Hack game: đạt tỷ lệ thắng 100% trong Magic: The Gathering Arena

  • Phát hiện cách khiến đối thủ tự động đầu hàng trong Magic: The Gathering Arena
  • Đề nghị cung cấp mã nguồn và phương án khắc phục cùng với thiện chí báo cáo vấn đề

Giới thiệu

  • Quan điểm về việc làm rối mã phía client: làm rối mã giúp nâng cao rào cản đối với những người đầu tư ít công sức, nhưng lại là trở ngại với các lập trình viên nhiệt huyết muốn báo cáo lỗ hổng bảo mật
  • Trong game thẻ bài, trạng thái trận đấu được phía server quản lý hoàn toàn và client chỉ nhận thông tin cần thiết
  • Vì client chỉ có thông tin hạn chế nên việc hack trở nên khó khăn

Bắt đầu

  • Bắt đầu hack game bằng cách phân tích giao tiếp mạng
  • MTGA được viết bằng C# nên dễ thao tác các đối tượng game trong lúc chạy
  • Sử dụng reflection để truy cập các trường và phương thức riêng tư

Tìm manh mối

  • Việc decompile C# sử dụng metadata token để liên kết với các tên mà con người có thể đọc được
  • Phát hiện hàm JoinMatch, được suy đoán là nơi kết nối ban đầu tới server game

Cách triển khai của Sparky

  • Sparky, linh vật của MTGA, là bot hướng dẫn và luyện tập cho người chơi mới
  • Logic của bot chạy cục bộ, toàn bộ quá trình ra quyết định diễn ra trên máy tính của người dùng

Con quỷ nằm trong chi tiết triển khai

  • Khi bắt đầu trận đấu với bot, logic bot thực tế được xử lý thông qua lớp HeadlessClient
  • Bot kết nối tới server game để chơi mà không cần render bàn chơi

Chiếm quyền trận đấu

  • Có thể dùng reflection để thay đổi hành vi của các đối tượng game
  • Viết mã để xác định chỗ ngồi của bản thân, rồi kết nối client vào chỗ ngồi khác để khiến đối thủ đầu hàng

Ý kiến của GN⁺

Điểm quan trọng nhất trong bài viết này là hành động có trách nhiệm của nhà phát triển khi phát hiện lỗ hổng bảo mật của game và chia sẻ nó nhằm cải thiện hệ thống. Việc một lỗ hổng cho phép thao túng kết quả trận đấu thông qua can thiệp phía client vẫn tồn tại ngay cả trong những hệ thống như game thẻ bài, nơi server quản lý hoàn toàn trạng thái game, là điều rất đáng chú ý. Những thông tin như vậy mang lại bài học quan trọng cho các nhà phát triển game trong việc tăng cường bảo mật và làm cho trò chơi công bằng hơn.

1 bình luận

 
GN⁺ 2023-12-06
Ý kiến trên Hacker News
  • Trải nghiệm lần đầu tiếp xúc với Linux và điều tra lưu lượng mạng

    • Sử dụng chương trình ShowEQ cho game EverQuest để phân tích lưu lượng không được mã hóa
    • Dùng hub để sao chép lưu lượng sang máy Linux, vẽ bản đồ thời gian thực và hiển thị vị trí nhân vật
    • Có thể xem các vật phẩm mà quái đang có, hỗ trợ săn có chọn lọc các quái cụ thể
    • Đây là phương pháp thụ động và không thể bị phát hiện, nhưng sau đó SOE bắt đầu mã hóa lưu lượng
  • Hiệu quả đáng kinh ngạc của AI cho game Magic: The Gathering

    • Bất ngờ trước mức sử dụng bộ nhớ nhỏ của AI có thể chạy trên máy cục bộ
    • Có thể hợp lý hơn khi chạy AI ở máy cục bộ thay vì trên server
    • Cân nhắc sự khác biệt CPU giữa server và máy cục bộ cũng như hỗ trợ đa lõi
  • Độ phức tạp và hiệu quả trong phát triển AI cho Magic: The Gathering

    • Giải tỏa hiểu lầm về việc phát triển AI phức tạp của MTG
    • Khả năng tiếp cận logic Sparky và các lựa chọn triển khai của đội phát triển
    • Nhắc đến tính gần như Turing-complete của trò chơi và việc phát triển chiến lược AI
  • Sự quan tâm đến các dự án cá nhân về MTGA và hack game

    • Đang phát triển một client MTGA không chính thức nhưng vẫn còn ở giai đoạn đầu
    • Thể hiện sự quan tâm đến kinh nghiệm hack game, công bố bug và cấu trúc client
  • Niềm vui chơi Magic 93/94 cùng con trai

    • Thưởng thức trò chơi cùng con trai bằng các lá bài thật
    • Tham gia giải vô địch thế giới tổ chức tại Madrid và tự hào về thành tích của con trai
  • Tầm quan trọng của logic game phía client và sự cần thiết của việc xác thực phía server

    • Nhấn mạnh tính phản hồi của logic phía client trong game thời gian thực
    • Tầm quan trọng của việc xác thực phía server trong game thẻ bài và việc hạn chế thông tin của đối thủ
  • Bug trong game League of Legends và tác động của nó

    • Lỗi server và việc thao túng kết quả trận đấu do tổ hợp tướng và vật phẩm cụ thể gây ra
  • Thắc mắc về việc kết nối AI và xử lý đối thủ đầu hàng trong lúc chơi

    • Câu hỏi về việc cho phép kết nối AI trong trận đấu thực tế và cách xử lý khi đối thủ đầu hàng
  • Trải nghiệm tái sử dụng gói kết nối server trong game Diablo 2

    • Chia sẻ cách kết nối nhân vật từ server LAN tới server Internet chính thức
  • Sự quan tâm đến việc phát triển trình giả lập server và các trận đấu LAN

    • Tìm hiểu khả năng phát triển trình giả lập server cho các trận LAN với toàn bộ lá bài được mở khóa