منظومة الحماية بالإعتماد على License File
#1
السلام عليكم .
الليوم اقدم لكم MH License Management Beta او منظومة الحماية Beta بالإعتماد على License File والذي يقوم بانتاج ملفات ال Licenses .
يمكن إستعماله لانتاج برامج Trials او Full version او بمعنى اخر Shareware او نسخة كاملة .

بالاعتماد على :
* الرقم التسلسلي لل Hard drive او ال Serial Number الحقيقي ليس الخاص بال Volume . لا تحتاج هذه الخاصية ل admin privileges .
* المعلومات الخاصة بال BIOS + ال Serial Number الحقيقي لها كذلك هذه الخاصية لا تحتاج ل admin privileges .
* المعلومات الخاصة بال CPU + ال Serial Number الحقيقي لها إن وجد كذلك هذه الخاصية لا تحتاج ل admin privileges .
* إنتاج معرّف وحيد وخاص بالجهاز او ال Machine Unique ID بالاعتماد على المعلومات اعلاه . وبناً على هذا المعرّف او ال Machine Unique ID يمكن إنتاج ملف License للزبون ; بحيث هذا ال License file لا يمكن نقله لجهاز اخر غير الجهاز المعتمد في انتاج ال Machine Unique ID .
* إستعمال Vendor ID او المعرف الخاص بك كبائع المنتج .

وفي الاخير يُرسل ال License Key للزبون مع ملف ال License .
لفهم الدوال المستعملة الرجوع الى ملف MHLicInterface.pas
- ملاحظة :
ملف ال License الناتج مشفر.
تمت تجربة المنظومة مع WinXP و ال Win7 مع او بدون admin privileges .

وفي الاخير كما يقال لا توجد حماية 100% , والكمال لله وحده سبحانه .
في انتظار نتائج تجاربكم وإقتراحاتكم .
والسلام عليكم ورحمة الله وبركاته

تقبلوا تحياتي محمد


الملفات المرفقة
.rar   readme.rar (الحجم : 278 بايت / التحميلات : 258)
.rar   samples.rar (الحجم : 200.93 ك ب / التحميلات : 507)
.rar   DLL_File.rar (الحجم : 164.24 ك ب / التحميلات : 520)
.rar   License_Generator.rar (الحجم : 182.76 ك ب / التحميلات : 521)
[-] كل من 1 user says قال شكرا ل mohfa على المشاركة المفيدة
  • أبو معاذ
الرد
#2
وعليكم السلام ورحمة الله
إقتباس :لا تحتاج هذه الخاصية ل admin privileges .
غير أنها بحاجة إلى تفعيل خاصية S.M.A.R.T
http://www.delphi4arab.net/forum/showthr...p?tid=4240
والله أعلم.
الرد
#3
نظرة سريعة على الامثلة الموجودة داخل المجلد samples :
المشروع Generate User Info :
يمكن بناء تطبيق بناءً على هذا المثال تكون مهمته الحصول على المعلومات المطلوبة من الزبون كـ الرقم التسلسلي لل HDD , الاسم ...الخ وبالطبع الحصول على ال Machine Unique ID .
بعد ذلك تُرسل لك هاته المعلومات لإنتاج ال License File .

المشروع Is For This Application :
هذا المثال يعطي نظرة سريعة عن كيفية التحقق من ان هذا ال License File مخصص لهذا التطبيق , ويمكن استعماله للتحقق من انه لم يتم التعديل او التغيير على التطبيق وسوف يتم زيادة خصائص اخرى ان شاء الله تخص هذه النقطة .

المشروع Is For This Owner :
هذا المثال يبين كيفية التاكد من ان هذا ال License File يخص هذا الزبون وليس شخص اخر , عملية التاكد تعتمد على اربع نقاط او واحد منها :
تحقق من ان :
1: هذا هو الزبون صاحب المعلومات المخزنة في ال License file بناء على اسمه , يعني يجب على الزبون ادخال اسمه صح كما تم إعتماده في إنشاء ال License File .
2 : هذا هو الزبون صاحب المعلومات المخزنة في ال License file بناء على اسم المؤسسة , يعني يجب على الزبون ادخال اسم المؤسسة صح كما تم إعتماده في إنشاء ال License File .
3 : هذا هو الزبون صاحب المعلومات المخزنة في ال License file بناء على عنوان الايميل , يعني يجب على الزبون ادخال عنوان الايميل صح كما تم إعتماده في إنشاء ال License File .
4 : هذا هو الزبون صاحب المعلومات المخزنة في ال License file بناء على Machine Uniqe ID , يعني يجب الحصول وحساب معرف الجهاز او ال Machine Unique ID بالطريقة الصحيحة لتتم المقارنة , وهذا بدون تدخل الزبون لان المنظومة تقوم بالحساب بطريقة ذاتية بناء على الطريقة التي تمت بها عند إنشاء ال License file .
5 : : هذا هو الزبون صاحب المعلومات المخزنة في ال License file بناء على الرقم التسلسلي الحقيقي لل HDD .

المشروع License Type : هذا المشروع يبين طريقة الحصول على طبيعة هذا ال License file هل هو Trial او Full وكذلك الحصول على معلومات الزبون المخزنة في ال License File .

