تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقال- مقدمة الي حماية البرامج
#1
كاتب الموضوع : silverlight

بسم الله الرحمن الرحيم


السلام عليكم ورحمة الله وبركاته

مقدمـــــــــــة:


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

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

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

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

ماذا تحتاج لكي تحمي برامجك:

أعتقد أنك لكي تحمي برامجك بشكل مناسب فأنت تحتاج الي فهم ودراسة المسميات التالية:

1- تحتاج الي أن تدرس وبعناية فائقة كيفية ان تقوم بتشفير وفك التشفير للبيانات لذلك أنت تحتاج الي فهم كيفية التعامل مع الكلاسات الموجودة في System.Security.Cryptography.dll

2- تحتاج الي تحديد أين ستقوم بتخزين Serial الخاص ببرنامجك أو أين ستقوم بحفظ أي معلومات أخري هامة مطلوبة للتأكد من أن برنامجك قد تم شراؤه بشكل قانوني لذلك أنت تحتاج الي فهم ودراسة كيفية التعامل مع Registry أو مع الملفات Files

3- تحتاج الي فهم ودراسة Dates & Timer Classes لأن هذا هام جدا في تحديد الفترات الزمنية التي تمنحها لتجربة برامجك

4- بالتأكيد ستحتاج الي أن تكون ملما ببعض الأشياء الأخري مثل التعامل مع System.Text أو MemoryStream أو Bytes

5- تحتاج الي ان تتعلم كيفية بناء الكلاسات وتحويل الكلاسات الي مكتبات libraries حتي تستطيع أن تستخدمها من داخل برنامجك أو من داخل Setup الخاص ببرنامجك

6- بالنهاية عليك أن تكون ملما بمشاكل نظام التشغيل Operating System الذي سوف يعمل عليه برنامجك وملما أيضا بجميع Security التي يحتاجها نظام التشغيل حتي يعمل برنامجك بالشكل المناسب.

الفكرة:

الفكرة التي يعتمد عليها الموضوع هي بسيطة جدا في مضمونها ويمكن تقسيمها إلي عدة مراحل كالأتي:

المرحلة الأولي:

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

المرحلة الثانية:

بناء برنامج صغير يقوم فيه مستخدم برنامجك بتمرير اسمه مع Serial الذي تفضلت بإعطاؤه له لتفعيل البرنامج وغالبا ما يكون مثل هذا الملف موجودا مع Setup الخاص ببرنامجك وهذه المرحلة يمكن ان نطلق عليها Serial and User Validation

المرحلة الثالثة:

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


قبل أن نبدأ في كتابة الأكواد الخاصة بالمراحل الثلاثة أعلاه علينا أن نكتب مجموعة من الكلاسات ولقد قمت بكتابة جميع الكلاسات علي شكل library باسم RiverNile وهي تتكون من الكلاسات كالأتي:

الكلاس الأول:

سنطلق عليه RiverNileUtility وهذا الكلاس ستجدون به جميغ الدوال التي ربما نحتاج ان نستخدمها من خلال جميع الكلاسات الأخري .

الكلاس الثاني:

هذا الكلاس سنطلق عليه RiverNileData وهو سيمثل أو سيعبر عن البيانات التي نحتاج بأن نعمل لها Encrypt و Decrypt لاحقا.

الكلاس الثالث:

هذا الكلاس سنطلق عليه اسم RiverNileEncryptor وهو سيكون مسئولا بشكل رئيسي عن عمليات التشقير المختلفة أثناء تنفيذ البرنامج وهذا الكلاس بشكل عام يعتمد علي كلاس موجود بالفعل في الدوت نت وهو RijndaelManaged Class وهو مشتق أصلا من SymmetricAlgoritm Class وهناك بعض الكلاسات المماثلة والتي هي مشتقة من SymmetricAlgoritm Class وهي علي التوالي RC2CryptoServiceProvider و DESCryptoServiceProvider و TripleDESCryptoServiceProvider وبذلك يمكنكم التعديل علي الكود الأصلي إن أردتم أن تستخدموا اي Algorithm أخر تجدونه مناسبا لكم اكثر لكي يقوم بالتشفير وفك التشفير

الكلاس الرابع:

