Làm thế nào để trò chơi PC / Mac phát hiện vi phạm bản quyền?


27

Gần đây tôi đã đọc một bài viết về những cách thông minh mà các lập trình viên đã bảo vệ trò chơi của họ khỏi những tên cướp biển, chẳng hạn như những người tạo ra Game Dev Tycoon . Điều này khiến tôi tò mò: làm thế nào để họ phát hiện ra rằng bản sao của trò chơi đang chạy thực tế là một phiên bản lậu ở cấp độ kỹ thuật? Câu trả lời gần nhất mà tôi có thể tìm thấy thông qua một số nghiên cứu là làm thế nào các hộp mực SNES có thể phát hiện ra nếu chúng bị sao chép trái phép , nhưng chiến thuật đó rõ ràng không áp dụng cho PC.


1
Tôi nghĩ rằng câu hỏi này là quá rộng. Có một số cách mà các trò chơi phát hiện vi phạm bản quyền, và nhiều trong số đó là cụ thể cho từng trò chơi.
MichaelHouse

10
@ Byte56 Tôi đồng ý rằng câu hỏi khá rộng, nhưng tôi nghĩ đây vẫn là một câu hỏi hay. Một câu trả lời lý tưởng có thể cung cấp một phương pháp phát hiện vi phạm bản quyền phổ biến và có lẽ liên kết đến các nguồn giải thích các giải pháp đã biết khác.
kevintodisco

2
Có lẽ cách tốt nhất có thể để tránh vi phạm bản quyền là làm những gì Blizzard đã làm cho Diablo III: khách hàng thực hiện kết xuất và hầu hết các quy tắc và logic trò chơi chỉ được lưu trữ ở phía máy chủ Blizzard (ví dụ: bạn nhận được bao nhiêu vàng khi bạn mở một cái rương trong phòng X với người chơi ở cấp Y). Không thể đánh bại điều này trừ khi bạn đánh cắp mã nhị phân / nguồn của Blizzard cho phần máy chủ (điều này rất khó xảy ra). Một số người đã tạo ra các trình giả lập, nhưng vì nó không cùng quy tắc (chúng là xấp xỉ), nên nó không mang lại trải nghiệm trò chơi giống nhau.
tigrou

Câu trả lời:


53

Điều đầu tiên trước tiên: không có cách nào để máy tính biết liệu một tập tin có bị sao chép hay không. Vi phạm bản quyền là một thuật ngữ hợp pháp / đạo đức và vì vậy, nó không có ý nghĩa gì trên một tệp, nó chỉ bao gồm các số và số không.

