قم بربط البرنامج بالسيريال نمبر للمعالج ...
أولاً : قم بإنشاء مشروع جديد يقوم بأخد السيريال نمبر للمعالج
أضف الـ Module التالي :
كود :
Imports System.Management
Module ModReg
Public Function GetComputerCode() As String
On Error Resume Next
Dim Searcher As ManagementObjectSearcher
Dim Encrypt As String = ""
Dim Idp As String = ""
Dim Code As String = ""
Searcher = New ManagementObjectSearcher("Select ProcessorId From Win32_Processor")
For Each Device As ManagementObject In Searcher.Get
For Each Prop As PropertyData In Device.Properties
Idp = (Prop.Value.ToString)
Next
Next
Encrypt = EncryptingData(Idp, 17)
For I As Integer = 0 To Idp.Length - 1
Code += Idp(I) & Encrypt(I)
Next
Return Code
End Function
Public Function GetRegCode(ByVal Code As String) As String
On Error Resume Next
Dim Idp As String = ""
Dim Encrypt As String = ""
Dim UnCode As String = ""
For I As Integer = 0 To Code.Length - 1 Step 2
Idp += Code(I)
Encrypt += Code(I + 1)
Next
For I As Integer = 0 To Idp.Length - 1
UnCode += Obfuscate(Idp)(I) & Obfuscate(Encrypt)(I)
Next
Return ReplaceOem(UnCode)
End Function
Private Function EncryptingData(ByVal DataString As String, ByVal Key As Integer) As String
On Error Resume Next
Dim Ch As Char() = DataString.ToCharArray
Dim sb As New System.Text.StringBuilder
For i As Integer = 0 To Ch.Length - 1
sb.Append(Convert.ToChar(Convert.ToInt64(Ch(i)) + Key))
Next
Return sb.ToString
End Function
Private Function Obfuscate(ByVal origText As String) As String
On Error Resume Next
Dim textBytes As Byte() = System.Text.Encoding.Unicode.GetBytes(origText)
For counter As Integer = 0 To textBytes.Length - 1
If (textBytes(counter) > 31) And (textBytes(counter) < 127) Then
textBytes(counter) += CByte(counter Mod 31 + 1)
If (textBytes(counter) > 126) Then textBytes(counter) -= CByte(95)
End If
Next counter
Return System.Text.Encoding.Unicode.GetChars(textBytes)
End Function
Private Function ReplaceOem(ByVal Str As String) As String
Str = Replace(Str, "`", "0")
Str = Replace(Str, "]", "1")
Str = Replace(Str, "[", "2")
Str = Replace(Str, "'", "3")
Str = Replace(Str, "\", "4")
Str = Replace(Str, ";", "5")
Str = Replace(Str, "/", "6")
Str = Replace(Str, ".", "7")
Str = Replace(Str, ",", "8")
Str = Replace(Str, "}", "9")
Str = Replace(Str, "{", "10")
Str = Replace(Str, "<", "11")
Str = Replace(Str, ">", "12")
Str = Replace(Str, "?", "13")
Str = Replace(Str, "~", "14")
Str = Replace(Str, "=", "15")
Str = Replace(Str, "+", "16")
Str = Replace(Str, "-", "17")
Str = Replace(Str, "_", "18")
Str = Replace(Str, """", "19")
Str = Replace(Str, "*", "20")
Str = Replace(Str, "&", "21")
Str = Replace(Str, "^", "22")
Str = Replace(Str, "%", "23")
Str = Replace(Str, "$", "24")
Str = Replace(Str, "#", "25")
Str = Replace(Str, "@", "26")
Str = Replace(Str, "!", "27")
Return Str
End Function
End Module
وفي الـ Form1 قم بإضافة TextBox فقط وفي حدث Form_Load ضع الأمر التالي :
كود :
Dim Code As String = ModReg.GetRegCode(ModReg.GetComputerCode & "_MyApp")
TextBox1.Text = Code
بعد الإنتهاء شغل البرنامج في جهاز المشتري وانسخ الـ Code الناتج
------------------------------------------------------
في برنامجك أضف الـ Module السابق
ثم قم بوضع الأمر التالي في حدث Form_Load لأول نافذة :
كود :
Dim Code As String = ModReg.GetRegCode(ModReg.GetComputerCode & "_MyApp")
If Code <> [color=#ff0000]"كود المشتري"[/color] Then
MsgBox("البرنامج غير مصرح له بالعمل إلا على جهاز واحد")
Application.ExitThread()
Application.Exit()
End If
بعد الانتهاء وعمل Build قم بتشفير برنامجك بأحد برامج التشفير (مثل .Net Reactor) لكي لا يتم سرقت الأوامر
بالتوفيق :o