الاثنين، 8 أغسطس 2016

حماية البرامج الفجول بيسك تصميم برنامج


السلام عليكم و رحمة الله
استكمالاً للموضوع : سنعمل مشروع صغير و نقوم بتامين الحماية .
الطريقة التي سنعمل بها هي طلب رقم المعالج في الجهاز و من ثم يتم اخذ هذا الرقم و اجراء تحويل له عبر الاسكي كود و من ثم تمويه الرقم الناتج عبر اليونيكود و من ثم اقتصاص عدد محدد من الحروف من الرقم الناتج و سيكون هذا الرقم هو مفتاح البرنامج و من ثم نخزنه داخل البرنامج , طبعا الطريقة تناسب جهاز واحد فقط حيث الرقم الناتج هو خاص بهذا الجهاز فقط , لان البرنامج كل مرة يعمل بها يقوم بالتحقق من رقم المعالج و من ثم يجري مقارنة بين الرقم الناتج و الرقم المخزن و اذا لم تتم المطابقة يطالب المستخدم بادخال الرقم .
للامانة الطريقة كانت في المنتدى القديم و اعتقد انها للاخ العضو نور نبهان
لنبدأ : اعمل مشروع في واجهة اللغة من النوع Windows Forms نسمي المشروع باسم MyProg
سيحتوي المشروع على 3 نماذج
1- النموذج الاول = Form1 و هو واجهة المستخدم التي يتفاعل معها , سيكون بسيط عبارة عن نموذج يحوي مربع نص و زر امر فقط.
2- النموذج الثاني = Login وهو نموذج دخول المستخدم للبرنامج , و هو يحتوي ايضا على زر امر و مربع نص للتحقق من القيمة فاذا تم التطابق ندخله الى النموذج الرئيسي Form1 .
3- النموذج الثالث = Freg  و هو نموذج خاص بادخال رقم التفعيل للبرنامج و هو يحتوي على مربعي نص و زر امر
    مربع يحتوي على رقم تسجيل النسخة و مربع فارغ المفروض على المستخد ان يدخل فيه رقم التفعيل للنسخة
    بعد ان يرسل لك رقم التسجيل.

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

4- وحدة نمطية = Model1 , سنستخدمها لاضافة الدوال و المتغيرات التي سنتعامل معها.
5- سيكون لدينا متغير نصي في اعدادت البرنامج نسميه RegCode  سنستخدمه لتخزين رقم التفعيل لاجراء المقارنة
   في كل مرة يقلع فيها البرنامج.

الان ناتي الى صور النماذج (اعملها كما بالصور)

النموذج Form1



النموذج Login

 

النموذج Freg




سنتعامل مع مكتبة System.Management و هي مكتبة مضمنة ضمن اللغة سنستفيد من الدوال بداخلها للحصول على رقم اي قطعة للجهاز لذلك سنستوردها للمشروع و نتعامل معها
اولا ناتي لكود الوحدة النمطية سيحتوي على دالة لتحويل رقم المعالج الى اسكي و دالة للتمويه بتحويله الى يونيكود
و متغير نخزن به رقم التسجيل.
دوال الوحدة النمطية Model1



كود :
Module Module1

   Public REGCODE As String 'كود التسجيل


   'التحويل الى الاسكي
   Function Str2Int(ByVal InStrng As Object) As String
       Dim StrLn As Integer
       Dim Cntr As Integer
       Dim NewStr As String
       Str2Int = ""
       StrLn = Len(InStrng)
       If StrLn = 0 Then Exit Function
       NewStr = ""
       For Cntr = 1 To StrLn
           Select Case Mid(InStrng, Cntr, 1)
               Case "0" To "z"
                   NewStr = NewStr & Asc(Mid(InStrng, Cntr, 1))

           End Select
       Next Cntr
       Str2Int = NewStr
   End Function

   'دالة التشويش
   Public Function Obfuscate(ByVal origText As String) As String
       Dim textBytes As Byte() = System.Text.Encoding.Unicode.GetBytes(origText)
       For counter As Integer = 0 To textBytes.Length - 1

           If (textBytes(counter) > 31) And (textBytes(counter) < 127) Then
               textBytes(counter) += CByte(counter Mod 31 + 1)
           End If

           If (textBytes(counter) > 126) Then
               textBytes(counter) -= CByte(95)
           End If

       Next counter
       Return System.Text.Encoding.Unicode.GetChars(textBytes)
   End Function


End Module