Điều đó nói rằng, phòng chống vi phạm bản quyền và các biện pháp đối phó thường tập trung vào việc tìm hiểu xem người dùng có hay không (thường là một đối tượng) mà chỉ có thể có được nếu một bản sao của trò chơi được mua và khiến việc sao chép trở nên khó khăn. Có rất nhiều cách để làm điều này, mỗi cách đều có ưu điểm cũng như sai sót. Tôi sẽ đề cập đến một vài:

  • Các trò chơi ban đầu yêu cầu người dùng nhập một từ từ hướng dẫn trò chơi, mà bạn chỉ nên nhận nếu bạn mua hộp trò chơi. Một máy photocopy hoặc máy quét dễ dàng đánh bại kỹ thuật này.

  • Gần đây, kiểm tra phương tiện truyền thông là phổ biến hơn. Ý tưởng là bạn yêu cầu CD trò chơi phải nằm trong ổ đĩa để trò chơi chạy. Để thực hiện điều này, ví dụ, bạn có thể truy cập các tệp dữ liệu quan trọng từ CD mà không có trò chơi nào có thể chạy hoặc chỉ cần kiểm tra sự tồn tại của tệp trong CD. Điều này hoạt động khá tốt khi các đĩa CD khó nhân đôi, nhưng máy photocopy CD và các trình giả lập ổ đĩa gần đây có thể được sử dụng để dễ dàng đánh bại các kỹ thuật này.

  • Tuy nhiên, bản sao CD không hoàn hảo, vì vậy nhiều kỹ thuật khác tập trung vào việc phát hiện xem CD là đĩa CD gốc hay bản sao. Để thực hiện điều này, một trò chơi có thể kiểm tra các yếu tố không chuẩn được đưa vào đĩa trò chơi trong thời gian nhấn, nhưng không thể sao chép dễ dàng và đáng tin cậy bằng ổ ghi CD, trên CD-R. Một số cách phổ biến để làm điều này là:

    • Tạo các tệp "ma" giả trong CD trong khi làm chủ, không thể truy cập được từ hệ thống tệp CD, nhưng vẫn tồn tại và có thể được đọc nếu bạn biết tìm chúng ở đâu. Dữ liệu này không có trên các bản sao đĩa từng tệp. Sao chép toàn bộ hình ảnh đĩa sẽ sao chép các tập tin này mặc dù.

    • Một cách khác là cố ý chèn lỗi vào đĩa. CD chứa mã sửa lỗi. Bằng cách chèn các lỗi trong dữ liệu, có thể được sửa chữa trong suốt bởi đầu đọc đĩa, đĩa sẽ hoạt động bình thường, nhưng các lỗi sẽ không được sao chép vào CD-R. Bằng cách tìm kiếm các lỗi cố ý này, một trò chơi có thể coi CD là bản sao được nhấn ban đầu. Bản sao hình ảnh đĩa RAW đánh bại điều này mặc dù.

    • Chèn hai lĩnh vực, có cùng địa chỉ nhưng dữ liệu khác nhau sẽ mang lại kết quả khác nhau khi tìm kiếm dữ liệu tiến và lùi. Kiểm tra sự tồn tại của điều này là có thể, và sao chép một đĩa CD với các lĩnh vực sinh đôi này là rất khó khăn.

    • Đo vị trí thực tế của các hố trong CD. Một lần nữa, sao chép đĩa CD với các hố ở cùng vị trí là rất khó.

    Tuy nhiên, nhiều trình giả lập CD, như Daemon Tools , hoặc Alcohol 120% thực sự có thể mô phỏng các tính năng này. Do đó, nhiều nhà xuất bản chọn bao gồm bước phát hiện trình giả lập CD và ngăn trò chơi chạy nếu phát hiện trình giả lập. Việc thực hiện một trình phát hiện giả lập nằm ngoài phạm vi của câu trả lời này.

  • Thay vì hoặc ngoài việc kiểm tra đĩa CD vật lý, trò chơi có thể yêu cầu người dùng nhập một số dữ liệu, như khóa sản phẩm . Một số cách sử dụng khóa sản phẩm là:

    • Kiểm tra các tính năng toán học trong khóa. Tuy nhiên, điều này không ngăn được sự trùng lặp khóa và nếu thuật toán kiểm tra được phát hiện hoặc thiết kế ngược, một tên cướp biển có thể tạo các khóa mới theo ý muốn sẽ có vẻ hợp pháp với trò chơi. Phần mềm tạo khóa theo ý muốn được gọi là " keygens ".

    • Tạo hàm băm dựa trên phần cứng của người dùng, gửi mã băm này và khóa sản phẩm (thường là tổ hợp, được gọi là "khóa cài đặt") đến máy chủ do công ty trò chơi sở hữu và dựa trên hàm băm và nối tiếp, tạo khóa kích hoạt . Sử dụng các phương thức số một chiều (như số học mô-đun hoặc một số phương thức có đường cong elip), trò chơi có thể xem liệu khóa kích hoạt có khớp với mã băm và mã nối tiếp hay không và chỉ chạy nếu chúng khớp. Kỹ thuật này được gọi là "kích hoạt".

    Khi kích hoạt, một máy chủ có thể từ chối cung cấp khóa kích hoạt cho nhiều băm phần cứng với cùng một mã nối tiếp. Bởi vì điều này, ngay cả khi mã nối tiếp và khóa kích hoạt được sao chép, khóa kích hoạt sẽ không khớp và trò chơi sẽ không chạy trên các máy tính khác.

Tất cả các biện pháp này đều nhằm tìm hiểu xem người dùng có sở hữu bản sao trò chơi đã mua hay không. Tuy nhiên, việc thực hiện chúng đòi hỏi mã chương trình kiểm tra việc này. Có thể một tên cướp biển sửa đổi mã trò chơi để vô hiệu hóa hoặc bỏ qua kiểm tra thay vì tự tấn công các cơ chế bảo vệ bản sao. Hành động sửa đổi nhị phân trò chơi để loại bỏ kiểm tra chống vi phạm bản quyền được gọi là "bẻ khóa".

