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

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

خذ كود التشفير

PHP كود :
   Dim des As New TripleDESCryptoServiceProvider()
 
   Dim md52 As New MD5CryptoServiceProvider()
 
   Function md52hash(value As String) As Byte()
 
       Return md52.ComputeHash(Encoding.UTF8.GetBytes(value))
 
   End Function

 
   Function encrypt(txt As Stringkey As String) As String

        des
.Key md52hash(key)
 
       des.Mode CipherMode.ECB
        Dim buffer 
As Byte() = Encoding.UTF8.GetBytes(txt)
 
       Return Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(buffer0buffer.Length))


 
   End Function 

وخليه وشفر قيمة معينة مثل السيريل للهارد او المذر او غيره

ثم يتم مطابقته 

اي 

عند تشغيل البرنامج يجلب رقم سيريل الهارد

وانت تاخذه وتضعه في التشفير والرقم الضاهر تضعه في السيريل
الكود التالي مجرد فكرة تم كتابتها بأسلوب مختلف قليلا
و سهل تطويرها لتعطي نتائج افضل


PHP كود :
Public Class Form1

    Private Delegate Sub SerialCallBack
(Of T)(ByRef value As T)

 
   Private Sub EncruptInfo(info As Byte(), callback As SerialCallBack(Of Integer), ByRef result As Integer())
 
       Dim bool As Integer = If(info IsNot Nothing10)
 
       If bool 0 Then
            result 
= New Integer(info.Length 1) {}
 
           Dim i As Integer 0
            While i 
info.Length
                Dim ptr 
As IntPtr System.Runtime.InteropServices.Marshal.AllocHGlobal(i)
 
               Dim value As Integer CInt(info(i))
 
               callback(value)
 
               System.Runtime.InteropServices.Marshal.WriteInt32(ptrvalue)
 
               result(i) = System.Runtime.InteropServices.Marshal.ReadInt32(ptr)
 
               System.Runtime.InteropServices.Marshal.FreeHGlobal(ptr)
 
               i += 1
            End 
While
 
       End If
 
   End Sub

    Private 
Function GetSerials(info As Byte()) As Integer()
 
       Dim result As Integer() = Nothing
        EncruptInfo
(info, New SerialCallBack(Of Integer)(AddressOf Me.ApplySerialCallBack), result)
 
       Return result
    End 
Function

 
   Private Sub ApplySerialCallBack(ByRef value As Integer)
 
       Dim size As Integer System.Runtime.InteropServices.Marshal.SizeOf(GetType(Int32))
 
       size *= size
        value 
value size
    End Sub

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        
' حدد اسم العميل
        Dim info As String = "Any Name"
        ' 
تحويل اسم العميل الي مصفوفة بايت
        Dim bytes 
As Byte() = New Byte(info.Length 1) {}
 
       Dim k As Integer 0
        While k 
info.Length
            bytes
(k) = AscW(info(k).ToString)
 
           k += 1
        End 
While

 
       Dim serials As Integer() = GetSerials(bytes)
 
       Dim serial As String ""
 
       Dim i As Integer 0
        While i 
serials.Length
            serial 
+= serials(i).ToString " "
 
           i += 1
        End 
While

 
       ' الحصول علي سيريال العيل
        serial = serial.TrimEnd(" ")

    End Sub
End Class