2009-05-08 17 views
11

Giả sử bạn đang thiết kế trò chơi PC theo dõi điểm số cao. Ngoài việc giữ điểm số địa phương, một máy chủ điểm số cao toàn cầu được thiết lập được truy cập bởi trò chơi qua internet. Người chơi sẽ có thể gửi điểm số cao của họ vào danh sách điểm số cao toàn cầu ngay sau khi họ đã hoàn thành một trò chơi, hoặc sau đó, từ danh sách điểm số cao của địa phương. Đây phải là một vấn đề phổ biến; trò chơi điện tử trên bảng điều khiển trò chơi hiện đại thường có danh sách điểm số cao trên toàn cầu hoạt động như thế này.Làm cách nào bạn có thể ngăn chặn các điểm cao không có thật xuất hiện trên danh sách điểm số cao trên toàn cầu?

Câu hỏi của tôi tóm tắt: cách bạn có thể ngăn người khác gửi điểm cao không có thật? Hoặc, nói một cách khác, làm thế nào máy chủ điểm số cao toàn cầu có thể chắc chắn rằng điểm số đã gửi thực sự được tạo ra bởi một cuộc chạy qua trò chơi?

Tôi càng nghĩ về điều này, tôi càng nghĩ rằng đó có thể là một vấn đề nan giải.

Những gì bạn thường làm để xác minh rằng thư có nguồn gốc từ một nguồn nhất định có nguồn kỹ thuật số ký thư. Bạn chắc chắn có thể làm điều đó trong trường hợp này, nhưng vấn đề thực sự là người chơi, bằng cách có phần mềm, cũng có khóa riêng của phần mềm. Không có vấn đề làm thế nào obfuscated nó có thể được, nó có thể được đảo ngược thiết kế, hoặc thậm chí chỉ lấy từ bộ nhớ.

Một tùy chọn khác là gửi cùng phát lại trò chơi của người chơi đến máy chủ điểm số cao, sẽ nhanh chóng chạy lại và xác minh rằng điểm đã gửi khớp với kết quả phát lại. Điều này không giải quyết vấn đề, nhưng nó chắc chắn làm cho nó khó khăn hơn để giả mạo một điểm số cao không có thật nếu bạn cũng phải sản xuất một phát lại rất phức tạp mà "chứng minh" nó.

Đây có phải là vấn đề có giải pháp hay không thực sự không thể giải quyết được? Có kỹ thuật được sử dụng bởi các nhà phát triển game console nhà để ngăn chặn loại khai thác, hoặc làm họ chỉ đơn giản dựa vào giao diện điều khiển ngăn chặn mã trái phép chạy?

+0

Sự hiện diện của điểm số không có thật là kết quả của những người chơi ngoài các quy tắc đã thiết lập. Vì vậy, trong một số ý nghĩa, đây là một vấn đề con người và không phải là một vấn đề hệ thống (hoặc một vấn đề có thể được giải quyết ở cấp hệ thống). – rndmcnlly

Trả lời

6

Đối với trò chơi trên PC có số điểm do khách hàng tạo, đây không phải là vấn đề có thể giải quyết được vì khách hàng vốn không đáng tin cậy.

Điều duy nhất bạn có thể cố gắng làm là khiến người khác khó gửi điểm số giả hơn.

Vài suy nghĩ:

  • Protect số điểm trong bộ nhớ. Bạn có thể sử dụng API như CryptProtectMemory để ẩn số điểm trong bộ nhớ - ghi nhớ đơn giản sẽ không hoạt động. Tuy nhiên, với trình gỡ lỗi đính kèm hoặc thông qua mã tiêm vào quá trình của bạn, họ vẫn có thể sửa đổi điểm số. Bạn có thể xem xét các kế hoạch khác nhau để cố gắng đánh bại những kẻ lừa đảo.

  • Bảo vệ điểm trên đường đến máy chủ. Bạn có thể mã hóa dữ liệu được gửi đến dịch vụ, như bạn đề xuất, nhưng vì bên không đáng tin cậy có quyền kiểm soát khóa, điều này chỉ đơn thuần là làm xáo trộn và không bảo vệ vững chắc.

  • Xác thực điểm số tại dịch vụ. Tôi không muốn làm điều này, ngoài việc kiểm tra rất đơn giản. Một lỗi ở đây sẽ khiến bạn từ chối điểm số hợp lệ. Nó sẽ không thể phân biệt giữa các gian lận và người chơi mạnh.

Tại thời điểm này, bạn thực sự phải tự hỏi nếu nỗ lực kỹ thuật thực sự đáng giá. Điều gì xảy ra nếu ai đó đăng điểm không hợp lệ? Bạn thực sự bị mất gì? Tôi sẽ làm tối thiểu để bảo vệ chống lại một đứa trẻ với một kịch bản đơn giản. Nghĩa là, không phải nộp điểm số của bạn có chỉ:

http://myservice.com/submitscore.aspx?PlayerName=Michael&Score=999999999 

