تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عمل نسخة تجريبية لبرنامجك مع أكواد التفعيل
#1
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
أنت كمبرمج قمت بعمل برنامج وتريد حمايته أو بمعنى أصح تقلل من فرصة تناقله بين المستخدمين بدون دفع قيمته
قمت أنا بكتابة مكتبة سوف تمكنك من حماية أى برنامج تقوم بعمله فقط تقوم باستيراد المكتبة فى مشروعك واستخدام دوال المكتبة لحماية البرنامج

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

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

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

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


الملفات المرفقة
.rar   GetActivationCode.rar (الحجم : 68.77 ك ب / التحميلات : 916)
.rar   Demo Program.rar (الحجم : 74.5 ك ب / التحميلات : 851)
.rar   Amgadtamer.rar (الحجم : 5.63 ك ب / التحميلات : 599)
الرد }}}
#2
شي جميل وتشكر عليه وانا استفدت منك اخي الكريم

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

تحياتي لك
ابو سامي
الرد }}}
تم الشكر بواسطة:
#4
شكرا على المكتبة مع الامل بشرح كيفية صنعها.
الرد }}}
تم الشكر بواسطة:
#5
مرفق لكم المكتبة بالكود المصدري لها
تحياتي


الملفات المرفقة
.rar   (1) Protection.rar (الحجم : 45.15 ك ب / التحميلات : 530)
الرد }}}
تم الشكر بواسطة: gharib
#6
هذا الكلاس باختصار

إقتباس :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
الرد }}}
تم الشكر بواسطة:
#7
الف شكر وبارك الله فيك
الرد }}}
تم الشكر بواسطة:
#8
جزاك الله خيراً :o
الرد }}}
تم الشكر بواسطة:
#9
اخي البرنامج لم يعمل عندي
الرد }}}
تم الشكر بواسطة:
#10
طيب عزيزي
ولو حبيت اخليه يشتغل عن طريق الفلاش ميموري usb

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

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

هي اللي تكون بمثابت القرص الصلب
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كود عمل نسخة تجريبية من صنعى للمناقشة manduh 2 4,297 09-05-16, 12:52 AM
آخر رد: NOHA MOCADMI
  مثال رائع عن تحويل أكواد #c إلى vb.net والعكس Omar Mekkawy 0 2,558 14-09-12, 01:57 AM
آخر رد: Omar Mekkawy

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم