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

جزء كبير من كتابة الكود يعتمد علي الإلهاء و الخداع
أهم شئ في كتابة الكود انك أنت شخصيا تكون فاهم الكود
مثلا ممكن تكتب الكود بطرق صعبة الفهم علي من قد يطلع علي الكود الخاص بك
خاصة أن كتابة الكود بشكل مباشر يؤدي الي سرعة كسر الكود

مثلا الكلاس التالي يقوم بالتشفيير ....... وهو كلاس مظهره صعب لكن باطنه سهل جدا


PHP كود :
Public Class MemoryDumper

    Private Delegate 
Function Validator(As String)

 
   Private _ptr As IntPtr
    Private _byte 
As Byte
    Private _index 
As Integer
    Private _guard 
As Integer

    Public Sub 
New(index As Integervalue As Byteguard As Integer)
 
       Me._index index
        Me
._byte value
        Me
._guard guard
        Me
._ptr IntPtr.Zero
    End Sub

    Public ReadOnly Property Handle 
As IntPtr
        Get
            Return _ptr
        End Get
    End Property

    Public ReadOnly Property Valid 
As Boolean
        Get
            Return Me
._ptr <> IntPtr.Zero AndAlso (Not Me._index 0)
 
       End Get
    End Property

    Public Sub Allocate
()
 
       Me._ptr System.Runtime.InteropServices.Marshal.AllocHGlobal(_index)
 
   End Sub

    Public Sub Write
()
 
       System.Runtime.InteropServices.Marshal.WriteByte(_ptr_byte)
 
   End Sub

    Public 
Function Read() As Byte
        Dim size 
As Integer Me.Validate(Me._guard)
 
       Return (System.Runtime.InteropServices.Marshal.ReadByte(_ptr)) Xor CByte(size)
 
   End Function

 
   Public Sub Flush()
 
       If _ptr <> IntPtr.Zero Then
            System
.Runtime.InteropServices.Marshal.FreeHGlobal(_ptr)
 
           _ptr IntPtr.Zero
        End 
If
 
   End Sub

    Private 
Function Validate(value As Integercallback As Validator) As Integer
        Dim result 
As Integer Nothing
        If Not String
.IsNullOrEmpty(value.ToStringThen
            result 
Integer.Parse(callback(value.ToString))
 
       End If
 
       Return result
    End 
Function

 
   Private Function Validate(value As Integer) As Integer
        Dim callback 
As Validator = New Validator(AddressOf Me.Validate)
 
       Return Me.Validate(valuecallback)
 
   End Function

 
   Private Function Validate(value As String) As String
        If Not String
.IsNullOrEmpty(valueThen
            Dim s 
As String Me.Validate(value4value.Length 1)
 
           Dim chars As Char() = s.ToCharArray
            Dim result 
As Char() = New Char(chars.Length 1) {}
 
           For i 0 To chars.Length 1
                result
(i) = chars(chars.Length 1)
 
           Next
            Return 
New String(result)
 
       End If
 
       Return String.Empty
 
   End Function

 
   Private Function Validate(As StringByRef index As IntegerByRef count As Integer) As String
        While index 
count
            If Not Char
.IsWhiteSpace(s(index)) Then
                Exit 
While
 
           End If
 
           index += 1
        End 
While

 
       While count >= index AndAlso Char.IsWhiteSpace(s(count))
 
           count -= 1
        End 
While
 
       Return s.Substring(indexcount index 1)
 
   End Function

End Class 


الكود التالي عبارة عن دالة توضح كيفية استخدام الكلاس
PHP كود :
   Private Function Dump(bytes() As Byteguard As Integer) As Byte()
 
       Dim result As Byte() = New Byte(bytes.Length 1) {}
 
       Dim i As Integer 0
        While i 
bytes.Length
            Dim md 
As New MemoryDumper(1bytes(i), guard)
 
           md.Allocate()
 
           If md.Valid Then
                md
.Write()
 
               result(i) = md.Read
  
          End 
If
 
           md.Flush()
 
           i += 1
        End 
While
 
       Return result
    End 
Function 


والكود التالي يوضح كيفية استخدام الدالة
انا هنا اقوم بتشفيير مصفوفة بايت بغض النظر عن اصلها , الأصل هنا عبارة عن String


PHP كود :
Private dumpers As List(Of Integer) = New List(Of IntegerFrom {6085614756231234524688


PHP كود :
Dim s As String "omar"
 
       Dim bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(s)
 
       Dim result As Byte() = Me.Dump(bytesdumpers(3)) 

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

ملحوظة أخيرة
أنت لست في حاجة الي اعادة تشفيير الملفات عد اغلاق البرنامج الرئيسي

تقبل تحياتي و شكرا لمرورك
Retired
الرد }}}


الردود في هذا الموضوع
RE: إستخدام الواجهات Interface في إستدعاء الدوال و الروتينات من ملف Dll - بواسطة silverlight - 22-06-18, 05:22 PM


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


يقوم بقرائة الموضوع: