Chào mọi người.
Dạo gần đây mình đang tìm hiểu về việc phát triển chương trình bản quyền cho ứng dụng mà mình phát triển, vì hiện tại ởViệt Nam
việc bẻ khóa bản quyền chương trình đã thành thông lệ rồi, và việc nhiều chương trình lớn đều được người Việt Nam
bẻ khóa và chia sẽ đến mọi người.Theo như những gì mình đọc được, thì nói đến
Microsoft
việc bẻ khóa và sữ dụng miền phí của người dùng internet ở Việt Nam
làm cho lãnh đạo Microsoft
phải trực tiếp sang Việt Nam
để tìm hiểu vấn đề và nguyên nhân, nhưng vẫn chưa thể tìm ra được điều gì về những ứng dụng của Microsoft
vẫn bị bẻ khóa và chia sẽ miễn phí.Qua bài viết này mình giới thiếu đến người dùng nhiều tồn tại và rủi ro khi các bạn sữ dụng những chương trình được phát tán miến phí trên
Internet
để phòng tránh rủi ro khi sữ dụng nhưng chương trình Active
bản quyền đó nhé.Vào chủ đề mình đang học tập đó là việc sữ dụng
LexActivator Active
để thêm bản quyền cho chương trình của bản thân mình như mong muốn của một số anh chị em coder hiện tạiThêm giấy phép vào ứng dụng của bạn
Sau khi thêm sản phẩm cho ứng dụng của bạn vào cổng thông tin quản trị, bạn sẽ cần thực hiện những việc sau:- Lưu ý ID sản phẩm (từ menu hành động trong bảng).
- Tải xuống Product.dat cho sản phẩm (từ menu hành động trong bảng).
- Tải xuống dự án ví dụ từ Github
Product.dat
chứa dữ liệu sản phẩm được LexActivator
sử dụng. ID
sản phẩm là mã định danh của sản phẩm sẽ được sử dụng trong mã.Thêm thư viện vào ứng dụng của bạn
Trình bao bọcLexActivator
cho VB.NET
có thể dễ dàng cài đặt thông qua nugetInstall-Package Cryptlex.LexActivator
LexActivator
phụ thuộc vào VS2015runtime trên Windows . Trên các máy đích mà bạn sẽ triển khai ứng dụng, bạn có thể cài đặt VS2015runtime, nếu không có, bằng cách sử dụng liên kết: https://www.microsoft.com/en-in/download/details.aspx?id=48145Thiết lập tệp product.dat và ID sản phẩm
Điều đầu tiên bạn cần làm là nhúng tệp
Product.dat
vào ứng dụng của mình bằng SetProductData()
hàm hoặc đặt đường dẫn tuyệt đối của tệp bằng SetProductFile()
hàm.Điều tiếp theo bạn cần làm là đặt id sản phẩm của ứng dụng trong mã của bạn bằng
SetProductId()
hàm. Nó đặt id của sản phẩm bạn sẽ thêm giấy phép vào.LexActivator.SetProductData("PASTE_CONTENT_OF_PRODUCT.DAT_FILE"); LexActivator.SetProductId("PASTE_PRODUCT_ID", LexActivator.PermissionFlags.LA_USER);
Nếu ứng dụng của bạn yêu cầu quyền quản trị
(root)
để chạy (ví dụ: dịch vụ, daemon, v.v.), thay vì truyền LexActivator.PermissionFlags.LA_USER
cờ, bạn cần truyền LexActivator.PermissionFlags.LA_SYSTEM
.Nếu ứng dụng của bạn yêu cầu một lần kích hoạt duy nhất được chia sẻ giữa tất cả người dùng hệ điều hành (
kích hoạt toàn hệ thống
), hãy chuyển LexActivator.PermissionFlags.LA_ALL_USERS
trước khi kích hoạt. Cờ này chỉ tương thích với hệ điều hành Windows
.Kích hoạt giấy phép
Để kích hoạt giấy phép trong ứng dụng của bạn bằng khóa cấp phép, bạn sẽ sử dụngActivateLicense()
hàm API LexActivator
. Hàm này sẽ gọi /v3/activations
điểm cuối Cryptlex Web API
, xác minh phản hồi được mã hóa và ký kỹ thuật số để xác thực giấy phép.Private Sub activateLicenseBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Try Dim status As Integer LexActivator.SetLicenseKey(productKeyBox.Text) LexActivator.SetActivationMetadata("key1", "value1") status = LexActivator.ActivateLicense() If status = LexStatusCodes.LA_OK OrElse status = LexStatusCodes.LA_EXPIRED OrElse status = LexStatusCodes.LA_SUSPENDED Then Me.statusLabel.Text = "Activation Successful :" & status.ToString() Me.activateBtn.Text = "Deactivate" Me.activateTrialBtn.Enabled = False Else Me.statusLabel.Text = "Error activating the license: " & status.ToString() End If Catch ex As LexActivatorException Me.statusLabel.Text = "Error code: " & ex.Code.ToString() & " Error message: " + ex.Message End Try End Sub
Mã trên phải được thực thi tại thời điểm kích hoạt giấy phép.
Xác minh kích hoạt giấy phép
Mỗi lần ứng dụng của bạn khởi động, bạn cần xác minh xem giấy phép của bạn đã được kích hoạt hay chưa. Việc xác minh này phải diễn ra cục bộ bằng cách xác minh chữ ký số mật mã của kích hoạt. Lý tưởng nhất là nó cũng nên liên hệ không đồng bộ với máy chủCryptlexM
để xác thực và đồng bộ hóa kích hoạt giấy phép theo định kỳ. Đối với điều này, bạn cần sử dụng IsLicenseGenuine()
hàm API LexActivator
.Public Sub New() InitializeComponent() Try LexActivator.SetProductData("PASTE_CONTENT_OF_PRODUCT.DAT_FILE") LexActivator.SetProductId("PASTE_PRODUCT_ID", LexActivator.PermissionFlags.LA_USER) Dim status As Integer = LexActivator.IsLicenseGenuine() If status = LexStatusCodes.LA_OK OrElse status = LexStatusCodes.LA_EXPIRED OrElse status = LexStatusCodes.LA_SUSPENDED OrElse status = LexStatusCodes.LA_GRACE_PERIOD_OVER Then Me.statusLabel.Text = "License genuinely activated! Activation Status: " & status.ToString() Else Me.statusLabel.Text = "License is not activated: " & status.ToString() End If Catch ex As LexActivatorException Me.statusLabel.Text = "Error code: " & ex.Code.ToString() & " Error message: " + ex.Message End Try End Sub
Mã trên phải được thực thi mỗi khi người dùng khởi động ứng dụng. Sau khi xác minh cục bộ, nó sẽ lên lịch kiểm tra máy chủ định kỳ trong một luồng riêng biệt.
Qua những gới ý trên, mọi người cũng hiểu chút nào về việc phát triển bản quyền cho chương trình của bản thân mình rồi chứ, nếu không hiểu ở bước nào có thể để lại bình luận để mình giúp nhé.
Chúc mọi người thành công.
không đơn giản như em nghĩ vậy đâu, để kiểm soát được key active chương trình cần phải có hệ thống kiểm soát người dùng key và nhiều thứ khác để bảo vệ chương trình tốt nhất em nhé.