kachwahed كتب :
غير أنها بحاجة إلى تفعيل خاصية S.M.A.R.T
المنظومة تقوم بعملية التحقق من S.M.A.R.T SUPPORT .
هي عملية ذاتية

اخي kachwahed هل جربتها ام لا ؟
الرد
#4
السلام عليكم ورحمة الله

لم اتصفح المرفق بعد، عند قرائة سريعة للمحتوى لم تذكر شيئ عن :
1- التاريخ او مدة صلاحة الLicense
2- امكانية اكثر من مستخدم/جهاز للLicense
3- امكانية استخدام موقع للتحقق من الLicense

أمثلة للتوضيح أكثر
1-
صلاحية الLicense متعلقة بالتاريخ:
صالحة لمدة سنة ونصف
صالحة الى حد تاريخ معين
مثلا زبون اشترى تطبيق قواعد بيانات سنة 2008 لا يمكنه استخدامه لانشاء قاعدة بيانات لسنة 2007
2-
عدد مستخدمي الLicense:
برنامج/تطبيق/منظومة قواعد بيانات من نوع خادم/عميل الLicense لثمانية اجهزة
زبون لديه شبكة محلية بها عشرة اجهزة يمكن لثمانية منها العمل بنفس الوقت
3-
سكريبت php متعلق بالLicense يضعه المطور/المبرمج بموقعه حيث يمكن للزبون انطلاقا من الموقع انشاء ملف الLicense أو التحقق منها

الرد
#5
جربهتا الآن سريعا:
رسالة خطأ AV عند (السطر 78، الملف samples\Generate User Info\Unit1.pas):
كود :
Label2.Caption:=MH_GenerateMachineID(True,True,True);
وخطأ آخر عند تصدير ملف ini

بعض الملاحظات:
- الخطوات طويلة نوعا ما
- صيانة المتغيرات النصية (دعم العربي، حذف الفراغات Trim، حالة الأحرف...)
- تسهيل الاستخدام (توفير SDK)
- أفكار أخرى (عدد الأجهزة في الشبكة، حسب الجهاز HDD أو Flash أو كليهما...)
- اعتماد أرقام عشوائية تحذف عند الاسترجاع (Random)
- حاول جعله في كائن (TMHLicense مثلا) مع خيار تثبيته كمكون
إن أضفت سرقة بعض البايتات ثم إضافتها بطريقة ديناميكية سيكون رائع...
ثم لماذا PECompact؟
المفتاح يبدو Hex لماذا؟ أيضا ينبغي توليد مفتاح قابل للتداول ومتوسط الطول

إقتباس :المنظومة تقوم بعملية التحقق من S.M.A.R.T SUPPORT .
هي عملية ذاتية
جيد، وماذا إذا لم تكن الخاصية مفعله؟
هل ستقوم بتفعيلها أم ستضطر إلى استخدام WMI وهنا تحتاج إلى صلاحيات على Vista/7

بالتوفيق.

الرد
#6
اولا شكرا على هذه الردود :
اخي محمد :
فيما يخص النقطة 3 انا اعمل عليها بحيث في النسخة القادمة سوف تكون هناك إمكانية ارسال معلومات الزبون تلقائيا ان تم تفعيلها الى الموقع بحيث تعتمد العملية على ارسال المعلومات الى قاعدة البيانات .
اما إنشاء ملف ال License فهذا يعود الى صاحب التطبيق .
وسوف ارى مايكنني فعله .
اخي kachwahed المنظومة لاتعتمد كليا على S.M.A.R.T فهناك دوال اخرى تعتمد عليها .
فيما يخص الخطاء فهو يخص ال BIOS حاول تغيير هذا :
كود :
Label2.Caption:=MH_GenerateMachineID(True,True,True);
الى هذا :
كود :
Label2.Caption:=MH_GenerateMachineID(True,True,False);

هذه النقطة لم افهما جيدا :
إقتباس :- اعتماد أرقام عشوائية تحذف عند الاسترجاع (Random)

شكرا لاخي Anter2010 على تنبيهي لهذه النقطة والتي تم حلها باذن الله في النسخة الحالية والتي سوف اقوم بوضعها قريبا ان شاء الله .
تقبلوا تحياتي
الرد
#7
إقتباس :هذه النقطة لم افهما جيدا
شيء مثل هذا
بالتوفيق.
الرد
#8
الملف التنفيذي المرفق بالمثال يعمل ويقراء الـ  Machine ID بلاي اي مشكلة
ولكن عند ترجمته بالدلفي عندي لايقراء وباستخدام الـ Debug لاحظت انه يتوقف على مشكلة في تحميل المكتبة MH_Licenser.dll  عند LoadLibrary ويستمر في العمل حتى ظهور النموذج


كود :
begin
  Result := DLLLoaded;
  if Result then
    exit;
  if HDLL = 0 then
    begin
      HDLL := LoadLibrary (Mhfdll);
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#9
(28-06-2022, 12:53 PM)Delphi4Us كتب : ولكن عند ترجمته بالدلفي عندي لايقراء وباستخدام الـ Debug لاحظت انه يتوقف على مشكلة في تحميل المكتبة MH_Licenser.dll
المرفق غالبا برمج ليعمل مع دلفي 7
لاستخدامه مع إصدارات دلفي أحدث يجب القيام بتعديلات...
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
[-] كل من 1 user says قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • Delphi4Us
الرد


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


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