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

اي المعادله او الكود اللي يخليني اطلع كود تفعيل للبرنامج


كود :
Imports Security.FingerPrint
Imports MicroVisionSerial.Encryption.Activation
Imports System.Management
Imports System.Data.OleDb

Public Class active_pro
   Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\setting.mdb;Jet OLEDB:Database Password=spaxet2020"
   Dim Conn As New OleDbConnection(ConStr)


   Private Sub active_pro_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Try
           serial.Text = Value()
       Catch ex As Exception

       End Try

       check()
   End Sub
   Sub save_acrivw()

       If Conn.State = ConnectionState.Closed Then
           Conn.Open()
       End If
       Dim cmd As New OleDb.OleDbCommand
       cmd.Connection = Conn
       cmd.CommandType = CommandType.Text
       cmd.CommandText = "UPDATE seial_check SET MACAddress= @MACAddress,Win32_Processor= @Win32_Processor,SerialNumber= @SerialNumber WHERE idsetting = " & 1 & " "
       cmd.Parameters.AddWithValue("MACAddress", MACAddress.Text)
       cmd.Parameters.AddWithValue("Win32_Processor", Win32_Processor.Text)
       cmd.Parameters.AddWithValue("SerialNumber", SerialNumber.Text)

       cmd.ExecuteScalar()
       Conn.Close()
       MsgBox("تم تفعيل البرنامج بنجاح..شكرا")
   End Sub

   Private Sub exit_btn_Click(sender As Object, e As EventArgs) Handles exit_btn.Click
       End
   End Sub

   Private Sub inserte_btn_Click(sender As Object, e As EventArgs) Handles inserte_btn.Click
       If CheckActivationKey(serial.Text, active.Text) = True Then
           save_acrivw()
           End
       Else
           MsgBox("رقم التفعيل غير صحيح", MsgBoxStyle.Exclamation, "خطاء")
       End If

   End Sub
   Sub check()

 
       Try
           'رقم ابرسيور
           Dim MOS_PR As New ManagementObjectSearcher("SELECT * FROM Win32_Processor")
           Dim mo_PR As ManagementObject
           For Each mo_PR In MOS_PR.Get()
               Win32_Processor.Text = mo_PR("ProcessorId").ToString()
           Next
           '===========================================
       Catch ex As Exception

       End Try
   
   End Sub

   Private Sub active_TextChanged(sender As Object, e As EventArgs) Handles active.TextChanged

   End Sub

   Private Sub SerialNumber_Click(sender As Object, e As EventArgs) Handles SerialNumber.Click

   End Sub

   Private Sub MACAddress_Click(sender As Object, e As EventArgs) Handles MACAddress.Click

   End Sub
End Class
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته
من الواضح انه مستخدم مكتبة المهندس عثمان خورشيد وهو طرحها بشكل مجاني
تابع الفيديو ورايح تفهم ان شاء الله




لحماية برنامج فيجوال بيسك بحيث يتم تفعيله على جهاز واحد فقط، يمكن استخدام رمز تعريف الجهاز (Hardware ID)، والذي يعتمد على الخصائص الفريدة للجهاز مثل رقم المعالج أو القرص الصلب. إليك الخطوات مع مثال كامل:

الفكرة الأساسية:
  1. استخراج رمز تعريف الجهاز (Hardware ID): يتم استخراج معرف فريد للجهاز.
  2. إنشاء مفتاح التفعيل: يُستخدم معرف الجهاز لإنشاء مفتاح تفعيل خاص بالجهاز.
  3. التحقق من المفتاح: يتم مقارنة المفتاح المدخل مع المفتاح المولد من معرف الجهاز.

مثال كامل
1. استخراج معرف الجهاز (Hardware ID)
استخدام خاصية مثل
كود :
ManagementObjectSearcher
لاستخراج معلومات عن الجهاز.
vb
نسخ الكود
كود :
Imports System.Management

Public Function GetHardwareID() As String
   Dim id As String = ""
   Try
       Dim searcher As New ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor")
       For Each obj As ManagementObject In searcher.Get()
           id = obj("ProcessorId").ToString()
           Exit For
       Next
   Catch ex As Exception
       id = "Unknown"
   End Try
   Return id
