الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مجمعات الدوت نيت Dot Net Assemblies

بدأه محمد سامر أبو سلو في 14 أغسطس 2008 · 7 رد · 1,515 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ما هو المجمع

المجمع هو وحدة توزيع ويكون في أغلب الحالات عبارة عن ملف وهو يمثل الكود المترجم للتطبيق فأي كود سوف تكتبه سيتم تخزينه في النهاية في ملف EXE إن كان تطبيقا أو ملف DLL إن كان مكتبة أو توسعا ويحتوي المجمع على كل ما يحتاجه الدوت نيت لتحميل وتشغيل التطبيق.

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

وصممت المجمعات العامة Public ليتم مشاركتها عبر عدة تطبيقات دوت نيت وتختلف المجمعات العامة عن الخاصة بنقطتين:

• المجمعات العامة تمتلك دوما أسماء قوية strong Names إضافة إلى توقيع رقمي مشفر مرتبط بالمجمع وذلك لضمان أنه أتى من ذلك الموزع أو المصدر المسمى كما يمكن للمجمعات الخاصة أن تمتلك اسما قويا ولكن ذلك ليس ضروريا ويبنى الاسم القوى من أجل نسخة المجمع ورقم الإصدار ومعلومات الثقافة والتوقيع الرقمي وتتضمن الفريموورك أداة لتوليد الأسماء القوية sn.exe تساعدنا في هذه العملية ويتضمن فيجول ستوديو خيارا يمكنك من إضافة التوقيع الرقمي خلال عملية الترجمة

• وتخزن المجمعات العامة في المخزن العام للمجمعات GAC عادة ولكن ذلك لا يمنعك من وضع نسخة من مكوناتك المشتركة في مجلد التنصيب الخاص بتطبيقك ولن تصبح هذه المجمعات مشتركة بحق عندما يتم وضعها داخل الـ GAC ويتواجد الـ GAC في مجلد مسمى assembly داخل مجلد الويندوز وطالما أنه تمت إضافة اسم قوي لمجمع الدوت نيت يمكنك إضافته إلى الـ GAC إما بنسخه للمجلد assembly أو باستخدام الأداة gacutil.exe

كما تسمح لك الدوت نيت بتنصيب عدة إصدارات من نفس المجمع في نفس النظام واستخدام جميع هذه الإصدارات بنفس الوقت من خلال عملية تدعى versioning وهذا ينطبق على التطبيقات EXE والمكتبات DLL والمجمعات الخاصة والمشتركة في الـ GAC ولمعاينة ذلك افتح مستكشف ويندوز وانتقل للمجلد assembly داخل مجلد الويندوز وبتصفح الملفات بعد فرزها حسب اسم المجمع – يظهر ذلك بشكل أوضح عند تنصيب الفريموورك 3.5 – فعند استعراض الملفات الموجودة هناك ستجد أن بعض الملفات مكررة أكثر من مرة كل مرة برقم إصدار مختلف.

ومع أنه في العادة هناك علاقة واحد إلى واحد بين الملفات والمجمعات إلا أنه هناك العديد من الحالات التي يكون فيها المجمع مكون من عدة ملفات وتقوم الدوت نيت بمراقبة هذه الملفات بشكل مستمر فإن طرأ أي تعديل عليها فسوف يتم إعلامك بذلك.

ماذا يوجد داخل المجمع

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

• الترويسة PE Header: وهي مطلوبة لجميع ملفات PE حيث يحدد هذا القسم موقع الأقسام الأخرى للملف

• قسم MSIL: وهو الكود الفعلي المرتبط بالمجمع مخزن بشكل نصف مترجم بحيث يصبح بلغة مايكروسوفت الوسيطة MSIL ولسوء الحظ فمعالجات Intel و AMD في حاسوبك لا تستطيع معالجة كود MSIL مباشرة ولهذا أتت الفريموورك متضمنة مترجم تماما في الوقت JIT Compiler الذي يقوم بترجمة لغة MSIL إلى كود يفهمه المعالج بشكل لحظي

• قسم Metadata كل تلك التفاصيل الإضافية التي يحتاجها الدوت نيت لمعرفة مجمعك تخزن في هذا القسم الأساسي حيث أن بعض هذه العناصر عند جمعها تشكل Assembly Manifest وهي نوع من الوثائق تصف المجمع بشكل عام للعالم حيث تحتوي الـ Metadata على العناصر التالية: - اسم المجمع – رقم الإصدار – محتويات الاسم القوي – إعدادات الثقافة واللغة – سرد أسماء ملفات المجمع – معلومات الأنواع المصدرة – المراجع المرتبطة – معلومات الأنواع الداخلية –

