حماية مشروع VBA في MS Excel

مرحبا! أنا مستخدم عادي لبرنامج MS Excel. ليس مبرمجًا محترفًا ، ولكنه اكتسب خبرة كافية لتثبيت وتجاوز حماية مشاريع VBA.



إخلاء المسؤولية:



توضح هذه المقالة أنواع الحماية لمشاريع VBA من الوصول غير المصرح به. نقاط قوتهم وضعفهم مرتبة.



الغرض من المقالة هو إظهار نقاط القوة والضعف في كل نوع من الحماية لمشروع VBA في MS Office.



عرض توضيحي للأدوات التي تم تطويرها ، في الوظيفة الإضافية لـ Macro Tools VBA ، لإزالة وتثبيت حماية أو أخرى. 



يتم تنفيذ جميع الأدوات باستخدام أدوات VBA القياسية ، دون استخدام مكتبات إضافية. 





اللوحة الرئيسية الوظائف الإضافية ماكرو أدوات VBA



النوع الأول من الحماية - كلمة المرور العادية



وقت الإزالة: على الفور



العيب: الوصول السريع إلى



الأداة القياسية لوحدة VBA المحمية بكلمة مرور (في VBE: لوحة الأدوات -> خصائص VBAProject -> الحماية ). 



أسهل حماية قابلة للإزالة. من السهل العثور على رمز على الإنترنت لإزالة هذه الحماية. 



يمكن إزالة هذه الحماية باستخدام الأداة التالية:





النوع الثاني من الحماية - المشروع غير قابل للعرض



وقت الإزالة: من 10 إلى 15 دقيقة (يدويًا)



العيب: الوصول إلى الكود المصدري لوحدة VBA



أحد أكثر أنواع الحماية شيوعًا. وجدت في 95٪ من الملفات مع حماية وحدة VBA. عندما تحاول فتح مشروع ، يفتح مربع حوار مع الرسالة:  المشروع غير قابل للعرض.





لا يمكن لمعظم مستخدمي Excel إزالة هذه الحماية ، نظرًا لاحتوائها على العديد من الاختلافات والفروق الدقيقة ؛ لإزالتها ، يجب أن يكون لديك فكرة عن الهيكل الداخلي لملف Excel.



يعتمد هذا النوع من الحماية على تغيير المفاتيح:



CMG=«4A488FCC54D054D054D054D0»

DPB=«0B09CE0F8E108E108E»

GC=«CCCE09520B120C120CED»




في الملف vbaProject.bin





باختصار كيف يتم إنشاء هذه الحماية



لإنشاء هذه الحماية ، تحتاج إلى فك ضغط ملف Excel. انتقل إلى مجلد xl في الأرشيف ، وافتح ملف vbaProject.bin ، في نهاية الملف مفاتيحنا ، وقم بتحرير قيم المفاتيح إلى فارغة ، واحفظ الملف. نترجم أرشيفنا مرة أخرى إلى ملف Excel. منجز! 



هذا هو أبسط نسخة من هذه الحماية ، ولكن هناك العديد من التعديلات.



خوارزمية إزالة مشروع الحماية غير قابلة للعرض.



1) قم بفك ضغط الملف التجريبي وانتقل إلى الملف  ... \ xl \ _rels \ workbook.xml.rels









2) في ملف workbook.xml.rels   ، نبحث عن سطر يحتوي على كلمة  vbaProject ، وعادة ما يبدو كالتالي:  /> . في هذا السطر ، نحن مهتمون بالمفتاح الهدف وقيمته. القيمة هي اسم الملف الذي يحتوي على مشروع VBA. يقوم الحامي أحيانًا بتغيير القيم الأساسية إلى printerSettings.bin. واتضح أن الملف مع مشروع VBA يتنكر كملف آخر.



3) افتح الملف المحدد في مفتاح الهدف للتحرير ، وابحث عن مفاتيح CMG و DPB و GC في الملف  . ونقوم بتغيير أي حرف من أسمائهم إلى أي حرف آخر ، على سبيل المثال: CMC ، DPC ، CC... عند البحث ، يجب أن تكون حذرًا ، حيث يمكن للمدافع أن يضع في المشروع نموذجًا بتوقيع يكرر أحد المفاتيح ، على سبيل المثال: DPB = "0B09CE0F8E108E108E" . عند تغييره ، ستتم إزالة مشروع VBA من مصنف Excel. نحفظ الملف ونغلقه.