End Function
2. إنشاء مفتاح التفعيل
استخدام دالة لتشفير معرف الجهاز وإنشاء مفتاح تفعيل.
vb
نسخ الكود
كود :
Imports System.Security.Cryptography
Imports System.Text

Public Function GenerateActivationKey(hardwareID As String) As String
   Using sha256 As SHA256 = SHA256.Create()
       Dim bytes As Byte() = sha256.ComputeHash(Encoding.UTF8.GetBytes(hardwareID))
       Dim sb As New StringBuilder()
       For Each b As Byte In bytes
           sb.Append(b.ToString("X2")) ' تحويل إلى نص سداسي عشري
       Next
       Return sb.ToString().Substring(0, 16) ' أول 16 رمز
   End Using
End Function
3. التحقق من المفتاح
مقارنة المفتاح المدخل مع المفتاح المُولد.
vb
نسخ الكود
كود :
Public Function IsActivationKeyValid(inputKey As String) As Boolean
   Dim hardwareID As String = GetHardwareID()
   Dim generatedKey As String = GenerateActivationKey(hardwareID)
   Return inputKey.Equals(generatedKey)
End Function
4. واجهة المستخدم
إنشاء واجهة بسيطة تحتوي على مربع نص لإدخال مفتاح التفعيل وزر للتحقق.
vb
نسخ الكود
كود :
Private Sub btnActivate_Click(sender As Object, e As EventArgs) Handles btnActivate.Click
   Dim inputKey As String = txtActivationKey.Text
   If IsActivationKeyValid(inputKey) Then
       MessageBox.Show("تم تفعيل البرنامج بنجاح!", "تفعيل")
       ' حفظ حالة التفعيل
       My.Settings.IsActivated = True
       My.Settings.Save()
   Else
       MessageBox.Show("مفتاح التفعيل غير صحيح.", "خطأ")
   End If
End Sub
5. حفظ حالة التفعيل
استخدام إعدادات التطبيق لتخزين حالة التفعيل.
  1. افتح إعدادات المشروع وأضف مفتاحًا جديدًا باسم
    IsActivated
  2. من النوع
    Boolean
  3. وقيمة افتراضية
    False
  4. .
  5. تحقق من حالة التفعيل عند بدء تشغيل البرنامج:
vb
نسخ الكود
كود :
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   If Not My.Settings.IsActivated Then
       MessageBox.Show("البرنامج غير مفعل. يرجى إدخال مفتاح التفعيل.", "تنبيه")
       Me.Close() ' إغلاق البرنامج
   End If
End Sub

المخرجات:
  • عند تشغيل البرنامج على جهاز جديد، يتم توليد معرف الجهاز ومقارنته مع المفتاح المُدخل.
  • لن يعمل البرنامج إلا إذا كان المفتاح صحيحًا ومطابقًا لمعرفة الجهاز.
ملاحظات:
  • يمكنك استخدام خوارزميات تشفير إضافية لتعزيز الأمان.
  • يمكن تخزين المفتاح في خادم بعيد للتأكد من عدم التلاعب.
كما يمكنك نخزين رقم التفعيل في الريجستري مثل المثال التالي :

كيفية تخزين المفتاح في الريجستري
1. استيراد مكتبة الريجستري
تحتاج إلى استيراد مكتبة التعامل مع الريجستري.
vb
نسخ الكود
كود :
Imports Microsoft.Win32
2. كتابة المفتاح في الريجستري
استخدام الكود التالي لتخزين حالة التفعيل أو مفتاح التفعيل في الريجستري:
vb
نسخ الكود
كود :
Public Sub SaveActivationKeyToRegistry(activationKey As String)
   Try
       Dim registryKey As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\MyApplication")
       registryKey.SetValue("ActivationKey", activationKey, RegistryValueKind.String)
       registryKey.Close()
   Catch ex As Exception
       MessageBox.Show("حدث خطأ أثناء تخزين المفتاح في الريجستري: " & ex.Message, "خطأ")
   End Try
