![]() |
|
طرق حماية البرنامج من الاستنساخ - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : طرق حماية البرنامج من الاستنساخ (/showthread.php?tid=5152) |
طرق حماية البرنامج من الاستنساخ - RaggiTech - 05-10-12 كاتب الموضوع : FlyToAbd
سنناقش هنا حماية البرامج وهذا الموضوع هو توسعة للموضوع http://vb4arb.com/vb/showthread.php?970 واول اجراء هو الحماية برقم القرص كود : [SIZE=2][color=#0000ff]PublicFunction[/color] HardCode() [color=#0000ff]As[/color][/SIZE][SIZE=2][COLOR=#0000ff]StringKD هو رقم القرص الصلب نجده من الدالة SN هو الرقم الذي يمثل معكوس KD ويمكن حسابه من Not KD هذا هو سر الفكرة مع اعادة جعل عدد مراتبه مساوي لثمانية نحفظ SN في قاعدة البيانات وعند تشغيل البرنامج نجلب SN من القاعدة ثم نقرأ KD من خلال الدالة اعلاه ونختبر Not SN=KD فاذا كانت النتيجة True فان البرنامج غير مسروق والا فهو اما مسروق او تم تنصيبه لاول مرة فنظهر رسالة للمستخدم تعطيه قيمة KD وتطلب منه تسليمه الى البائع للبرنامج ويطلب منه كتابة الرقم الذي يعطيه البائع والذي هو Not KD فعندما يدخل SN نحفظه في قاعدة البيانات ونفحص Not SN=KD اما يكون صحيح او نعيد عرض الرسالة وامكانية انهاء البرنامج عيوب الفكرة اعلاه انه لم عملنا Format للقرص او نصبنا Windows عليه من جديد سيتغير رقم القرص وعليه سيضطر المستخدم للاتصال بك لتعطيه مفتاح جديد للبرنامج كود : [SIZE=2][color=#0000ff]Public[/color][/SIZE][SIZE=2][color=#0000ff]Shared[/color][/SIZE][SIZE=2][color=#0000ff]Function[/color][/SIZE][SIZE=2] MacAddress() [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][COLOR=#0000ff]Stringطرق حماية البرنامج من الاستنساخ - RaggiTech - 05-10-12 عملية الحماية باختصار انه لدينا برنامج يتم تنصيبه على جهاز فيجب ان يعمل عليه ولا يعمل البرنامج على اي جهاز اخر (هذا يعني انه تم نسخه الى الجهاز الاخر) فيجب ان يجد البرنامج معلومة في الجهاز الذي يعمل عليه ولا يجدها في غيره وبذلك سيقرر انه نسخة اصلية ام مستنسخة الفكرة الاولى التي شرحتها تعتمد على قيمة في الجهاز يتم توليد مفتاح من تلك القيمة ويحفظ المفتاح في الجهاز وعندما يعمل البرنامج يقرأ المفتاح ويقرأ القيمة الموجودة في الجهاز ويقارن بعد ارجاع المفتاح لقيمته الاصلية... ا يوجد عيب في هذه العملية لاننا عندما نجد ان المقارنة غير صحيحة سنتوقع احدى حالتين اما البرنامج مسروق (مستنسخ) او اصلي ولكن يعمل لاول مرة وبذلك سنتعامل معه على انه اصلي يعمل لاول مرة فسنعطية القيمة الموجودة في الجهاز ونقول له اعطيها للمبرمج سيعطيك المفتاح وعند استلام البرنامج للمفتاح يتعامل معه كما موضح سابقا... العيب هو اننا نظهر امام المستخدم قيمة في الجهاز ممكن ايجدها الهكر ويعرف اننا نعتمد عليها ويبدأ بالبحث وبذلك اول خطوة نخطوها الى الامام هي اننا نظهر للمستخدم القيمة ولكن تم تمريرها على فلتر او قناع وبشرط يمكن ارجاع القيمة الاصلية من قبل المبرمج هنا اصبح لدينا ثلاث مفاتيح علينا تسميتها وتعرفها لكي يمكن التناقش حولها KeyBase المفتاح الاساسي هذا سيحمل القيمة الموجودة في الجهاز وهي مثلا رقم القرص الصلب او عنوان كارت الشبكة وتكون هذه القيمة يمكن قراءتها من خلال برنامج وهي ليست سرية KeyUser المفتاح الذي يراه المستخدم وهو يتولد من KeyBase من خلال احد الفلاتر او الاقنعة التي يتم شرح مجموعة منها KeyCode وهو المفتاح الذي سيعطيه المبرمج للمستخدم لكي يمكنه تشغيل البرنامج ويتولد من Key User ويمكن مقارنته مع KeyBase لمعرفة صلاحية النسخة طرق حماية البرنامج من الاستنساخ - RaggiTech - 05-10-12 اولا ننقل مشاركة الاخ mali الى هنا لمراجعتها من قبل الاخوة المتابعين هذا الكود يفضل لأنه له مطلق الحرية في الاختيار السيريال للهارد ديسك وحفظه في مكان والتحكم به Imports System.Management Imports System.Management.Instrumentation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\******* Dim HDinformation As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia") Dim HD As ManagementObject For Each HD In HDinformation.Get() TextBox1.Text = HD("SerialNumber").ToString() Next طرق حماية البرنامج من الاستنساخ - RaggiTech - 05-10-12 المثال العملي سيكون مبسطا جدا بحيث فقط ننظم العملية وبذلك سيكون Interface المثال على شكل صندوق ادخال InputBox ونحن نعلم ان شكله غير جيد خاصة اذا استخدمنا الفكرة مع مشروع له واجهة مستخدم جميلة أو حديثة وكذلك سنحفظ المفتاح في ملف نصي بسيط بينما عندما يتم تطبيق هذه الفكرة سيتم حفظ هذا المفتاح في قاعدة البيانات اذا النظام فيه قاعدة بيانات ويتم حفظه في Registry اذا كان النظام بدون قاعدة بيانات وممكن ايضا في Resources (هل تحبون عمل موضوع عن كل طريقة حفظ ومبرراتها؟؟؟؟) كود : Public Class Form1شغل البرنامج وأجب على الرسائل بموافق وعند عرض ادخل المفتاح المطلوب وسوف يعطيك مفتاح (جرب ان تجيبه بأي شيء ستجده لا يشغل البرنامج) تاخذه الى الالة الحاسبة وتختار Hex في الالة ثم تلصق المفتاح اللي اخذته من البرنامج وتضغط على XOR ثم 98765432 ثم = سيظهر لك ناتج انسخه ولاحظ انه هو رقم القرص والصقه في البرنامج واجب بموافق تكون فتحت الحماية ... جرب شغل البرنامج لثاني مرة او لثالث مرة تجده مفتوحا |