منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : عمل نسخة تجريبية لبرنامجك مع أكواد التفعيل
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
أنت كمبرمج قمت بعمل برنامج وتريد حمايته أو بمعنى أصح تقلل من فرصة تناقله بين المستخدمين بدون دفع قيمته
قمت أنا بكتابة مكتبة سوف تمكنك من حماية أى برنامج تقوم بعمله فقط تقوم باستيراد المكتبة فى مشروعك واستخدام دوال المكتبة لحماية البرنامج

فكرة المكتبة تعتمد على إستخراج رقم من جهاز العميل مرتبط بالقرص الصلب يتم تشفيره وإظهاره كفتاح تسجيل للبرنامج من خلال هذا المفتاح يتم استخدام keygen يقوم باستخراج كود
التفعيل من مفتاح التسجيل وفى حالة تطابق مفتاح التسجيل مع مفتاح التفعيل طبعا يتم هذا باستخدام المكتبة التى كتبتها سوف يتم تفعيل البرنامج ويصبح نسخه كاملة مفعله يتم حفظ مفتاح التفعيل
فى ملف مع البرنامج هذا الملف يحتوى على مفتاح التفعيل الذى يعرفه العميل
ماذا لو قام العميل بحذف الملف أو قام بتغيير كود التفعيل  ؟
هذا القرار يرجع للك إما أن يتم غلق البرنامج أو يرجع البرنامج كنسخة تجريبيه
كود تفعيل جهاز ما لن يصلح لجهاز آخر

نأتى للمكتبة ودوالها
يتم إضافة المكتبة الى مشروعك اسم المكتبة amgadtamerSmile

نقوم باستيراد الإسم  
PHP كود :
imports amgadtamer 

دوال المكتبة هى عبارة عن shared function وبالتالى لست فى حاجة لإنشاء نسخة منها
تم إرفاق المكتبة ومثالين لكيفية استخدام هذه المكتبة كنت أود شرح دوال المكتبة لكن لضيق الوقت يمكن شرحها فى وقت لاحق وعموما هى سهلة وليست بحاجة الى شرح
شي جميل وتشكر عليه وانا استفدت منك اخي الكريم

تحياتي
شكراً لعطاءك الجميل لكن لو قمت برفع المكتبة مفتوحة المصدر لتعم الفائدة

تحياتي لك
ابو سامي
شكرا على المكتبة مع الامل بشرح كيفية صنعها.
مرفق لكم المكتبة بالكود المصدري لها
تحياتي
هذا الكلاس باختصار

إقتباس :Imports System.IO
Imports System.Security.Cryptography
Imports System.Text
Imports System.Management

Public Class ProtectMe
#Region "Encryption"

Public Shared Function EncryptText(ByVal text As String, ByVal key As String) As String
Dim crp As New TripleDESCryptoServiceProvider
Dim uEncode As New UnicodeEncoding
Dim bytPlainText() As Byte = uEncode.GetBytes(text)
Dim stmCipherText As New MemoryStream
Dim salt() As Byte = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
Dim pdb As New Rfc2898DeriveBytes(key, salt)
Dim bytDerivedKey() As Byte = pdb.GetBytes(24)
crp.Key = bytDerivedKey
crp.IV = pdb.GetBytes(8)
Dim csEncrypted As New CryptoStream(stmCipherText, crp.CreateEncryptor(), CryptoStreamMode.Write)
csEncrypted.Write(bytPlainText, 0, bytPlainText.Length)
csEncrypted.FlushFinalBlock()
Return Convert.ToBase64String(stmCipherText.ToArray())
End Function

Public Shared Function EncryptString(ByVal passstring As String) As String
'تم إستخدام دالة أخرى لإستخراج مفتاح التفعيل
Dim uincode As New UnicodeEncoding
Dim bytestring() As Byte = uincode.GetBytes(passstring)
Dim sha As New SHA256Managed
Dim hash() As Byte = sha.ComputeHash(bytestring)
Return Convert.ToBase64String(hash)
End Function