End Sub
3. قراءة المفتاح من الريجستري
استخدام الكود التالي لاسترجاع المفتاح من الريجستري:
vb
نسخ الكود
كود :
Public Function GetActivationKeyFromRegistry() As String
   Try
       Dim registryKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\MyApplication", False)
       If registryKey IsNot Nothing Then
           Dim activationKey As String = registryKey.GetValue("ActivationKey", "").ToString()
           registryKey.Close()
           Return activationKey
       End If
   Catch ex As Exception
       MessageBox.Show("حدث خطأ أثناء قراءة المفتاح من الريجستري: " & ex.Message, "خطأ")
   End Try
   Return String.Empty
End Function
4. التحقق من حالة التفعيل
تعديل الكود للتحقق من المفتاح المخزن في الريجستري بدلاً من إعدادات البرنامج:
vb
نسخ الكود
كود :
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   Dim storedKey As String = GetActivationKeyFromRegistry()
   If String.IsNullOrEmpty(storedKey) OrElse Not IsActivationKeyValid(storedKey) Then
       MessageBox.Show("البرنامج غير مفعل. يرجى إدخال مفتاح التفعيل.", "تنبيه")
       Me.Close() ' إغلاق البرنامج
   End If
End Sub
5. تخزين المفتاح بعد التفعيل
عندما يتم التحقق من صحة المفتاح، يتم تخزينه في الريجستري:
vb
نسخ الكود
كود :
Private Sub btnActivate_Click(sender As Object, e As EventArgs) Handles btnActivate.Click
   Dim inputKey As String = txtActivationKey.Text
   If IsActivationKeyValid(inputKey) Then
       SaveActivationKeyToRegistry(inputKey)
       MessageBox.Show("تم تفعيل البرنامج بنجاح!", "تفعيل")
       Me.Close() ' إغلاق نافذة التفعيل
   Else
       MessageBox.Show("مفتاح التفعيل غير صحيح.", "خطأ")
   End If
End Sub

مزايا تخزين المفتاح في الريجستري:
  1. صعوبة وصول المستخدم العادي للمفتاح أو تعديله.
  2. المفتاح يظل محفوظًا حتى بعد حذف التطبيق وإعادة تثبيته.
ملاحظات أمان:
  • استخدم التشفير لحماية المفتاح عند تخزينه في الريجستري.
  • اختر مفتاحًا فريدًا داخل الريجستري لتجنب التعارض مع تطبيقات أخرى (مثل:
    "Software\MyApplication"
  • ).
  • تأكد من أن الكود يتعامل مع استثناءات الوصول إلى الريجستري بحذر، خاصةً إذا كان المستخدم يعمل بدون صلاحيات إدارية.
الرد }}}
تم الشكر بواسطة: أبو خالد الشكري


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لماذا البرنامج يتوقف بدل عرض رسالة الخطأ justforit 0 96 07-12-25, 10:22 AM
آخر رد: justforit
  كيفية حفظ إعدادات البرنامج بحيث لا تتغير أحمد إبراهيم سعد 4 2,981 06-08-25, 06:34 PM
آخر رد: Taha Okla
  [VB.NET] استفسار بخصوص البحث في RichTextBox SerialPort dubai.eig 2 651 18-06-25, 11:09 AM
آخر رد: dubai.eig
  استفسار لو سمحتم خالد كامل1 3 792 04-06-25, 06:03 PM
آخر رد: Kamil
  استفسار عن حامية برنامج ahmedramy 2 568 27-04-25, 06:02 PM
آخر رد: princelovelorn
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 639 09-03-25, 03:52 AM
آخر رد: silverlord
Rainbow [VB.NET] عدد من هم فاتحي البرنامج محمد مسافر 1 408 25-02-25, 07:58 PM
آخر رد: princelovelorn
  استفسار عن تنسيق الفورم في حالة تغيرالفورم من وضع العادي الي التكبير fireswored1 4 818 22-01-25, 09:04 PM
آخر رد: fireswored1
  مساعدة في عمل جملة الاتصال في ملف خارج البرنامج Emam emam 2 372 25-11-24, 09:24 PM
آخر رد: Emam emam
  [سؤال] استفسار ads 0 290 18-11-24, 12:00 AM
آخر رد: ads

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


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