Tài liệu Steamworks
Steam DRM

Tổng quan

Bộ bao bọc quản lý quyền kỹ thuật số Steam (Steam DRM wrapper) là một phần quan trọng của nền tảng Steam bởi nó xác thực quyền sở hữu trò chơi và bảo đảm rằng tính năng Steamworks hoạt động chuẩn xác bằng việc khởi động Steam trước khi khởi động trò chơi.

Bản thân Steam DRM wrapper không phải là giải pháp chống phần mềm lậu. Steam DRM wrapper bảo vệ trước phương pháp vi phạm bản quyền cực kỳ đơn giản (chép toàn bộ file trò chơi sang máy tính khác) và có một vài thủ thuật che khuất, nhưng vẫn dễ dàng bị gỡ bỏ bởi kẻ tấn công có ý đồ.

Chúng tôi khuyên bạn nên cải thiện giá trị cho phiên bản chính chủ của trò chơi thông qua các tính năng Steamworks mà bản lậu không thể (ví dụ: chơi nhiều người, thành tựu, bảng xếp hạng, thẻ trao đổi, v.v...).

Xem Sử dụng Steam wrapper với các DRM khác để biết thêm chi tiết về cách kết hợp Steam DRM wrapper với các loại DRM hay giải pháp chống sửa đổi giả mạo khác.

Steam DRM Wrapper tự động

Wrapper của Steam có thể được áp dụng từ bên trong mã tải lên SteamPipe. Cách làm này sẽ thực hiện yêu cầu khởi tạo lên máy chủ Steam qua client đã đăng nhập, rồi đăng file thực thi dưới dạng plaintext lên backend của Steam qua HTTP. Quá trình wrap được thực hiện trên máy chủ, sau đó steamcmd tải xuống file thực thi đã kèm theo wrap.

Để thực hiện gói DRM với SteamPipe, đăng nhập mã lệnh của bạn rồi chạy lệnh drm_wrap Steam:
drm_wrap [appid] [input filename] [output filename] [toolname] [flags] [<destination>]

Tham số:
  • appid - Số ID cho ứng dụng của bạn
  • input filename - Đường dẫn tương đối hoặc tuyệt đối đến file thực thi plaintext đầu vào. Nhớ đóng mở ngoặc cho các đường dẫn có chứa dấu cách!
  • plaintext executable - Đường dẫn tương đối hoặc tuyệt đối để công cụ xuất file thực thi đã có wrap.
  • toolname - "drmtoolp" hiện là tham số toolname duy nhất được hỗ trợ.
  • flag - Các số bitmask cho flag dùng để chỉ định hành vi công cụ.
    • 0 - Wrap bình thường (bảo vệ nhiều nhất)
    • 6 - Chế độ tương thích (tắt thủ thuật che khuất)
    • 32 - Bỏ qua kiểm tra gỡ lỗi
    • 38 - chế độ tương thích và đồng thời bỏ qua kiểm tra gỡ lỗi (bảo vệ thấp nhất)
  • destination, tham số không bắt buộc - "cloud" hoặc "local". Mặc định hiện tại là "cloud". Tùy chọn "local" không nên được dùng trừ khi có vấn đề khi sử dụng tùy chọn cloud.

Ví dụ: chạy file mã run_build.bat để đăng nhập, áp dụng DRM, tạo bản build rồi tải lên Steam (trong đó App ID là 480):
builder\steamcmd.exe +login mysteamaccount +drm_wrap 480 "D:\src\steamworkssdk\steamworksexample\release\steamworksexample.exe" "D:\src\steamworkssdk\tools\ContentBuilder\content\windows_content\SteamworksExample.exe" drmtoolp 0 +run_app_build ..\scripts\app_build_480.vdf +quit

Steam DRM Wrapper thủ công

Để nhanh chóng wrap một file thực thi với Steam wrapper, dùng trang quản trị dữ liệu ứng dụng Steamworks để wrap file thực thi của trò chơi chính.

  1. Chọn trò chơi bạn muốn thêm DRM vào trên trang quản trị ứng dụng
  2. Chọn 'Chỉnh sửa thiết lập Steamworks' trong mục 'Công cụ kỹ thuật' của trang quản trị ứng dụng
  3. Từ thẻ 'Bảo mật', chọn DRM.
  4. Tải file thực thi của trò chơi chính lên - Xem mục wrapper tự động bên trên để biết thêm thông tin về các tùy chọn thực thi công cụ.
  5. Tải lại file thực thi về máy của bạn
  6. Đặt lại tên file thực thi về tên gốc
  7. Chép file đó vào vị trí nguồn cho các depot công cụ nội dung của bạn
  8. Tạo bản build mới cho depot của bạn
  9. Kiểm tra depot đó trên máy chủ nội dung cục bộ của bạn

Sử dụng Steam wrapper với các DRM khác

Steam wrapper có thể và nên được dùng cùng các giải pháp DRM khác. Để làm thế, đầu tiên áp dụng Steam wrapper trong chế độ tương thích trước khi áp dụng các DRM nào khác. Áp dụng trước để nó không can thiệp vào giải pháp DRM khác. Chế độ tương thích sẽ tắt khả năng DRM của wrapper.

Gửi file thực thi trong chế độ tương thích bằng cách chọn nó trong menu thả xuống trên trang Steamworks hoặc dùng các flag phù hợp trong drmtool tự động hóa.

Hỏi đáp

Hỏi: Trò chơi C# /.Net của tôi không chạy sau khi áp dụng Steam wrapper
Đáp: Steam wrapper không hỗ trợ các ứng dụng .Net. Sử dụng SteamAPI_RestartAppIfNecessary thay vì DRM wrapper.

Hỏi: Trò chơi của tôi không chạy sau khi áp dụng Steam DRM wrapper
Đáp: Steam wrapper có thể phá hỏng các công cụ DRM khác. Xem Sử dụng Steam wrapper với các DRM khác, vì có thể có xung đột.

Hỏi: Tôi có cần áp dụng DRM lên exe mỗi khi tạo một build mới?
Đáp: Có, mỗi build bạn định phát hành cần phải được bọc lại với Steam wrapper. Thử tự động hóa quy trình này với hướng dẫn từ tài liệu 'Steam DRM Wrapper tự động' ở bên trên.

Hỏi: Một phần mềm chống vi-rút đã coi binary của tôi là vi-rút sau khi áp dụng Steam DRM wrapper. Tôi có thể làm gì?
Đáp: Kết quả nhận diện sai như thế có thể xảy ra, vì quy trình tích hợp DRM là chỉnh sửa binary theo như cách vi-rút có thể làm. Đừng ngần ngại liên hệ với bên phát triển phần mềm vi-rút, hoặc dùng API thay vì Steam DRM wrapper.