هذا الكلاس سنطلق عليه RiverNileDates وهو عبارة عن Structure وهو سيمثل أو سيعبر عن التواريخ التي سنحتاج الرجوع اليها للتأكد من تاريخ تركيب البرنامج علي كمبيوتر العميل

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

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


كيف تستخدم المثال الموجود بالمرفقات:


قم بتشغيل المثال سيظهر لك الفورم الرئيسي وهو الهدف منه إختبار المراحل التي تحدثنا عنها أعلاه فقط لاغير

وفي هذا الفورم الرئيسي ستجد ثلاثة باتون وعند الضغط علي الباتون الأول سيظهر لك الفورم الخاص بالمرحلة الأولي وهو KeyGeneration قم بإدخال اسمك او أي إسم اخر في TextBox الأول وهنا سيتم ظهور السيريال المناسب لهذا الإسم أتوماتيكيا في TextBox الثاني

ثم قم بالضغط علي الباتون الثاني بالفورم الرئيسي وهنا سيظهر لك الفورم الخاص بالمرحلة الثانية وهو Validation يمكنك الأن كتابة أو قص ولصق الاسم والسيريال الي هذا الفورم وهنا لو نفذت ذلك بدقة فستظهر لك رسالة تؤكد أنه قد تم حفظ السيريال ولكن لو أدخلت البيانات بشكل خاطئ فستظهر لك رسالة تؤكد أنك يجب ان تشتري سيريال للبرنامج ومن ثم يتم اغلاق Validation Form والبرنامج

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

عموما لقد قمت بتجربة المثال الموجود بالمرفقات مع Windows7 وهو يعمل بشكل جيد.

عملية التسجيل الخاصة يالسيريال واسم المستخدم بالاضافة الي بعض البيانات الأخري يتم تسجيلها في الريجستري الخاص بنظام التشغيل جرب تشغيل برنامج RegEdit ثم اذهب الي HKEY_CURRENT_USER\Software ستجد ان البرنامج اسمه RiverNile ومسجل به بعض البيانات ولكنها Decrypted

.
أرجو أن تدرسوا الأكواد بشكل جيد وكما ترون سيكون من الصعوبة أن أقوم بتوضيح كل سطر في اي كلاس وعموما لقد كتبت فوق كل جزء من الكود توضيح بسيط للهدف من كل جزء بالكلاس ولكنكم يمكنكم أن تسألون ما تشاؤن لاحقا


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


تقبلوا تحياتي
أخوكم عمر


الملفات المرفقة
.rar   SoftwareEvaluationMonitor.rar (الحجم : 162.14 ك ب / التحميلات : 162)
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  حماية البرامج ابو ليلى 4 970 31-07-16, 01:07 AM
آخر رد: Kian Tech
  مقال- كيفية الاستغناء عن الداتا بيز التقليدية في برامجنا – ألجزء الأول RaggiTech 1 1,242 06-10-12, 12:23 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Property Attributes الجزء الثالث RaggiTech 0 365 06-10-12, 12:20 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Skin Control RaggiTech 0 530 06-10-12, 12:08 AM
آخر رد: RaggiTech
  مقال- كيف تصنع ملفات المساعدة Help Files وتربطها مع برنامجك RaggiTech 0 726 05-10-12, 07:30 PM
آخر رد: RaggiTech
  مقال- تطوير الفورم رسم الفورم باستخدام +GDI وتحريكه Moving و تغيير أبعاده Resize RaggiTech 2 869 05-10-12, 07:00 PM
آخر رد: RaggiTech
  مقال- الكومبو بوكس ComboBox كيف تضيف أيقونات RaggiTech 0 764 05-10-12, 06:54 PM
آخر رد: RaggiTech
  مقال- أفكار في الدوت نت كبف تصنع ColorPicker RaggiTech 0 435 05-10-12, 06:53 PM
آخر رد: RaggiTech
  مقال- أفكار في الدوت نت Overrides DisplayRectangle Property RaggiTech 1 518 05-10-12, 06:50 PM
آخر رد: RaggiTech
  مقال- أفكار في الدوت نت Image To ColorPicker RaggiTech 3 500 05-10-12, 06:48 PM
آخر رد: RaggiTech

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


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