السلام عليكم و رحمة الله
استكمالاً للموضوع : سنعمل مشروع صغير و نقوم بتامين الحماية .
الطريقة التي سنعمل بها هي طلب رقم المعالج في الجهاز و من ثم يتم اخذ هذا الرقم و اجراء تحويل له عبر الاسكي كود و من ثم تمويه الرقم الناتج عبر اليونيكود و من ثم اقتصاص عدد محدد من الحروف من الرقم الناتج و سيكون هذا الرقم هو مفتاح البرنامج و من ثم نخزنه داخل البرنامج , طبعا الطريقة تناسب جهاز واحد فقط حيث الرقم الناتج هو خاص بهذا الجهاز فقط , لان البرنامج كل مرة يعمل بها يقوم بالتحقق من رقم المعالج و من ثم يجري مقارنة بين الرقم الناتج و الرقم المخزن و اذا لم تتم المطابقة يطالب المستخدم بادخال الرقم .
للامانة الطريقة كانت في المنتدى القديم و اعتقد انها للاخ العضو نور نبهان
لنبدأ : اعمل مشروع في واجهة اللغة من النوع Windows Forms نسمي المشروع باسم MyProg
سيحتوي المشروع على 3 نماذج
1- النموذج الاول = Form1 و هو واجهة المستخدم التي يتفاعل معها , سيكون بسيط عبارة عن نموذج يحوي مربع نص و زر امر فقط.
2- النموذج الثاني = Login وهو نموذج دخول المستخدم للبرنامج , و هو يحتوي ايضا على زر امر و مربع نص للتحقق من القيمة فاذا تم التطابق ندخله الى النموذج الرئيسي Form1 .
3- النموذج الثالث = Freg و هو نموذج خاص بادخال رقم التفعيل للبرنامج و هو يحتوي على مربعي نص و زر امر
مربع يحتوي على رقم تسجيل النسخة و مربع فارغ المفروض على المستخد ان يدخل فيه رقم التفعيل للنسخة
بعد ان يرسل لك رقم التسجيل.
طبعا في الطرف المقابل سيكون لديك برنامج صغير يقوم بتفكيك رقم التسجيل و اصدار رقم التفعيل و من ثم تشغيل البرنامج.
4- وحدة نمطية = Model1 , سنستخدمها لاضافة الدوال و المتغيرات التي سنتعامل معها.
5- سيكون لدينا متغير نصي في اعدادت البرنامج نسميه RegCode سنستخدمه لتخزين رقم التفعيل لاجراء المقارنة
في كل مرة يقلع فيها البرنامج.
الان ناتي الى صور النماذج (اعملها كما بالصور)
النموذج Form1
النموذج Login
النموذج Freg
سنتعامل مع مكتبة System.Management و هي مكتبة مضمنة ضمن اللغة سنستفيد من الدوال بداخلها للحصول على رقم اي قطعة للجهاز لذلك سنستوردها للمشروع و نتعامل معها
اولا ناتي لكود الوحدة النمطية سيحتوي على دالة لتحويل رقم المعالج الى اسكي و دالة للتمويه بتحويله الى يونيكود
و متغير نخزن به رقم التسجيل.
دوال الوحدة النمطية Model1
الان ناتي الى النموذج Login سنجعل عملية الفحص تتم في هذا النموذج و هو النموذج الاول في البرنامج (اي النموذج الذي يقلع منه التطبيق)
نستورد المكتبة System.Management في بدايته و من ثم نعرف مجموعة متغيرات نصية سنتعامل معها كما يلي
الان في حدث التحميل للنموذج Login
مجرد اكواد عادية للبحث عن رقم المعالج و استخدام الدوال التي في Model1 لاجراء عمليات التشويش
و من ثم مقارنة الرقم الناتج مع الرقم المحفوظ في اعدادت البرنامج,و اذا نجح الامر نشغل البرنامج او نطالب المستخدم بادخال رقم التفعيل في النموذج Freg
اول الامور التي ستجري عند المستخدم هي تشغيل البرنامج و بالتالي سيتم مطالبته بتفعيل البرنامج
هذا يقودنا الى نموذج التفعيل Freg
ناتي الى النموذج Freg نفس الحركة في النموذج السابق مع زيادة بسيطة و هي اننا سنقوم فقط باخذ 14 محرف من رقم المعالج لان رقم المعالج طويل جدا.
الكود مشروح و لا يحتاج الى المزيد
الان في زر التفعيل الكود التالي
الكود بسيط جدا هو اجراء تفعيل للبرنامج و فق الرقم المعطى للمستخدم بعد اجراء المقارنة المطلوبة
بالنسبة للفورم Form1 لا يحتوي شيئ لاننا افترضنا ان هذا النموذج هو واجهة التطبيق الخاصة بالمستخدم اذ لا يسمح بالوصول اليه الا بعد اجراء التفعيل .
اما بالنسبة لبرنامج اصدار مفاتيح التفعيل ارفقه مع هذا البرنامج يمكنك الاطلاع عليه و استخدامه اذا ما احببت اعتماد هذه الطريقة
الان ناتي لموضوع الحماية الذي تكلمنا عنه سابقا , المهمة ستكون عبارة عن استخدام احد برامج الحماية التي تقوم بتشفير المكتبات و الملفات البرمجية و دمجها و غيرها من الامور التي تساعد على تامين الحماية اللازمة للبرنامج
البرنامج المستخدم هو DotFuscator و الذي ياتي مرفقا مع Visual Studio و هو برنامج ياتي بامكانيات محدودة لكنه يؤدي الغرض بشكل جيد بالنسبة لموضوعنا
نفتح المشروع الذي نعمل عليه حاليا Myprog و نذهب الى قائمة Tools هنا يتواجد برنامجنا و نتابع كما بالصورة
بعد عمل المطلوب وافق على كل شيئ يظهر امامك و بعدها سيقوم البرنامج بالمهمة المطلوبة منه
لتجد ان مجلد جديد اضيف داخل مجلد Debug الخاص بالبرنامج و المجلد اسمه Dotfuscated
و هو يحتوي على ملف التطبيق الخاص بنا بالاضافة الى ملف Xml اذا القيت عليه نظرة ستعرف كيف قام بتشفير الدوال و الكائنات الخاصة بالبرنامج.
يبقى الشق المتعلق بفك ترميز البرنامج و معرفة ما حصل
في العادة يقوم القراصنة باستخدام برامج لفك ترميز البرامج و اجراء المطلوب لتشغيل البرنامج
كوني لست منهم و لا اعرف الكثير عن اعمالهم , لكن وجب الاطلاع و لو بالقليل
ما توفر لدي هو برنامج NetReflector و هو اشهر برنامج لفك تطبيقات الدوت نت
النسخة التي لدي لا تدعم نسخة اطار الدوت نت الذي املكه على اي حال هي ترينا الفرق بين البرنامج المحمي و غير المحمي
الشرح كما بالصور
تابع ......
من هنا تحدد اللغة و اصدارة FrameWork
كما ترى كل شيئ مكشوف و امكانية تهكير البرنامج كبيرة جدا , بل ان البرنامج مفتوح امام اقل الهكر خبرة
الان دعنا نفتح التطبيق الذي تم عليه التشفير و الموجود في مجلد Dotfuscated لنرى كما بالصورة
طبعا ستلاحظ ان هناك قصر في الحماية فما زالت اعدادت البرنامج مفتوحة و هذا ناتج عن البرنامج كونه ليس كاملا
بامكانك شراء الاداة من الموقع او طلب رقم تسجيل لها , لا اعرف بالضبط ما الذي ساحصل عليه منهم و بماذا يفيدني لاني قد طلبت رقم تفعيل للنسخة و بانتظار البريد من الشركة و الى الان لم يصلني شيئ
استكمالاً للموضوع : سنعمل مشروع صغير و نقوم بتامين الحماية .
الطريقة التي سنعمل بها هي طلب رقم المعالج في الجهاز و من ثم يتم اخذ هذا الرقم و اجراء تحويل له عبر الاسكي كود و من ثم تمويه الرقم الناتج عبر اليونيكود و من ثم اقتصاص عدد محدد من الحروف من الرقم الناتج و سيكون هذا الرقم هو مفتاح البرنامج و من ثم نخزنه داخل البرنامج , طبعا الطريقة تناسب جهاز واحد فقط حيث الرقم الناتج هو خاص بهذا الجهاز فقط , لان البرنامج كل مرة يعمل بها يقوم بالتحقق من رقم المعالج و من ثم يجري مقارنة بين الرقم الناتج و الرقم المخزن و اذا لم تتم المطابقة يطالب المستخدم بادخال الرقم .
للامانة الطريقة كانت في المنتدى القديم و اعتقد انها للاخ العضو نور نبهان
لنبدأ : اعمل مشروع في واجهة اللغة من النوع 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
ليست هناك تعليقات :
إرسال تعليق