4) نقوم بترجمة الأرشيف مرة أخرى إلى ملف Excel.



5) قم بتشغيل تطبيق Excel ، قم بما يلي: في مركز التوثيق -> خيارات الماكرو -> تعطيل كافة وحدات الماكرو دون إشعار . أعد تشغيل Excel. هذه العملية ضرورية لمنع الحماية ، والتي يتم تعيينها أحيانًا بواسطة مؤلفي وحدات الماكرو. يتم تنفيذ هذه الحماية على النحو التالي. في وحدة VBA " ThisBook"، يتم إنشاء الإجراءات التي تستجيب لأحداث فتح كتاب أو إغلاق كتاب. تتحقق هذه الأحداث عادةً من وجود كلمة مرور لمشروع VBA ، وحظر الحفظ ، وما إلى ذلك.



6) افتح الملف. إذا تم كل شيء بشكل صحيح ، فسيقسم برنامج Excel على المفاتيح الخاطئة التي قمنا بتحريرها في الفقرة 3. انقر فوق نعم ، حتى تنتهي هذه الرسائل ويغلق مربع الحوار. 



      إذا لم تظهر هذه الرسالة ، فهذا يعني أنك لم تقم بتحرير الملف الذي يحتوي على مشروع VBA.





7) افتح مشروع VBA. بعد كل شيء ، يجب أن يكون مشروع VBA متاحًا.



8) لكن في بعض الأحيان لا يتم إزالة الحماية ، فأنت بحاجة إلى حفظ الملف ، والتحقق من أنه تم حفظه بالفعل! ونفّذ ذلك مرة أخرى الخطوات من 1 إلى 7. عادةً ما يحدث هذا عندما يكون ملف workbook.xml.rels في المفتاح Target   set printerSettings.bin . في حالة الحفظ ، يقوم Excel بتصحيحه إلى قيمة في vbaProject.bin



يمكن لهذه الحماية تثبيت الأداة وإزالتها كما يلي:





النوع الثالث من الحماية - الوحدة النمطية المخفية ، وحدات VBA المخفية



الوقت المطلوب للإزالة: من 15 إلى 20 دقيقة (تحتاج إلى محرر كائن OLE ، عارض التخزين المهيكل ، على سبيل المثال.



العيب: الوصول إلى رمز الوحدة النمطية VBA



عادةً ما يتم العثور على نوع أقل شيوعًا من الحماية مع حماية المشروع غير قابل للعرض. عند تثبيت هذه الحماية ، لا يتم عرض وحدة VBA في مشروع مصنف Excel. يمكنك معرفة وجودها عن طريق تحليل رمز VBA (الذي يستغرق وقتًا!) أو فتح ملف Excel في  OpenOffice أو LibreOffice (يمكنك أيضًا مشاهدة الرمز عند حماية Project is غير قابل للعرض ، لكن هذه الطريقة لا توفر فرصة للحصول على ملف عمل بدون كلمة مرور). 





عرض كود VBA في  LibreOffice



باختصار كيف يتم إنشاء هذه الحماية



لإنشاء هذه الحماية ، تحتاج إلى تحرير الملف باستخدام مشروع VBA - vbaProject.bin  أو printerSettings.bin ، اعتمادًا على الإعدادات الموجودة في الملف ... \ xl \ _rels \ workbook.xml.rels . في نهاية الملف، وخطوط مثل: Module1 = 32، 32، 635، 330، Z يتم حذف . مع أسماء الوحدات المطلوبة.





لإزالة هذه الحماية ، تحتاج إلى استعادة سجلات الوحدة النمطية المحذوفة في ملف vbaProject.bin .



يمكن ضبط هذه الحماية باستخدام الأداة التالية.





النوع الرابع من الحماية - التعتيم على الكود



وقت السحب: غير معروف ، يعتمد على حجم الكود وإعادة استخدام أجزاء من الكود









عيب كود VBA المبهم: الحاجة إلى اختبار الملف بعد التشويش من أجل التشغيل



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



لإلغاء التعتيم على الشفرة ، يجب أن يكون لديك وقت ، وبرامج متخصصة.



يمكن ضبط هذه الحماية باستخدام الأداة التالية.





النوع الخامس من الحماية - رمز النقل إلى dll



وقت الإزالة: غير معروف ، يعتمد على لغة البرمجة والمؤهلات



العيب: الحاجة إلى ملف dll إضافي



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



للوصول إلى كود dll ، يجب أن تكون لديك معرفة خاصة.



خاتمة



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



All Articles