Việc bẻ khóa có thể chỉ đơn giản là phân tách trò chơi thực thi, tìm nơi thực hiện các kiểm tra có liên quan, sửa đổi nó để vô hiệu hóa kiểm tra hoặc bỏ qua kết quả và lắp lại. Một số cách để chống nứt là:

  • Kiểm tra nhị phân với một số băm. Tuy nhiên, phải có một chương trình kiểm tra hàm băm, lần lượt cũng có thể bị bẻ khóa.

  • Mã hóa chương trình, hoặc đơn giản là thói quen kiểm tra và giải mã nó trong thời gian chạy. Điều này làm cho việc tháo gỡ trở nên khó khăn hơn, vì nó liên quan đến một hoặc nhiều bước giải mã bổ sung. NẾU khóa giải mã được bao gồm trong chương trình (vì nó phải như vậy, vì nếu không có nó, trò chơi không thể được giải mã), thì cướp biển có thể đảo ngược kỹ thuật giải mã, tìm thói quen và bẻ khóa bảo vệ bản sao.

    Bởi vì điều này, là một nhà phát hành trò chơi, bạn muốn làm cho khóa càng khó tìm càng tốt và tùy ý làm cho thuật toán giải mã trở nên khó hiểu. Một số cách để làm cho chìa khóa khó tìm là:

    • Làm mờ nó bằng cách tạo ra nó theo những cách lạ. Điều này chỉ đơn giản là làm chậm quá trình nứt.

    • Tạo các khóa chính trên mỗi máy tương tự như bảo vệ nối tiếp được đề cập ở trên.

    Tuy nhiên, bất kể phương thức bạn sử dụng để tạo khóa là gì, bản thân các khóa sẽ nằm trong bộ nhớ trong khi quá trình giải mã đang diễn ra. Thanh tra bộ nhớ, trình gỡ lỗi và trình giả lập có thể giúp một tên cướp biển tìm và sao chép khóa trong khi nó nằm trong bộ nhớ. Nhìn trộm bộ nhớ có thể bị tấn công theo nhiều cách:

    • Có một dịch vụ đặc quyền phát hiện truy cập bộ nhớ trong khu vực được chỉ định và chuyển hướng địa chỉ ở một nơi khác. Vì điều này đòi hỏi quyền truy cập ring 0 và các chương trình thực hiện điều này thường được sử dụng cho các mục đích không chính đáng , phần mềm chống vi-rút thường chặn chúng. (đây là lý do tại sao nhiều trò chơi và phần mềm khác yêu cầu tắt bảo vệ chống vi-rút khi chạy). Viết phần mềm thực hiện chính xác điều này là vô cùng khó khăn và có thể dễ dàng ảnh hưởng đến tính ổn định và bảo mật của hệ điều hành máy chủ. Các vụ bê bối XCP là một ví dụ tốt về một thực hiện của phương pháp sai ra đi này.

    • Phần cứng và hệ điều hành hiện đại cung cấp một số công cụ, như màn hình bộ nhớ , đường dẫn phương tiện an toànmô-đun TP , để giúp tạo chương trình giải mã dữ liệu dễ dàng hơn, đồng thời chống lại việc kiểm tra bộ nhớ.

Có rất nhiều kỹ thuật khác để tấn công cướp biển, từ tầm thường đến bí truyền. Thật không may, có thể tất cả các kỹ thuật này không thể nhận ra một bản sao chính hãng và thường là các kỹ thuật tích cực hơn có tỷ lệ dương tính giả cao hơn.

Là một nhà xuất bản trò chơi, bạn thường muốn chọn một tập hợp các kỹ thuật có chi phí thực hiện, thời gian bẻ khóa dự kiến ​​và tỷ lệ dương tính giả phù hợp với mong đợi của bạn.