Tôi chỉ sẽ sử dụng bảo vệ đơn giản trong bộ nhớ chống lại rình mò thông thường, một số obfuscation đơn giản trên dây (băm số điểm với một cookie server) và được thực hiện.

5

Theo hiểu biết của tôi, điều này là không thể giải quyết được.

Tôi đã thấy nhiều người cố gắng làm xáo trộn khóa mã hóa. Tôi đã thấy một vài người bao gồm các kiểm tra sanity khác như thời gian trôi qua, hoặc kẻ thù còn lại. Tôi chưa bao giờ thấy một người gửi phát lại, mặc dù tất nhiên điều đó là có thể.

Trong một trang web sẽ vẫn không được đặt tên, họ thiết lập một giả gửi thường xuyên điểm số cao có thể dễ dàng tìm thấy. Nếu một thủ phạm sử dụng nó, địa chỉ IP của họ sẽ tự động bị cấm trong các bản cập nhật trong tương lai.

1

Hãy quên đi vấn đề bí mật; nếu mã của bạn có thể bị tấn công trên máy cục bộ, làm thế nào để bạn giữ một người nào đó thiết lập một điểm số cao điên rồ giả tạo và sau đó truyền nó bằng cách sử dụng cơ chế đáng tin cậy hiện có?

Cho đến khi bạn có thể thiết lập niềm tin vào chính mã, cơ chế mã hóa cho các liên lạc sẽ không phải là vấn đề thực sự.

6

"Tùy chọn khác sẽ gửi cùng phát lại trò chơi của người chơi ... Điều này không giải quyết được sự cố",

Thật sao? Tại sao không?

"bạn cũng phải tạo một bản phát lại rất phức tạp" chứng minh "[điểm số]."

Bạn có đề xuất ai đó có thể giả mạo phát lại không? Lý do ra một giải pháp siêu điểm cao mà không thực sự chơi trò chơi? Fake các dấu thời gian và tất cả mọi thứ? Kéo một số Donald Crowhurst?

Tại sao không chỉ chơi trò chơi thay vì cố gắng giả mạo nhật ký chơi trò chơi?

Hoặc ... nếu thật dễ dàng để giả mạo lịch sử chơi trò chơi dẫn đến điểm số cao, có lẽ trò chơi được thiết kế sai. Nếu trò chơi là "cứng", người đó phải thực hiện tất cả các lựa chọn đúng. Nếu trò chơi là dễ dàng, sau đó điểm số không phản ánh sự lựa chọn của người chơi và là fakable.

Hãy suy nghĩ theo cách này. Chọn bất kỳ trò chơi hoặc môn thể thao nào. Có người nói rằng - nói - Thụy Sĩ đánh bại New Zealand trong một cuộc đua du thuyền. Bạn sẽ thách thức họ bằng cách tìm kiếm các chi tiết đáng kể về địa điểm, các tàu thuyền, các đội và các cuộc đua cá nhân để thuyết phục bản thân rằng đó là sự thật. Chắc chắn, họ có thể giả mạo nó, nhưng nếu họ có một bộ chi tiết phong phú bao gồm cuộc đua, thì ... làm thế nào mà không phải "bằng chứng"?

+0

Điểm của bạn là hoàn toàn hợp lệ. Trong thực tế, tôi * sẽ * chỉ gửi dữ liệu phát lại và xác minh điểm số với nó. Tôi chủ yếu hỏi vì tôi quan tâm đến việc tìm hiểu về các phương pháp hỗ trợ công nghệ hữu ích khác để ngăn chặn loại lạm dụng này. –

+0

Tôi hoàn toàn không đồng ý rằng một trò chơi dễ dàng tạo chuỗi di chuyển đại diện cho trạng thái trò chơi nhất thiết phải là "thiết kế sai". Hãy xem xét cờ vua, ví dụ. –

+0

@John Feminall: không phải "dễ tạo ra chuỗi di chuyển" nhưng "dễ giả mạo lịch sử chơi trò chơi dẫn đến điểm số cao" Nếu bạn có thể giả mạo điểm số cao, trò chơi sẽ được thiết kế sai. Nếu bạn có thể chỉ đơn giản là tuyên bố một chiến thắng, đó là không tốt. Bạn phải trả lại tuyên bố đó với các quyết định dẫn đến chiến thắng. –

-2

Gửi hàm băm (phần mềm + muối ngẫu nhiên) cùng với điểm số. Kiểm tra băm này với máy chủ. Nếu nó khớp (nghĩa là phần mềm không được thay đổi) chấp nhận nó. Nếu không, điểm số xuất phát từ phiên bản "modded" của trò chơi. Từ chối nó. Muối ngẫu nhiên sẽ thay đổi mỗi lần băm được tạo (thời gian sys hiện tại hoặc một cái gì đó tương tự)

Kiểm tra mã nguồn Quake III Arena. Phiên bản của họ là bằng chứng khá ngu ngốc. Thật không may, tôi không nhớ liên kết ngay bây giờ.

+1

Đó là dễ dàng đảo ngược, và không phải ở tất cả các bằng chứng fool. – Unknown

Các vấn đề liên quan