والـ Masinfest هي الجزء الأهم من الـ Metadata وهي التعبير العام عن المجمع فعندما تنظر إلى الـ Mainfest ستعلم بلمحة على ماذا يحتوي المجمع وما هي متطلباته قبل أن تقوم بتحميله وتشغيله.

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

مترجم بتصرف

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

وهذا رابط الملف PDF يحوي نص الموضوع كاملا - مع بعض التصحيحات البسيطة مجمعات الدوت نيت Dot net Assemblies

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

المجمعات ذات الأسماء القوية Strong Named Assemblies

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

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

لتوقيع مجمع أنشئ مشروع فيجول بيزيك جديد كالعادة وفي مستكشف المشروع Project Explorer انقر نقرا مزودجا على My Project لفتح خصائص المشروع ثم افتح صفحة Signing ثم قم بتحديد الخيار Sign the assembly ثم افتح القائمة المنسدلة الخاصة بـ Key File و اختر <New…> وفي صندوق الحوار الذي يظهر لك اختر الاسم الذي تريده للملف كما يمكنك إدخال كلمة سر بشكل اختياري ثم انقر OK. في هذه اللحظة يقوم فيجول ستوديو بإنشاء ملف Key يحتوي على جميع المعلومات اللازمة لتوقيع المجمع فعندما تقوم ببناء المجمع يستخدم فيجول ستوديو الملف Key لتوقيع المجمع الناتج.

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

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

وسلطة الشهادات Certificate Authority هي شركة تبيع التواقيع الرقمية التي تضمن أصالة قطعة الكود الموقع وهذه الشركة تؤكد هويتك وبذلك يتأكد الآخرون بأنك فعلا من تدعي أن تكون فهي تعطيك شهادة Certificate يمكنك استخدامها لتوقيع المجمعات وعندما يستخدم أحد ما مجمعك لاحقا يمكن له التأكد من أن مجمعك هو المجمع الأصلي الذي قمت بإنشائه ولم يتم العيث به منذ أن قمت بكتابته إضافة إلى أنه يتأكد من صحة هويتك.

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

مترجم بتصرف

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

شكرا لك أستاذنا محمد

-----

لى بعض الأسئلة

1 - كيف أعرف أن المجمع الذى حصلت علية من أخرين موقع أو له شهادة

قبل أن أستخدمة

2 - ما هى المعلومات التى سيحتويها KEY الذى سأقوم بإنشاؤة عنى وعن منتجى

وشكراجزيلا مرة أخرى وننتظر الجديد

تم تعديل هذه المشاركة بواسطة vbm في 14 أغسطس 2008 في 19:06

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

#5

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

2 - ملف الـ Key لا أدري محتوياته بالضبط على كل حال هو يحتوي معلومات خاصة بالتوقيع الرقمي

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 14 أغسطس 2008 في 19:30

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#6

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

وهل توجد شهادات مجانية بشروط

--------------------

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

#7

- هناك شركات متخصصة بمنح الشهادات الرقمية كما ذكر في الموضوع يمكنك البحث عنها في الانترنت

- يمكنك إنشاء توقيع رقمي مجاني باستخدام الفيجول ستوديو وقد تم ذكر ذلك في نص الموضوع

اقتباس
لتوقيع مجمع أنشئ مشروع فيجول بيزيك جديد كالعادة وفي مستكشف المشروع Project Explorer انقر نقرا مزودجا على My Project لفتح خصائص المشروع ثم افتح صفحة Signing ثم قم بتحديد الخيار Sign the Assembly ثم افتح القائمة المنسدلة الخاصة بـ Key File و اختر <New…> وفي صندوق الحوار الذي يظهر لك اختر الاسم الذي تريده للملف كما يمكنك إدخال كلمة سر بشكل اختياري ثم انقر OK. في هذه اللحظة يقوم فيجول ستوديو بإنشاء ملف Key يحتوي على جميع المعلومات اللازمة لتوقيع المجمع فعندما تقوم ببناء المجمع يستخدم فيجول ستوديو الملف Key لتوقيع المجمع الناتج.

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

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 14 أغسطس 2008 في 19:49

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#8

شكرا لك أستاذى :clapping:

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

مواضيع مشابهة