Đó là một quan niệm sai lầm phổ biến rằng bảo vệ vi phạm bản quyền có nghĩa là hoàn toàn không thể phá vỡ. Hầu hết doanh số trò chơi xảy ra trong vài tháng đầu sau khi phát hành, do đó, kế hoạch bảo vệ vi phạm bản quyền thường được coi là hiệu quả nếu việc phá vỡ nó tiêu tốn đủ thời gian để nhà phát hành trò chơi thu được một khoản lợi nhuận lớn trước khi bị phá vỡ.

Về Game Dev Tycoon, họ không sử dụng bất kỳ công nghệ chống vi phạm bản quyền nào. Họ chỉ đơn giản tạo ra một bản dựng "bị hỏng" và phân phối nó trên BitTorrent, như đã nêu trong phần đầu của bài viết mà bạn đã đề cập.


1
Ngay cả khi có một câu trả lời cạnh tranh, tôi cần phải ngả mũ trước câu trả lời của bạn, trình bày tốt hơn và rõ ràng là có nhiều thời gian hơn trong đó. Bảo hiểm kỹ thuật tốt hơn, và tôi phải nói rằng tôi chưa bao giờ nghe nói về "màn cửa bộ nhớ, đường dẫn phương tiện an toàn và mô-đun TP". Đó là gì ??
v.oddou

@ v.oddou: Đây là những yếu tố có thể được sử dụng cho DRM được hỗ trợ phần cứng. Một mô-đun TP là một chip xử lý mật mã. Nhiều máy tính hiện đại (2007 trở lên) bao gồm TPM. Một màn nhớ cho phép bạn tạo các phần bộ nhớ chỉ ghi mà không thể đọc được ngay cả với HĐH, đặc biệt là để lưu trữ các khóa để TPM sử dụng. Đường dẫn phương tiện bảo mật là một hệ thống trong đó nội dung di chuyển được mã hóa từ đầu đến cuối (thậm chí tất cả các cách để hiển thị). Sử dụng các công nghệ này một cách chính xác khác xa với tầm thường mặc dù ...
Panda Pajama

Cũng giống như một tiện ích nhỏ, có một bài viết tuyệt vời về bảo vệ bản sao Spyro thảo luận về nhiều nội dung này khi áp dụng cho một trò chơi, cùng với một số lý do và một câu chuyện thú vị: gamasutra.com/view/feature/3030/keep_the_pirates_at_bay .php
leander

Câu trả lời này là hoàn toàn sai lầm. youtube.com/watch?v=FVVx5WYmO2s Gắn cờ cho sự can thiệp của người điều hành.
Krythic

@Krythic làm thế nào về bạn viết của riêng bạn và sau đó?
Panda Pyjama

3

Điều này khá dễ, bạn chỉ cần chạy MD5 hoặc SHA256 trên tệp thực thi của riêng bạn, sau đó, khi bạn phát hiện chữ ký đã thay đổi từ mã hóa cứng thành nhị phân sau khi bạn tạo bản phát hành cuối cùng, thì rõ ràng ai đó đã hack tệp thực thi của bạn. Sau đó, hầu hết các công ty, không chỉ hiển thị cửa sổ bật lên nữa (đó là trường hợp trước đó) có nội dung "PE bị hỏng" hoặc "phát hiện vi-rút" và sau đó thoát khỏi trò chơi, vì điều này sẽ bị hack rất nhanh là tin tặc. Do trò chơi bị tạm dừng trên vòng lặp thông báo của hộp thoại nên ngay lập tức sẽ thấy vì hộp thoại nào được bật lên và chỉ cần bỏ qua nhánh bằng cách thay đổi mã khi kiểm tra điều kiện.

Ngày nay, các công ty sử dụng sự thay đổi rất tinh tế trong lối chơi, như nhân lên cuộc sống của quái vật để khiến trò chơi không thể chơi được, hoặc được tích hợp vô cùng khéo léo trong trò chơi quản lý này, nơi bạn điều hành một công ty trò chơi và cuối cùng bạn mất đi vì quá nhiều người chơi đã vi phạm bản quyền của bạn. Đẹp mise en abyme trong trường hợp này. Đôi khi, bạn chỉ nhận được một lá cờ đỏ được tải lên trên các máy chủ của công ty và khi bạn muốn gọi cho họ để được hỗ trợ, bạn sẽ có một bài phát biểu hoặc bị mắc kẹt để tiết lộ danh tính của bạn.

