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
Ý 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
Hiệu quả đáng kinh ngạc của AI cho game Magic: The Gathering
Độ phức tạp và hiệu quả trong phát triển AI cho Magic: The Gathering
Sự quan tâm đến các dự án cá nhân về MTGA và hack game
Niềm vui chơi Magic 93/94 cùng 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
Bug trong game League of Legends và tác động của nó
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
Trải nghiệm tái sử dụng gói kết nối server trong game Diablo 2
Sự quan tâm đến việc phát triển trình giả lập server và các trận đấu LAN