الان ناتي الى النموذج Login سنجعل عملية الفحص تتم في هذا النموذج و هو النموذج الاول في البرنامج (اي النموذج الذي يقلع منه التطبيق)
نستورد المكتبة System.Management في بدايته و من ثم نعرف مجموعة متغيرات نصية سنتعامل معها كما يلي



كود :
Imports System.Management

Public Class Login

   'متغيرات لتفعيل البرنامج
   Dim Idp As String
   Dim Idp1 As String
   Dim idp2 As String



الان في حدث التحميل للنموذج Login

كود :
   Private Sub Login_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       'البحث عن رقم المعالج و تخزينه
       Dim Searcher As ManagementObjectSearcher
       Searcher = New ManagementObjectSearcher("Select ProcessorId From Win32_Processor")
       For Each Device As ManagementObject In Searcher.Get
           For Each Prop As PropertyData In Device.Properties
               Idp = (Prop.Value.ToString)
           Next
       Next
       '---------
       Idp = Obfuscate(Idp)
       Idp = Str2Int(Idp)
       '------------------
       Idp1 = Obfuscate(Idp)
       Idp1 = Str2Int(Idp1)
       Idp1 = (Idp1.Substring(0, 13))
       If My.Settings.RegCode = Idp1 Then
           REGCODE = Idp.Substring(2, 4)
           REGCODE += My.Settings.RegCode.Substring(3, 3)
       Else
           Freg.ShowDialog()
           Me.Close()
       End If

   End Sub

مجرد اكواد عادية للبحث عن رقم المعالج و استخدام الدوال التي في Model1 لاجراء عمليات التشويش
و من ثم مقارنة الرقم الناتج مع الرقم المحفوظ في اعدادت البرنامج,و اذا نجح الامر نشغل البرنامج او نطالب المستخدم بادخال رقم التفعيل في النموذج Freg 

اول الامور التي ستجري عند المستخدم هي تشغيل البرنامج و بالتالي سيتم مطالبته بتفعيل البرنامج 
هذا يقودنا الى نموذج التفعيل Freg 
ناتي الى النموذج Freg نفس الحركة في النموذج السابق مع زيادة بسيطة و هي اننا سنقوم فقط باخذ 14 محرف من رقم المعالج لان رقم المعالج طويل جدا.

كود :
Imports System.Management
Public Class Freg
   Dim idp As String ' رقم المعالج
   Dim idp1 As String ' رقم التسجيل
   Dim idp2 As String ' رقم التفعيل

   Private Sub Freg_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       Try
           Dim Searcher As ManagementObjectSearcher
           Searcher = New ManagementObjectSearcher("Select ProcessorId From Win32_Processor")
           For Each Device As ManagementObject In Searcher.Get
               For Each Prop As PropertyData In Device.Properties
                   idp = (Prop.Value.ToString)
               Next
           Next

           'تشويش للرقم
           idp = Obfuscate(idp)
           'التحويل الى اسكي
           idp = Str2Int(idp)
           'رقم التسجيل
           TextBoxReg.Text = idp

           'تشويش الرقم
           idp1 = Obfuscate(idp)
           'تحويل رقم التفعيل الى اسكي
           idp1 = Str2Int(idp1)
           'اقتصاص 14 رقم
           idp1 = (idp1.Substring(0, 13))
       Catch ex As Exception

       End Try

   End Sub
الكود مشروح و لا يحتاج الى المزيد
الان في زر التفعيل الكود التالي