nhưng đây là tất cả các chủ đề, kỹ thuật là băm. và các kiểm tra này có thể được chạy ở nhiều nơi trong hệ nhị phân để nếu tin tặc tìm thấy và xóa nó, điều đó là không đủ.

EDIT: Nếu bạn chỉ sao chép trò chơi như hiện tại, nó có thể hoạt động nếu trò chơi không có biện pháp chống vi phạm bản quyền nào cả. Nó đã làm việc với các trò chơi rất cũ, thời kỳ ghi đĩa CD. Đó là lý do tại sao, hầu hết thời gian, trò chơi phải được cài đặt để chạy, không chỉ là thư mục cài đặt được sao chép. Điều này liên quan đến các tập tin ẩn đặt một chút ở khắp mọi nơi trong hệ thống và các khóa registry. Trò chơi kiểm tra sự hiện diện của những thứ này, chỉ có thể được tạo bởi trình cài đặt. Và trình cài đặt, chỉ có thể được chạy từ CD, không thể sao chép được do các bit thất thường không tôn trọng hệ thống mã sửa lỗi ở các byte đầu tiên của đĩa, giết chết hầu hết các trình điều khiển trình phát CD. Một số phần mềm sao chép, như nero of alcohol, đề nghị bạn bỏ qua các lỗi nhưng những gì chúng ghi là một bản sao được sửa, trình cài đặt sẽ phát hiện ra điều đó và bạn lại tiếp tục.

EDIT2:

Q: làm thế nào để băm một tập tin sau đó chèn băm vào tập tin thay đổi hàm băm?

@ Byte56: Chết tiệt, chúng tôi đang nhận được những bình luận thông minh ở đây :) Vâng, đó là một nghịch lý và nó không thể được giải quyết. Vì vậy, băm phải được thực hiện trên một phần của nhị phân không chứa băm. Và mã kiểm tra phải biết rằng, để loại trừ vùng đó khi băm để tự kiểm tra. Tôi đã thấy mọi người sử dụng các thẻ, như ~ ~ #### [đặt băm ở đây] #### ~ ~ để đóng gói băm của họ và thực hiện loại trừ. Nhưng nó có một lỗ hổng là dễ dàng phát hiện ra các tin tặc, vì vậy hàm băm phải được xáo trộn và phân tán ở nhiều địa điểm. Ngay cả mã hóa tại sao không, và hoạt động ngụy trang tương tự sẽ lưu trữ khóa riêng.


Điều gì xảy ra nếu các tập tin trò chơi được sao chép nguyên trạng? Không băm xác nhận trong trường hợp này?
Panda Pyjama

@PandaPajama: nhận xét tuyệt vời. Tôi đang thực hiện chỉnh sửa.
v.oddou

Làm thế nào để họ đối phó với băm một mã thực thi sau đó mã hóa cứng mà băm trong thực thi, do đó thay đổi băm?
MichaelHouse

@ Byte56: chỉnh sửa lại :)
v.oddou

@MickLH: Tôi phải nói rằng tôi thích câu trả lời của bạn vì lý do tôi đồng ý với kinh nghiệm nên khiến mọi người tự nhiên bỏ tiền ra khỏi sự sợ hãi. Quá tệ, nó không thực sự trả lời câu hỏi và bạn đã bị từ chối (tự nhiên người ta có thể nói). Bạn đang quá tuyệt đối trên khóa riêng. Khóa riêng này không có giá trị gì ngoài mã hóa băm, nó không có giá trị lớn như cơ sở dữ liệu thẻ tín dụng chẳng hạn. Nhưng nếu bạn khăng khăng thì tổng kiểm tra có thể được gửi trên mạng để kiểm tra trên máy chủ. Nhưng bảo mật chỉ mạnh bằng điểm yếu nhất của nó và điều này có một lỗ hổng nghiêm trọng, một hacker
v.oddou

-5

Không thể họ chỉ đặt một phân vùng mở rộng trên một trò chơi mac

mac không thể đọc máy lẻ


Nếu có một tập tin trên phân vùng cần thiết, trò chơi không thể thực thi. Nếu chỉ có sự tồn tại của phân vùng là "bằng chứng" rằng đó là bản sao hợp pháp, thì nó sẽ dễ dàng được sao chép.
Jesse Williams
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.