Public Shared Function DecryptText(ByVal text As String, ByVal key As String) As String
Dim crp As TripleDESCryptoServiceProvider
crp = New TripleDESCryptoServiceProvider
Dim uEncode As New UnicodeEncoding
Dim bytCipherText() As Byte = Convert.FromBase64String(text)
Dim stmPlainText As New MemoryStream
Dim stmCipherText As New MemoryStream(bytCipherText)
Dim slt() As Byte = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
Dim pdb As New Rfc2898DeriveBytes(key, slt)
Dim bytDerivedKey() As Byte = pdb.GetBytes(24)
crp.Key = bytDerivedKey
crp.IV = pdb.GetBytes(8)
Dim csDecrypted As New CryptoStream(stmCipherText, crp.CreateDecryptor(), CryptoStreamMode.Read)
Dim sw As New StreamWriter(stmPlainText)
Dim sr As New StreamReader(csDecrypted)
sw.Write(sr.ReadToEnd)
sw.Flush()
csDecrypted.Clear()
crp.Clear()
Return uEncode.GetString(stmPlainText.ToArray())
End Function
#End Region

#Region "Registration Key"

Public Shared Function GetRegistrationKey() As String
Dim DiskID As String = Nothing
Dim DiskSerial As New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
Dim DiskNo As ManagementObject
Dim array As New ArrayList
'للحصول على رقم القرص الصلب الأول بحيث لو تم إدخال فلاش ميمورى أو أى قرص خارجى أو يوجد أكثر من قرص يقوم بقراءة القرص الأول فقط
For Each DiskNo In DiskSerial.Get()
DiskID = DiskNo("Signature").ToString
array.Add(DiskID)
Next DiskNo
'تشفير رقم القرص الصلب
DiskID = EncryptText(array.Item(0).ToString, Mask)
'إضافة شرطة بين كل 5 حروف
DiskID = FinalizeKey(DiskID)
Return DiskID
End Function
#End Region

#Region "Create License File"

Public Shared Function CreateLicenseFile(ByVal Activationkey As String) As Boolean
Dim filecreator As New FileStream("License.nrd", FileMode.Create, FileAccess.Write)
Dim streamwriter As New StreamWriter(filecreator)
streamwriter.WriteLine(Activationkey)
streamwriter.Close()
filecreator.Close()
Return True
End Function
#End Region

#Region "Get Activation Key"

Public Shared Function GetActivationCode(ByVal FileName As String) As String
Dim activationkey As String = Nothing
Dim filereader As New FileStream(FileName, FileMode.Open, FileAccess.Read)
Dim streamreader As New StreamReader(filereader)
activationkey = streamreader.ReadLine
streamreader.Close()
filereader.Close()
Return activationkey
End Function
#End Region
#Region "Check if Activated"

Public Shared Function IsActivated(ByVal ActivationKey As String) As Boolean
Dim result As Boolean = False
Dim EncryptedRegistrtionKey As String = EncryptString(GetRegistrationKey())
If ActivationKey.Equals(EncryptedRegistrtionKey) Then
result = True
ProActivated = True
End If
Return result
End Function
#End Region

#Region "Check License File"

Public Shared Function CheckLicensFile(ByVal FileName As String) As Boolean
Dim result As Boolean = False
If File.Exists(FileName) Then
result = True
End If
Return result
End Function
#End Region

#Region "Property To Save Activation value"

Private Shared ProActivated As Boolean = False
Public Shared Property ProgramActivated As Boolean
Get
Return ProActivated
End Get
Set(value As Boolean)
ProActivated = value
End Set
End Property
#End Region
#Region "Mask Property"

Private Shared ReadOnly Property Mask As String
Get
Return "w9=z4j0h"
End Get
End Property
#End Region

Private Shared Function FinalizeKey(ByVal Registrationkey As String) As String
Dim txtlength As Integer = Registrationkey.Length
If txtlength < 10 Then
Return Registrationkey
Else
Dim i As Integer
For i = 5 To txtlength - 1 Step 6
Registrationkey = Registrationkey.Insert(i, "-")
Next
End If
Return Registrationkey
End Function
End Class
الف شكر وبارك الله فيك
جزاك الله خيراً :o
اخي البرنامج لم يعمل عندي
طيب عزيزي
ولو حبيت اخليه يشتغل عن طريق الفلاش ميموري usb

كيف اختار الرقم ؟

اي السريل نمبر للفلاش

هي اللي تكون بمثابت القرص الصلب
الصفحات : 1 2 3