كود :
   Private Sub Freg_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
       Try
           idp2 = idp1

           If TextBoxUser.Text = "" Then
               MessageBox.Show("رقم التفعيل غير صحيح" & vbCrLf & "سيتم انهاء البرنامج", "تفعيل البرنامج", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
               End
           End If

           If TextBoxUser.Text <> idp2 Then
               MessageBox.Show("رقم التفعيل غير صحيح" & vbCrLf & "سيتم انهاء البرنامج", "تفعيل البرنامج", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
               End
           Else
               MessageBox.Show("تم تفعيل البرنامج بنجاح" & vbCrLf & "سيتم انهاء البرنامج , اعد تشغيله من فضلك", "تفعيل البرنامج", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
               My.Settings.RegCode = TextBoxUser.Text
               My.Settings.Save()
               End
           End If

       Catch ex As Exception

       End Try

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

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



الان ناتي لموضوع الحماية الذي تكلمنا عنه سابقا , المهمة ستكون عبارة عن استخدام احد برامج الحماية التي تقوم بتشفير المكتبات و الملفات البرمجية و دمجها و غيرها من الامور التي تساعد على تامين الحماية اللازمة للبرنامج
البرنامج المستخدم هو DotFuscator و الذي ياتي مرفقا مع Visual Studio و هو برنامج ياتي بامكانيات محدودة لكنه يؤدي الغرض بشكل جيد بالنسبة لموضوعنا
نفتح المشروع الذي نعمل عليه حاليا Myprog  و نذهب الى قائمة Tools هنا يتواجد برنامجنا و نتابع كما بالصورة



بعد عمل المطلوب وافق على كل شيئ يظهر امامك و بعدها سيقوم البرنامج بالمهمة المطلوبة منه
لتجد ان مجلد جديد اضيف داخل مجلد Debug الخاص بالبرنامج و المجلد اسمه Dotfuscated
و هو يحتوي على ملف التطبيق الخاص بنا بالاضافة الى ملف Xml  اذا القيت عليه نظرة ستعرف كيف قام بتشفير الدوال و الكائنات الخاصة بالبرنامج.
يبقى الشق المتعلق بفك ترميز البرنامج و معرفة ما حصل
في العادة يقوم القراصنة باستخدام برامج لفك ترميز البرامج و اجراء المطلوب لتشغيل البرنامج
كوني لست منهم و لا اعرف الكثير عن اعمالهم , لكن وجب الاطلاع و لو بالقليل 
ما توفر لدي هو برنامج NetReflector  و هو اشهر برنامج لفك تطبيقات الدوت نت
النسخة التي لدي لا تدعم نسخة اطار الدوت نت الذي املكه على اي حال هي ترينا الفرق بين البرنامج المحمي و غير المحمي
الشرح كما بالصور








تابع ......
من هنا تحدد اللغة و اصدارة FrameWork




كما ترى كل شيئ مكشوف و امكانية تهكير البرنامج كبيرة جدا , بل ان البرنامج مفتوح امام اقل الهكر خبرة
الان دعنا نفتح التطبيق الذي تم عليه التشفير و الموجود في مجلد Dotfuscated لنرى كما بالصورة


طبعا ستلاحظ ان هناك قصر في الحماية فما زالت اعدادت البرنامج مفتوحة و هذا ناتج عن البرنامج كونه ليس كاملا
بامكانك شراء الاداة من الموقع او طلب رقم تسجيل لها , لا اعرف بالضبط ما الذي ساحصل عليه منهم و بماذا يفيدني لاني قد طلبت رقم تفعيل للنسخة و بانتظار البريد من الشركة و الى الان لم يصلني شيئ
ودة رابط تحميل البرنامج
http://adf.ly/1d1Gzh
متنساش تعمل تخطى الاعلان  او skip ad

ليست هناك تعليقات :

إرسال تعليق

تعليم فجول بيسك قواعد بيانات صيانة حاسب الى صيانة الكمبيوتر صيانة الجوال صيانة المحمول صيانة الموبيل البرمجة شرح مواقع شرح برامج دورة ساب تعليم الساب دورة الاوريكال تعليم الاوريكال العاب كمبيوتر العاب حديثة العاب فلاش فديو تعليم كيفية

أحدث المشاركات

جوجل

تابعنا على الفيس بوك

[فنون][fbig1][#fhf]

أحدث فيديوهات البرمجة

احدث فيديوهات شرح البرامج

[فنون][column2]

تابعنا على فيسبوك

[فنون][fbig2]

أحدث فيديوهات قواعد البيانات

أخبار في صور

[فنون][gallery]

أخبار في صور

[فنون][gallery][#ere]

مقالات

[فنون][fbig1][#ffd]

الإدارة

[فنون][fbig1]

شخصيات و مشاهير

[فنون][fbig1][#aff]

صوت و صورة

[فنون][column1]

عدد الزوار الان

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Bidvertiser

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

ضع اعلانك هنا

.:: الاعلانات ::.
مركز تحميل الصور مركز تحميل الصور مركز تحميل الصور مركز تحميل الصور مركز تحميل الصور مركز تحميل الصور مركز تحميل الصور مركز تحميل الصور
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
.:: اعلان متحرك مرة واحدة ::.
مركز تحميل الصور
.:: اعلان متحرك مرة واحدة ::.
اكسب 25 دولار اضغط على الصورة ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ اكسب 25 دولار اضغط على الصورة اكسب 25 دولار اضغط على الصورة

اعلانات المدونة

.:: الاعلانات ::.

المتواجدون الان

ـــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــــــــــد

هذا الموقع محمى

الأخبار الرياضية

سياحة

الكاريكاتير

فنون

فديوهات

[فنون][videos]

جميع الحقوق محفوضة لدى مدونة سالم للبرمجيات 2016 | Privacy-Policy| سياسة الخصوصية

تصميم : مدونة سالم للبرمجيات