ترجمة لمقالة: لماذا يجب على الولايات المتحدة استخدام الأسلحة السبرانية (الإلكترونية) ضد سوريا

الوسوم

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

هذا البوست عبارة عن ترجمة لمقالة على موقع Defense One وهي معادية لسوريا لكن تمت ترجمتها لإلقاء نظرة على طريقة تفكير من يخطط للهجوم على سوريا

عنوان المقال الأصلي: Why the U.S. should use cyber weapons against Syria

الكاتب: Jason Healey

تم النشر بتاريخ: 30 آب 2013

تمت ترجمة المقالة إلى اللغة العربية بتاريخ: 5 أيلول 2013

رابط المقالة الأصلية: على موقع Defense One

لماذا يجب على الولايات المتحدة استخدام الأسلحة السبرانية (الإلكترونية) ضد سوريا؟

US Cyber Command

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

على الرغم من خطر لفت الانتباه إلى عسكرة الولايات المتحدة للفضاء السبراني cyberspace، إلا أنه من المحبذ القيام بذلك للتأكيد على فكرة أنّ للحرب الالكترونية استخدامات جيدة وليست حكراً على “الدول الشريرة”.

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

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

لا يوجد تقارير رسمية تؤكد تنفيذ هذين المخططين، ويتوقع أن وزارة المالية وبعض الجهات الرسمية قامت بالتدخل لمنع تنفيذ هذه المخططات لتفادي وقوع كوارث مالية.

 مؤخراً، وفق تقرير خاص بصحيفة New York Times، فكرت إدارة أوباما وبعض القادة العسكريين في الجيش الأمريكي بالقيام بشرن غارة إلكترونية على نظام الدفاع الجوي الليبي إبان قيامها بهجوم على ليبيا القذافي، لكن غالباً تم استبعاد هكذا ضربة بسبب عدم توافر الوقت الكافي للقيام بها، ولأن المسؤولين في إدارة أوباما يعتبرون بأن الحروب المعلوماتية كسيارة “فيراري” يجب أن يتم استخدامها في “السباقات الضخمة”. إلا آنّ الإسرائيليين لم يدخروا جهدا باستخدام الحرب السايبرية، حيث توجد ادعاءات غير رسمية إسرائيلية باستغلال إسرائيل لثغرة أمنية موجودة في النظم الحاسوبية للنظام الدفاعي الجوي السوري لتعطيلها قبل هجومها على سوريا في عام 2007 بغرض تدمير ما تم الادعاء بأنه مفاعل نووي سوري قيد البناء.

 بمراعاة هذه المعلومات، ماذا يجب أن نقوم به ضد سوريا من الناحية السايبرية؟

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

بمكن استخدام القدرات السبرانية للهجوم على أنظمة الدفاع الجوي الحاسوبية وتعطيلها مباشرة، أو القيام بعمليات لإرباك القيادة الحربية السورية، مما يسمح بالقيام بضربات جوية دون أي مقاومة تذكر. يمكن أيضاً استخدام هكذا عمليات سايبرية لتعطيل أنظمة البنية التحتية الهامة لمساعدة النظام السوري (كشبكات الكهرباء) لكن هكذا عمليات ليست فعالة من ناحية الأضرار طويلة الأمد بالمقارنة مع الضربات الجوية التقليدية.

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

أول المعوقات التي اعترضت القيام بعملية سايبرية ضد نظام الدفاع الجوي الليبي كانت الوقت المتاح للعملية، لكن في حالة سوريا لن يشكل ذلك أية مشكلة، حيث أنّ الجيش الأمريكي يقوم بالتحضير لبناء القدرات المناسبة لاستهداف أهداف محددة منذ أشهر إن لم يكن من سنوات.

ثاني المعوقات يمكن بأن بعض المسؤولين الأمريكيين يقر بأنّ هذا هو “السباق الضخم” الذي انتظرناه لكن لأسباب سياسية وليس عسكرية. ففي السنوات الماضية، تم اكتشاف قيام الولايات المتحدة بعمليات سايبرية سرية ضد إيران مثل Stuxnet بالإضافة إلى التجسس على الانترنت من خلال عمليات PRISM الضخمة، وهذا قام بتعزيز نظرة العالم للولايات المتحدة كقوة شريرة بالعالم. لذا من الممكن لعملية سايبرية ضد سوريا أن تحسن من صورة الولايات المتحدة عالميا في هذا المجال.

مؤخراً قام خبراء من الولايات المتحدة, الصين, و روسيا و عدد من البلدان الأخرى بتبليغ الأمين العام للأمم المتحدة أن القوانين الإنسانية الدولية الحالية (المعروف بقوانين النزاعات المسلحة كاتفاقيات جنيف ولاهاي) تنطبق على ساحة النزاعات السايبرية. باستخدام عملية سايبرية عسكرية يمكن تجنب إزهاق حياة جنود السوريين ومدنيين يقطنون بدائرة منطقة النزاع, بما يتوافق مع التشريعات الإنسانية. الحلفاء الأوربيين سيعتبرون هذه العملية عملية عابرة للأطلسي, على عكس ما حدث في Stuxnet و PRISM.

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

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

التشويش على إشارات الأقمار الصناعية

الوسوم

, , , ,

مقدمة:

تتوضع أغلب أقمار الاتصالات في المدار المستوي المعروف بـ GEO, و هو عبارة عن مدار دائري فوق المستوي الاستوائي لكوكب الأرض و يتوضع على ارتفاع 22,300 ميل فوق خط الاستواء بحيث تكون فترة دوران الأقمار الصناعية عليه هي ذاتها على الأرض, فيبدو ثابتا بالنسبة لمحطة الاتصالات الأرضية و من فوائد استخدام هذا المدار استخدام هوائيات بسيطة مكيانيكيا ثابتة بالنسبة للقمر الصناعي دون الحاجة للدخول في تفاصيل التتبع و الملاحقة المستخدمة مع الأقمار التي تعمل على مدارات باولينا مثلاً.

أكثر الحزم الترددية شيوعا في الاتصالات مع الأقمار الصناعية (أرض-سماء) هي 6GHz و تسمى هذه الوصلة بـ uplink, و حزمة 4GHz في اتصالات (سماء-أرض) و المعروفة بالاسم downlink, و تستخدم هذه الحزم بسبب عدة عوامل منها, رخض ثمن المعدات المستخدمة, قلة الضجيج الفضائي, انخفاض التردد بشكل بتجنب إعاقة المطر للإشارة, كما أنّ تأثير الأيونات في الغلاف الجوي على هذه الاتصالات يكون منخفضاً أيضاً على هذه الحزم الترددية.

حددت لجنة الإتصالات الاتحادية FCC كثافة الطاقة على الأرض من المرسل في القمر الصناعي حتى يتم تجنب عملية التداخل مع الأمواج الميكروية في الدارات الأرضية التي تعمل على المجالات الترددية 4/6 GHz, و على هذه الحزمة يتم تحديد المسافة بين الأقمار المتزامنة بمقدار 2 درجة مدارية.

بالنسبة للأقمار الصناعية الأحدث فهي تعمل بحزم ترددات أعلى. فعلى سبيل المثال تعمل أقمار Ku Band على الترددات 14 GHz في وصلة (أرض-سماء) أو uplink, و على الترددات 12 GHz في وصلة (سماء-أرض) أو downlink, بمقدار تباعد مداري يساوي 3 درجات. و بعض أقمار Ku Band تستخدم مضخمات طاقة تعطي قيم بين 120 حتى 200 واط لهوائيات الإرسال, و هذه القيم عالية بالمقارنة مع الأقمار التي تستخدم طاقة منخفضة أو متوسطة في الإرسال تترواح بين 20 و 40 واط. تدعى الأقمار ذات الاستطاعة العالية بأقمار البث المباشر Direct Broadcast Satellites (DBS), مثل أقمار التي تقدم خدمة البث التلفزيوني مباشرة إلى المنزل حيث يتم استخدام هوائيات استقبال بقطر نصف متر أو حتى أقل.

نواقل الإستقبال و الإرسال Transponders:

لكل قمر صناعي عدد من نواقل الإرسال و الاستقبال (مستقبل-إلى-مرسل) ليعالج الإشارة المستقبلة من ناحية الضخيم و التنقية ليعيد إرسالها إلى المحطات الأرضية, و لهذا السبب يتم التشويش على وصلة uplink لأنها الأسهل من وصلة downlink, فيتم تضخيم إشارة الضجيج (التشويش) بالإضافة إلى الإشارة الطبيعية, فينج لدينا معلومات غير مفهومة لارتفاع نسبة الضجيج بس كبير فيها.

تدعى هذه النواقل بالنواقل الأنبوبية bent pipe لأنها لاتقوم بفك ترميز الدخل بل تقوم فقط بعملية معالجة للإشارة باستخدام محول كاسب للطاقة عن طريق مضخم موجة راحلة أنبوبي, و أغبي هذه النواقل مصممة للعمل بعرض حزمة من القياسات 36,54, أو 72 ميغا هرتز MHz , مع اعتماد 36 MHz كعرض حزمة في أقمار البث التلفزيوني.

بالنسبة لأنظمة أقمار الاتصالات فهي تختلف مع أنظمة الموجات الميكروية الأرضية بالنسبة للتقنية المستخدمة في الوصول المتعدد لناقل واحد من قبل محطات إرسال و استقبال متعددة بنفس الوقت, و أكثر الطرق انتشارا هي طريقة FAMA باستخدام إحدى التقنيات FDMA, TDMA, CDMA, أو طريقة DAMA باستخدام إحدى التقنيات FDMA, TDMA, CDMA, و هي طرق معالجة التصادمات و الأولوية في النقل و تشبه الطرق المستخدمة في شبكات الاتصالات الأرضية المحلية أو البعيدة.

طريقة العمل:

لنفرض أنك أرت القيام بعملية تشويش على بث محطة أرضية معينة فمالذي تحتاجه؟ الجواب ببساطة, تحتاج إلى مصدر إشارة و هوائي ذو طاقة عالية و معرفة التردد الصاعد لوصلة (أرض-سماء) و الذي تعمل عليه المحطة الأرضية. و لضمان عملية التشويش يجب عليك أن تكون قريبا إلى المحطة الأرضية أو يجب أن تبث بطاقة أعلى من طاقة بث المحطة الأرضية. الصورة المجاورة تبين الأماكن التي يصلها بث قمر EuroBird3 بمدار 33 درجة شرقا, و للعلم فأنه يمكننا التشويش على أي محطة تستخدم هذا القمر من أي موضع مشار إليه بالخريطة, عندما نتمكن من البث بطاقة أعلى من الطاقة التي تستخدمها المحطة الأرضية

و على نفس التردد.

لنفرض أننا أردنا التشويش على محطة ما و لتكن A مثلاً, و لنقم بتحليل عملية البث:

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

كيف يمكنني الحصول على إشارة ميكروية جيدة؟

الجواب ببساطة باستخدام أحد أجزاء جهاز فرن الميكروويف المنزلي( Magnetron), كما توضح الصورة:


و هذه دارة بسيطة تستخدم مولد إشارة سن المنشار كمصدر إشارة:

هذا كل شي حتى الآن!

Ammar M. Zerouk

From many sources.

لمحة عن منهجية الاختبار الأمني مفتوح المصدر

الوسوم

, , , ,

مقدمة:

منهجية أو طريقة الاختبار الأمني مفتوح المصدر (Open Source Security Testing Methodology – OSSTM) عبارة عن مقياس معترف به عالميا في الاختبارات و التحاليل الأمنية في مجال أمن المعلومات و الإتصالات, و هو معتمد من قبل العديد من الشركات و المنظمات في مجال عملهم اليومي.

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

المجال Scope, القناة Channel, الدليل Index, و الموجهVector .

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

بالنسبة للدليل , فهو عبارة عن طريقة تعتبر مفيدة أثناء تصنيف الأصول المستهدفة بالنسبة لمعرفات محددة, مثل, عنوان MAC, و عنوان IP. أما الموجه , فهو يقرر الاتجاه الذي سيقوم المختبر بتدقيقه و تحليله وظيفيا. وهكذا, تهيئ العملية بكاملها الطريق نحو تقييم البيئة المستهدفة بشكل شامل, و تعرف هذه العملية بـ Audit Scope.

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

  • الأعمى Blind: لا يتطلب الاختبار الأعمى أي معرفة مسبقة من النظام المستهدف, على الرغم من إعلام الهدف حول العملية. نجد أن Ethical Hacking و War Gaming من أفضل الأمثة عن هذا النوع من الاختبارات. و هذا النوع من الاختبارات مرحب به بشكل واسع ضمن عالم الأعمال, بسبب نظرته الاخلاقية من حيث اعلام الهدف بشكل مسبق قبل القيام بالعملية, بما لا يوثر على مسير و أداء أعماله.
  • الأعمى المضاعف Double Blind: في الاختبار الأعمى المضاعف, لا يتطلب المختبر أي معرفة مسبقة حول البيئة المستهدفة, و يختلف عن الاختبار الأعمى بأن الهدف لا يعلم بموعد عملية الاختبار. و أفضل الأمثلة حول هذا النوع من الاختبارات هي Penetration Testing و طريقة Black-Box. و أغلب عمليات الاختبار التي يتم تنفيذها في هذه الأيام تتبع هذه الاستراتيجية, و هذا يخضع المختبرين لتحدي حقيقي في اختيار أفضل أدواتهم وتقاناتهم بغرض الحصول على الهدف المنشود.
  • الصندوق الرمادي Gray Box: في عملية الاختبار من نوع الصندوق الرمادي, يزود المختبر بمعلومات محدودة حول النظام المستهدف, كما يزود النظام الهدف بمعلومات حول عملية الاختبار. يمكننا ملاحظة أن Vulnerability Assessment هي أبسط الأمثلة على هذا النوع من الاختبارات.
  • الصندوق الرمادي المضاعف Double Gray Box: تتشابه عملية الاختبار من هذا النوع مع عمليات الاختبار بطريقة الصندوق الرمادي, باستثناء تحديد طول الفترة الزمنية التي يتم فيها هذا الاختبار و عدم اختبار الأقنية و الموجهات. و مثالا عن هذا النوع من الاختبارات نجد طريقة White-Box.
  • المنسق Tandem: في هذا الاختبار يتم الاتفاق مع النظام المستهدف و تتم مشاركة المعلومات بشكل بسيط مع المختبر و يتم الاختبار بشكل شامل و لكل التفاصيل, و خير الأمثلة عن هذه الطريقة طريقة Crystal Box و الطرق الخاصة.
  • العكسي Reversal: في الاختبار العكسي يمتلك المختبر كافة المعلومات حول النظام المستهدف, كما أنه لا يتم اعلام الهدف كيف و متى ستتم عملية الاختبار, و مثالا عن ذلك نجد Red Team.

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

تركز اجراءات الاختبار العامة على: ما الذي سيتم اختباره, كيف يجب أن تتم عملية الاختبار, ما هي التكتيكات المتبعة قبل – أثناء – و بعد الاختبار, و كيف سيتم تفسير النتائج النهائية. و قياس حالة الحماية الحالية للنظام الهدف باستخدام مفهوم القياسات الأمنية security metrics يعتبر أمرا بالغ الأهمية, و لذا قدمت منهجية OSSTM هذا المفهوم بالشكل المعرف بـ قيم تحقق الخطر Risk Assessment Values
أو RAV اختصارا. و بأبسط أشكالها تشمل تحليل نتائج الاختبار و حساب القيمة الأمنية الفعلية التي ترتكز على العوامل الثلاثة: الأمن العملياتي, التحكم بالخسائر, و المحدوديات. وتعرف النتيجة النهائية بـ RAV Score. باستخدام RAV Score يمكن للمختبر بسهولة أن يستخلص و يعرف ما هي أفضل الأساليب للحماية و ذلك بالنسبة للانكشاف الأمني. و من ناحية الأعمال, تمكن RAV Score من تحديد مستويات الانفاق على الناحية الأمنية بحيث نحقق أفضل حماية بأقل المصاريف.

الميزات و العائدات الأساسية:

  • يمكن باستخدام منهجية OSSTM و دليل OSSTMM تقليل عدد الأخطاء السلبية و الإيجابية و توفير وسيلة قياس دقيقة في المجال الأمني.
  • بيئة العمل التي توفرها ملائمة لمختلف أنواع الاختبارات الأمنية, مثل اختبارات الاختراق, و التدقيق بحثا عن ثغرات أمنية, و نموذج الصندوق الأبيض, وغيرها.
  • تضمن تنفيذ عملية الاختبار بشكل دقيق بحيث تكون النتائج دقيقة قابلة للتصدير بعدة أشكال مكممة, و موثوقة.
  • تتبع المنهجية ذاتها عملية مكونة من أربع مراحل فردية مستقلة لكنها متصلة, هي: مرحلة التحديد, مرحلة المعلومات, مرحلة التنظيم, و مرحلة اختبار التحكم. و كلاً منها يقوم بتحصيل, تحليل, و اختبار المعلومات المتعلقة بالبيئة الهدف.
  • تقييم مقاييس الأمان يمكن الحصول عليه باستخدام طريقة RAV. يقوم RAV بحساب القيمة الأمنية الفعلية التي ترتكز على الأمن العملياتي, التحكم بالخسارة, و المحدوديات, و الخرج الناتج يدعى بنتيجة RAV, و تحدد الحالة الراهنة للنظام الهدف.
  • تشكيل تقرير الاختبار باستخدام قالب تقرير اختبار التدقيق الأمني أو Security Test Audit Report (STAR)
    يمكن أن يكون مفيدا للأدارة كما للفريق التقني للتحقق من أهداف الاختبار, قيم اختبار الخطر, و خرج كل مرحلة اختبار.
  • يتم تحديث المنهجية بشكل منتظم بإضافة المستجدات في الاختبارات الأمنية, و النظم, و القيم الأخلاقية و القانونية.
  • يمكن دمج OSSTM بسهولة مع أنظمة و سياسات العمل, و قوانين الحكومات. بالإضافة يمكن الحصول على شهادات متوافقة و معتمدة من ISECOM معهد الأمن و المنهجيات المفتوحة.

From the book “BackTrack 4 : Assuring Security By Penetration Testing” by Shakeel Ali and Tedi Heriyanto.

Translated to Arabic by me, Ammar M. Zerouk

الدرس الثاني: كيفية التأكد من صحة ملف PE

في هذا الدرس سنتعلم طريقة الحكم على ملف PE بصحة البنية أو بعدمها – ليس ملف PE.

النظرية:

كيف يمكننا التأكد من أنّ ملفاً معطى هو ملف PE؟ الحقيقة أنّ الإجابة على هذا السؤال صعبة! و هي تعتمد على العمق الذي نود التأكد منه. يمكننا اختبار كل بنية معطيات معرفة في صيغة ملف PE, أو يمكننا فقط اختبار أكثر الأقسام أهميّة. ففي أغلب الأحيان تكون الحكمة في اختبار الكتل الهامة فقط, فإذا كانت صحيحة يمكننا اعتبار الكتل الأخرى كذلك, و سنقوم في هذا الدرس باعتماد الطريقة الثانية الموفّرة للوقت.

و البنية الأساسية التي سنقوم باختبارها هنا هي ترويسة PE بذاتها. و للقيام بذلك سنحتاج إلى معرفة بعض المعلومات عنها –برمجياً. و كما ذكرنا سابقاً بأنّ ترويسة PE هي عبارة عن سجل (بنية) تدعى IMAGE_NT_HEADERS, و هي معرّفة بالشكل التالي:

IMAGE_NT_HEADERS STRUCT

 ?   Signature dd

<>    FileHeader IMAGE_FILE_HEADER

<>    OptionalHeader IMAGE_OPTIONAL_HEADER32

IMAGE_NT_HEADERS ENDS

لنبدأ بتفصيل حقول هذا السجل:

  1. Signature عبارة عن قيمة dword (كلمة مضاعفة) و يحوي على القيم الست عشرية التالي: 50,45,00,00 و بلغة أكثر طبيعية كلغة البشر مثلاً تحوي على الكلمة “PE” ملحقة بمحرفين صفريين. و هذا الحقل هو توقيع ملف PE و سنستخدمه للتأكد من أنّ ملفاً معطى هو ملف PE صحيح.
  2. FileHeader عبارة عن بنية تحوي معلومات حول الشكل الفيزيائي (التركيبي) لملف PE كعدد الأقسام, بنية الآلة التي يعمل عليها البرنامج, …إلخ.
  3. OptionalHeader هي بنية تحوي معلومات عن الشكل المنطقي (التنظيمي) لملف PE. و للذكر أنّ اسم Optional ليس بمعنى اختياري فهذا السجل دائماً موجود.

الآن يبدو أنّ هدفنا واضح. إذا كانت قيمة توقيع PE في الحقل Signature التابع للبنية IMAGE_NT_HEADERS تحوي القيمة “PE” متبوعة بمحرفين صفريين, يمكننا اعتبار هذا الملف ملف PE صحيح. و كمعلومة فإنّ Microsoft قامت بتعريف ثابت باسم IMAGE_NT_SIGNATURE يمكننا استخدامه فوراً. وفيما يلي بعض قيم الثوابت المعرّفة:

IMAGE_DOS_SIGNATURE equ 5A4Dh, IMAGE_OS2_SIGNATURE equ 454Eh, IMAGE_OS2_SIGNATURE_LE equ 454Ch, IMAGE_VXD_SIGNATURE equ 454Ch, IMAGE_NT_SIGNATURE equ 4550h

و الآن, السؤال التالي هو: كيف يمكننا معرفة مكان ترويسة PE؟ الإجابة ببساطة: ترويسة DOS MZ تحوي على إزاحة الملف الخاصة بترويسة PE.

إنّ ترويسة DOS MZ معرفة بالشكل IMAGE_DOS_HEADER. و العضو e_lfanew من IMAGE_DOS_HEADER يحوي على إزاحة الملف الخاصة بترويسة PE.

أصبحت الخطوات الآن كالتالي:

  1. التأكد من أنّ الملف المعطى يملك ترويسة DOS MZ صحيحة, و ذلك عن طريق مقارنة أول كلمة من الملف بقيمة IMAGE_DOS_SIGNATURE.
  2. فإذا كان للمف ترويسة DOS صحيحة, سنستخدم القيمة في e_lfanew للعثور على ترويسة PE.
  3. بمقارنة أول كلمة من ترويسة PE مع القيمة IMAGE_NT_HEADER يمكننا اعتبار الملف صحيحاً في حال تطابق القيم.

مثال:

386.

model flat, stdcall.

Option casemap:none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\comdlg32.inc

include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib

includelib \masm32\lib\comdlg32.lib

SEH struct

PrevLink dd ? ; the address of the previous seh structure

CurrentHandler dd ? ; the address of the exception handler

SafeOffset dd ? ; The offset where it’s safe to continue execution

PrevEsp dd ? ; the old value in esp

PrevEbp dd ? ; the old value in ebp

SEH ends

data.

AppName db “PE tutorial no.2”,0

 <> Ofn OPENFILENAME

FilterString db “Executable Files (*.exe, *ddl)”,0,”*.exe;*.dll”,0

FileOpenError db “Cannot Open the file for reading”,0

FileOpenMappingError db “Cannot map the file into memory”,0

FileValidPE db “This file is a valid PE”,0

FileInValidPE db “This file is not a valid PE”,0

?data.

 (?) Buffer db 512 dup

 ? hFile dd

 ? hMapping dd

 ? pMapping dd

 ? validPE dd

code.

start proc

mov ofn.lStructSize, SIZEOF ofn

mov ofn.lpstrFilter, OFFSET FilterString

mov ofn.lpstrFile, OFFSET buffer

mov ofn.nMaxFile, 512

mov ofn.Flags, OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_EXPLORER or OFN_HIDEREADONLY

invoke GetOpenFileName, ADDR ofn

if eax==TRUE.

Invoke CreateFile, addr buffer, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL

if eax !=INVALID_HANDLE_VALUE.

mov hFile, eax

invoke CreateFileMapping, hFile, NULL, PAGE_READONLY, 0,0,0

if eax != NULL.

Mov hMapping, eax

Invoke MapViewOfFile, hMapping, FILE_MAP_READ, 0,0,0

if eax != NULL.

Mov pMapping, eax

Assume fs:nothing

[Push fs:[0

Pop seh.PrevLink

Mov seh.CurrentHandler, offset SEHHandler

Mov seh.SafeOffset, offset FinalExit

Lea, eax, seh

Mov fs:[0], eax

Mov seh.PrevEsp, esp

Mov seh.PrevEbp, ebp

Mov edi, pMapping

Assume edi:ptr IMAGE_DOS_HEADER

if [edi].e_magic == IMAGE_DOS_SIGNATURE.

Add edi, [edi].e_lfanew

Assume edi:ptr IMAGE_NT_HEADERS

if [edi].Signature == IMAGE_NT_SIGNATURE.

Mov ValidPE, TRUE

else.

Mov ValidPE, FALSE

endif.

else.

Mov ValidPE, FALSE

endif.

:FinalExit

if ValidPE == TRUE.

Invoke MessageBox, 0, addr FileValidPE, addr AppName, MB_OK+MB_ICONINFORMATION

else.

Invoke MessageBox, 0, addr FileInValidPE, addr AppName, MB_OK+MB_ICONINFORMATION

endif.

Push seh.PrevLink

[Pop fs:[0

Invoke UnmapViewOfFile, pMapping

else.

Invoke MessageBox, 0, addr FileMappingError, addr AppName, MB_OK+MB_ICONERROR

endif.

Invoke CloseHandle, hMapping

else.

Invoke MessageBox, 0, addr FileOpenMappingError, addr AppName, MB_OK+MB_ICONERROR

endif.

Invoke CloseHandle, hFile

else.

Invoke MessageBox, 0, addr FileOpenError, addr AppName, MB_OK+MB_ICONERROR

endif.

endif.

Invoke ExitProcess, 0

start endp

SEHHandler proc C uses edx pExcept:DWORD, pFrame:DWORD, pContext:DWORD, pDispatch:DWORD

Mov edx, pFrame

Assume edx:ptr SEH

Mov eax, pContext

Assume eax:ptr CONTEXT

Push [edx].SafeOffset

Pop [eax].regEip

Push [edx].PrevEsp

Pop [eax].regEsp

Push [edx].PrevEbp

Pop {eax].regEbp

Mov ValidPE, FALSE

Mov eax, ExceptionContinueExecution

Ret

SEHHandler endp

End start

التحليل:

يقوم البرنامج بفتح ملف و يتأكد من وجود ترويسة DOS, فإن وجدت, يتفحص ترويسة PE, إن كانت صحيحة يقوم باعتبار الملف تطبيق PE. في المثال السابق, قمنا باستخدام معالجة الاستثثناءات البنيوية SEH
حتى نتجنب عملية تفحص كل الأخطاء الممكنة و ندع هذه العملية للنظام, و إن حصل أي خطأ سنعتبر أنّ الملف ليس ملف PE بكل بساطة.

يقوم برنامج المثال السابق بعرض نافذة فتح ملف حتى يتمكن المستخدم من اختيار الملف المراد فحصه, ثم يقوم بفتح الملف و تحميله إلى الذاكرة, وقبل القيام بعملية التأكد يقوم البرنامج بتسجيل SEH :

Assume fs:nothing

[Push fs:[0

Pop seh.PrevLink

Mov seh.CurrentHandler, offset SEHHandler

Mov seh.SafeOffset, offset FinalExit

Lea eax, seh

Mov fs:[0], eax

Mov seh.PrevEsp, esp

Mov seh.PrevEbp, ebp

نبدأ بوضع استخدام المسجل FS كـ nothing (لأن MASM يستخدم هذا المسجل من أجل الأخطاء ERROR). ثم نقوم بتخزين عنوان Handler
SEH السابق في سجلنا حتى يستخدمه Windows. نقوم بتخزين عنوان SEH Handler الخاص بنا, و هذا هو العنوان الذي يمكن متابعة التنفيذ منه بأمان في حال حدوث خطأ ما. و القيم الحالية ل ESP و EBP حتى يتمكن SEH Handler من استرجاع حالة المكدس الطبيعية قبل متابعة تنفيذ البرنامج.

Mov edi, pMapping

Assume edi:ptr IMAGE_DOS_HEADER

if [edi].e_magic==IMAGE_DOS_SIGNATURE.

بعد الانتهاء من اعداد SEH, نقوم بمتابعة عملية التحقق. نضع عنوان البايت الأول من الملف الهدف في المسجل edi, و هو عبارة عن أول بايت في ترويسة DOS. و من أجل سهولة المقارنة, سنقوم باخبار الـ compiler بأنه بستطيع اعتبار edi يقوم بالتأشير على بنية IMAGE_DOS_HEADER ( طبعاً هذه هي الحقيقة J ). سنقوم بعد ذلك بمقارنة أول كلمة WORD من ترويسة DOS بالعبارة “MZ” و التي هي عبارة عن ثابت معرف في الملف windows.inc يدعى IMAGE_DOS_SIGNATURE. إذا كانت عملية المقارنة صحيحة, نتابع إلى ترويسة PE, و إن لم تكن, نقوم بوضع القيمة FALSE في ValidPE, و هذا يعني بأن الملف غير صالح.

add edi, [edi].e_lfanew

assume edi:ptr IMAGE_NT_HEADERS

if [edi].Signature==IMAGE_NT_SIGNATURE.

mov ValidPE, TRUE

else.

mov ValidPE, FALSE

endif.

للوصول إلى ترويسة PE, سنحتاج إلى القيمة المخزنة في e_lfanew الموجودة في ترويسة DOS. هذا الحقل يحوي على الإزاحة offset الخاصة بترويسة PE بالنسبة لبداية الملف. و هكذا, بإضافة هذه القيمة إلى edi نحصل على أول بايت من ترويسة PE. إذا كان الملف فعلا ليس ملف PE, فالقيمة في e_lfanew ستكون غير صحيحة و باستخدامها سنحصل على مؤشر هائم Wild Pointer, و هنا مكمن حدوث الخطأ, ففي حال لم نسنخدم SEH, سيتوجب علينا مقارنة هذه القيمة بحجم الملف, و هذه هي النقطة السيئة.

إذا سار كل شيء على ما يرام, سنقوم بمقارنة أول كلمة WORD من ترويسة PE مع العبارة “PE” , و التي لها الاسم IMAGE_NT_SIGNATURE و الذي يمكننا استخدامه ان أردنا. إذا كانت نتيجة المقارنة صحيحة, يمكننا اعتبار الملف ملف PE صحيح.

إذا كانت القيمة في e_lfanew غير صحيحة, يمكن حدوث خطأ سيتولى عندها SEH التحكم. و ببساطة يقوم باستعادة مؤشر المكدس, مؤشر القاعدة, و يتابع التنفيذ عند الموقع الآمن عند العلامة FinalExit.

:FinalExit
if ValidPE==TRUE.
invoke MessageBox, 0, addr FileValidPE, addr AppName, MB_OK+MB_ICONINFORMATION
else.
invoke MessageBox, 0, addr FileInValidPE, addr AppName, MB_OK+MB_ICONINFORMATION
endif.

الكود في الأعلى هو البساطة بعينها J يقوم بفحص القيمة المخزنة في ValidPE و يعرض رسالة للمستخدم.

push seh.PrevLink
[pop fs:[0

عندا ينتهي دور SEH سنقوم بفصله عن سلسلة SEH .

انتهى الدرس الثاني.

بانتظار الـ feedback منكم!

Ammar M. Zerouk

فن الحرب – صن تسو : الحلقة الأولى

الوسوم

, ,

SUN TSU

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

فن الحرب – كتاب في استراتيجيات الحياة و الحكمة

سأقدم لكم أصدقائي بعض مما قمت بترجمته إلى اللغة العربية من كتاب The Art of War المترجم إلى الإنكليزية من الصينية على يد المترجم LIONEL GILES, M.A. (1910(

و قد قام بتأليف هذا الكتاب الفيلسوف و القائد العسكري الصيني الشهير SUNTZU المروف أيضا كـ SNUTSI في عام 500 قبل الميلاد.

أتمنى لكم الاستفادة, 🙂

الجزء الأول – وضع الخطة:

  1. يقول السيد صن تسو: إنّ فن الحرب ذي أهميّةٍ بالغة للدولة.
  2. إنها قضيّة حياة أو موت, و هي طريقٌ إمّا للبقاء أو للاندثار. لذا فهو موضوع ذي استحقاق و لا يمكن إهماله مهما كانت الأسباب.
  3. إنّ فن الحرب محكوم بخمسة عوامل ثابتة, يجب أن يتم أخذها بالحسبان عند السعي لمعرفة حالات الفوز بالمعركة.
  4. هذه الشروط هي: (1) القانون الأخلاقي (المعنوي) ؛ (2) السماء ؛ (3) الأرض ؛ (4) القائد ؛ (5) الطريقة و الانضباط.
  5. القانون الأخلاقي يجعل الناس في اتفاق كامل مع حاكمهم.
  6. لذا سيتبعونه بغض النظر عن أرواحهم, و بدون أية مهابة لأي خطر كان.
  7. و السماء تبيّن الليل و النهار, البرد و الحرارة, الأوقات و الفصول.
  8. أمّا الأرض فتشمل المسافات العظيمة و الصغيرة؛ الخطر و الأمان؛ الأرض المفتوحة و الممرات الضيقة؛ و فرص الحياة و الموت.
  9. و القائد يتحلّى بخصال الحكمة, و الصدق, و التسامح, و الشجاعة, و الصرامة.
  10. إنّ الطريقة و الانضباط, يجب أن تُفهم على أنّها قيادة و تنظيم الجيش بأقسامه الصحيحة, و كيفية إعطاء الرتب للضباط, وصيانة الطرقات التي يمكن أن تستخدم لإيصال الإمدادات للجيش, و التحكم بالإنفاق العسكري.
  11. هذه الرؤوس الخمسة يجب أن تكون مألوفة لأي قائد؛ فمن يعرفها سيكون المنتصر, و من يعرفها لن تطاله الخسارة.
  12. لذا, عليك في مشاوراتك, أثناء السعي لتحديد الحالة العسكرية, أن تجعل هذه الرؤوس هي أساس المقارنة, بهذه الحكمة:
    1. من بين الملكين مشبع بالقانون الأخلاقي, المعنوي؟
    2. من من بين القائدين يتمتع بالأهلية و القابلية؟
    3. مع من تكمن أفضلية و فوائد السماء و الأرض؟
    4. أي جانب لديه الانضباط مفروض بصرامة و قوة؟
    5. أي جيش أقوى؟
    6. أي جانب لديه رجال و ضباط مدربون بشكل أكبر؟
    7. أي جيش فيه ثبات أكبر من ناحية المكافئات و العقاب؟
  13. بواسطة هذه الاعتبارات السبعة, يمكنني أن أتنبأ بالربح أو بالخسارة.
  14. القائد الذي يصغي إلى نصائحي و يعمل بها, سيفوز: و لنضع مثل هذا الشخص في المسؤولية. أمّا القائد الذي لا ينصت لنصحي و لا يعمل بها, سيواجه الفشل: دعنا ننبذ مثل هذا الشخص !
  15. و طالما أنك تضع الانتفاع بنصائحي في المقدمة, فهذا لا يمنع استفادتك من أي حالة أو ظرف مساعد يتفوق على القواعد العادية.
  16. و حسب الظروف المناسبة, يجب على الشخص أن يعدّل خططه.
  17. كل الحرب تعتمد على الخدعة.
  18. لذا, عندما تكون قادراً على الهجوم, عليك أن تبدو غير قادر على ذلك؛ و عندما نستخدم قواتنا, علينا أن نظهر خاملين؛ و عندما نكون قريبين, علينا أن نجعل العدو واثقاً بأننا بعيدون؛ أمّا عندما نكون بعيدين, فيجب علينا أن نقنع العدو بأننا قريبون, قريبون جداً.
  19. عزز الفخاخ لتغري العدو. اختلق الفوضى, و قم بسحقه.
  20. إذا كان آمناً في كل النقاط, كن مستعداً له. إذا كان متفوقاً بالقوة, تحاشاه.
  21. إذا كان عدوك ذو طبع حانق, قم بالسعي لإغضابه. ادعي الضعف, حتى تزداد غطرسته.
  22. إذا كان مرتاحاً, لا تعطه الفرصة للراحة. إذا كانت قواته متحدة, حاول تفرقتها.
  23. قم بالهجوم عليه حينما لا يكون جاهزاً, و اظهر حيثما لا يتوقعك.
  24. الحيل العسكرية, التي تقود للنصر, يجب ألاّ تكشف مسبقاً.
  25. إنّ القائد الذي يربح المعركة يقوم بالعديد من الحسابات قبل أن تحصل المعركة. القائد الذي خسر المعركة, لم يقم بإجراء إلا القليل من الحسابات قبل الاعتراك. لذا فإنّ القيام بالكثير من الحسابات سيقود إلى النصر, و القليل منها سيقود إلى الهزيمة, لكن كيف حال من لا يقوم بأي حسابٍ أبداً؟؟ بالانتباه إلى هذه الناحية يمكنني رؤية من سيفوز و من سيخسر قبل وقوع المعركة.

                            لا تنسوا ابداء رأيكم من خلال التعليقات, و انتظروا الحلفة الثانية!

Ammar M. Zerouk

مستقبل البرمجيات الحرة و المصادر المفتوحة في سورية

FOSS – Free Open Source Software, Syria.

إنّ احتكار الشركات الكبرى لصناعة البرمجيات عبر استخدامها لنفوذها و سطوتها في جمع براءات الامتياز, يؤدي إلى خنق المنافسين مما يحدٌّ من تطور هذه الصناعة و تقدّمها. لذا برز مفهوم البرمجيات الحرة و المصادر المفتوحة للتصدي لهذا الاحتكار.

هذا المقال عبارة عن تعريف و توضيح لأهمية الانتقال إلى البرمجيات الحرة في سوريا!

تعاريف:

Open Source Logo

البرمجيات الحرة – Free Software:

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

تسهم بفتح باب المنافسة أما الشركات و المؤسسات الصغيرة التي تملك كادراً بشريّاً ممتازاُ, لكنّها ذات إمكانات ماديّة متواضعة.

المصادر المفتوحة – Open Source:

هي وسيلة التنمية للبرامج تتبع سياسة المصادر المفتوحة بالحفاظ على أفضل جودة، وزيادة الموثوقية والمزيد من المرونة، وانخفاض التكلفة، ووضع حد للسياسات الاحتكارية.
توزيع نسخة كاملة من الكود غير المترجم إلى برنامج تنفيذي بلغة الآلة مجاناً و احترام حقوق الملكية الفكرية للمبرمج مع ضرورة ترجمة البرنامج باستخدام مترجمات مجّانية (ليست تجارية).

ظهر مصطلح (Open Source) الذي يتم ترجمته للمصدر المفتوح، في نهاية التسعينات من قبل إريك ريموند (Eric Steven Raymond) في محاوله منه لإيجاد مصطلح بديل عن مصطلح برمجيات حرة (free software) الذي كان يفهم خطأ على أنه برمجيات مجانية بسبب اللبس الحاصل في معاني كلمة Free في اللغة الإنجليزية، كما في لغات أخرى كثيرة توجد كلمتان منفصلتان للتعبير عن ما هو مجاني (gratis) ما هو حر (libre). إذ كان قطاع الأعمال يتخوف من العمل في لينكس والبرمجيات الحرة، لأن كلمة (Free) كانت تعني لهم المجانية، وبالتالي عدم وجود أرباح، ولكن مع المصطلح الجديد قلل هذا اللبس.

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

البرمجيات المجانية Freeware:

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

مبادرة المصادر المفتوحة:

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

أهمية البرمجيات الحرة و أهميّة اختيارها:

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

من الناحية الاقتصادية:

  • معظم الاقتصاديين يتفقون على أن المصدر المفتوح يوفر المعرفة الجيدة, وهذا يشير إلى أن العمل الأصلي ينطوي على قدر كبير من الوقت والجهد و المال. ومع ذلك، فإن تكلفة إعادة إنتاج العمل منخفضة جدا، بحيث يمكن إضافة مزيد من الميزات و الخدمات بتكلفة قليلة أو حتى معدومة – ويشار إلى هذه التكلفة باسم التكلفة الحدية للمنتج ,لكن من الضروري النظر في حقوق التأليف والنشر.
  • فكرة حقوق التأليف والنشر للأعمال هي حافز لدعم الأعمال الأصلية. و تقييد حقوق الملكية الفكرية للمنتجات يتسبب بتكاليف إضافية على المستهلكين الذين يقدّرون المنتج الأصلي أكثر من صنع نسخة مماثلة للأصلي لكن بقيمة أقل من تكلفة الانتاج الأولي. وبالتالي، فإنها سوف تدفع تكاليف خرق حقوق الملكية الفكرية.
  • تكاليف الملكية الفكرية تثير أيضا مشاكل للمؤلفين الذين يرغبون في خلق شيء على أساس عمل آخر ولكنهم ليسو على استعداد للدفع لصاحب حقوق النشر للحصول على حقوق العمل والنشر. أما النوع الثاني من التكاليف التي يتم تكبدها مع نظام حقوق المؤلف هي تكاليف إدارة وإنفاذ حقوق التأليف والنشر.
  • يجري تنظيمها على نحو فعال كما في تعاونيات المستهلكين، الحد من تكاليف الوصول للمستهلك و المنتج عن طريق الحد من القيود المفروضة على حق المؤلف. وهذا يؤدي إلى إنشاء أعمال إضافية، والتي تبنى على العمل السابق وإضافة فوئد اجتماعية أكبر. وبالإضافة إلى ذلك بعض المؤيدين يقولون ان المصدر المفتوح يخفف أيضا على المجتمع من تكاليف إدارة وإنفاذ حقوق التأليف والنشر. حيث يمكن للأفراد الحصول على “تراخيص” بديلة، أو مستويات من التقييد لأعمالهم.
  • ويرى آخرون أن تطور و نمو المجتمع يتناقص بسبب السلع المتاحة للجميع فهنالك خسارة في الحافز المالي لخلق منتجات جديدة.هذه الحجة يبدو أنها تطبق بشكل خاص على نماذج الأعمال التجارية حيث تتم أبحاث و تجارب واسعة ، على سبيل المثال المستحضرات الصيدلانية. ومع ذلك، هذه الحجة تتجاهل حقيقة أن خفض التكاليف لجميع الأطراف المعنية وربما كان حافزا حتى أفضل من الزيادة في الأسعار. وبالإضافة إلى ذلك، يرى آخرون أن الفنون البصرية وغيرها من الأعمال التأليفية يجب أن تكون حرة. هؤلاء دعاة المثل العليا ذات المصدر المفتوح واسعة النطاق من شأنهم أن يجادلوا بأن الحوافز النقدية للفنانين يمكن جنيها من الأداء أو المعارض، وبطريقة مماثلة لتمويل توفير أنواع أخرى من الخدمات.

التجارب العربية في مجال البرمجيات الحرة مفتوحة المصدر:

  1. في 15/ آذار من عام 2004,قامت شبكة العلماء والتقنيين والمبتكرين السوريين في المغترب
    نوستيا
    NOSSTIA
    وورشة مهندسي المعلومات العرب
    وجامعة كان نورماندي الفرنسية، ورشة المصادر المفتوحة تحت عنوان «المنهج العام للبرمجيات مفتوحة المصدر في إطار تعميم الثقافة المعلوماتية».وتهدف هذه الورشة إلى تعريب أكبر كمية ممكنة من البرمجيات مفتوحة المصدر، والبدء بإطلاق مشاريع برمجيات مفتوحة المصدر تلبي المتطلبات الآنية والمستقبلية واستخدامها على الإنترنت، واستحداث وسائل نشر وتعميم للبرمجيات مفتوحة المصدر ومفهومها، ونشر هذه البرمجيات على أوسع نطاق ممكن، واستخدامها في المؤسسات التعليمية، وتأمين الدعم المالي والمعنوي والإعلامي
    للمجموعات العربية التي تبادر بإطلاق مشاريع تتعلق بهذه البرمجيات، وتأمين مناهج تدريبية متكاملة تحمل الطابع والاعتراف العربي العام ولمختلف المستويات والاختصاصات، وتؤمن لهم المعرفة والاعتراف بها، وتدعم وتحفز المبادرات الفردية القادرة على تقديم القيمة المضافة في مجال الإبداع في عالم المصادر المفتوحة، وإصدار معايير وضوابط عامة للعمل التقني العربي في هذا المجال.
  2. Open Source Arabia:

    http://opensourcearabia.com/

    هي عبارة عن مبادرة لترقية استخدام المصادر المفتوحة في الشرق الأوسط و الدول العربية, و هي مجموعة ناشطة في تونس. و قد تم إطلاق Software Freedom Day في تونس.

  3. بوابة البرمجيات الحرة في تونس opensource.tn,

نقلاً عن موقعهم:

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

وتهدف هذه الخطة الوطنية إلى:

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

  1. البرمجيات الحرة في فلسطين:

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

    و في 15 شباط 2012, أقيمت فعالية “ابدأ مع موزيلا” برعاية مجتمع موزيلا الفلسطيني.

  2. معبر: (المركز العربي لدعم البرمجيات الحرة مفتوحة المصدر)

    منذ انطلاقته مع مؤسسيه الرئيسيين، برنامج إقتدار التابع لبرنامج الأمم المتحدة الإنمائي، مكتب اليونسكو الإقليمي في بيروت، وجامعة البلمند، دأب المركز على نشر البرمجيّات الحرّة والمفتوحة المصدر كفلسفة وثقافة في المؤسسات الأكاديميّة والمجتمعات العربيّة. يلتزم مَعْبَر بالمساهمة في التنمية الإجتماعيّة والإقتصاديّة في المنطقة العربيّة بالترويج لإستعمال البرمجيّات الحرّة والفتوحة المصدر، وتطوير وادارة برامج تدريب على استعمال هذه البرمجيّات، لضمان أن يتمكن أكبر عدد ممكن من المجتمعات العربيّة من الحصول على تكنولوجيا المعلومات بسهولة أكبر.

    الموقع على الانترنت: http://ma3bar.org

    وقد أنشأنا صفحة على موقع التواصل الاجتماعي Facebook, لدعم البرمجيات الحرة في سوريا, و يمكنم الوصول لها و المشاركة من خلال الرابط:https://www.facebook.com/fsosc.syria.

     

    عدة مراجع من الانترنت.

    Ammar M. Zerouk

Portable Executable Tutorial – Arabic

دورة في Portable Executable

هذه الدورة منقولة عن دورة السيد Iczelion.

بنية ملفات PE:

في عالم Windows المختصر PE يعبر عن Portable Executable أو ملف تنفيذي محمول. في عالم Windows كل الملفات التنفيذية و مكاتب الربط الديناميكي DLL و ملفات وحدات الأجهزة SYS (ما عدا صيغ VxD, و DLL ذات 16 بت) تستخدم صيغة PE, حتى أنّ وحدات الأجهزة على مستوى نواة NT تستخدم هذه الصيغة.

تعتمد هذه الصيغة بالأساس على صيغة COFF (Common Object File Format) الخاصة بأنظمة Unix.

ماذا تعني “ملفات تنفيذية محمولة”؟

سميت هذه الصيغة بالمحمولة بسبب قدرتها على العمل على مختلف منصات Win32, حيث يقوم المحمل Loader في كل منصة Win32 بقرائتها و تحميلها بحسب المعالج الذي يستخدمه Windows حتى لو لم يكن Intel. لكن هذا لا يعني أنّه يمكننا تشغيل أي PE على أي CPU بدون اجراء بعض التعديلات.

ما الذي يفيدنا من دراسة صيغة PE؟

بما أنّ صيغة PE هي الصيغة العامة المستخدمة في أنظمة Windows, نكون بدراستنا لها و استيعابها قد تمكنا من الحصول على معلومات قيمة حول بنية Windows الداخلية و آلية عمله.

الشكل التالي يبين بطريقة مختصرة البنية العامة للملفات ذات صيغة PE:


كما نرى, ملفات PE مقسمة إلى عدة أقسام بعضها أساسي لايمكن تغييره أو اجتنابه , و البعض الآخر اختياري يمكن العمل عليه. كل ملفات PE دون استثناء (من ضمنها DLL ذات 32 بت) يجب أن تبدأ بترويسة نظام DOS البسيطة DOS MZ header.

لا يوجد فائدة لهذا القسم في Windows, إلا أنّه موجود للتوافق مع أنظمة DOS, فهو يمكّن DOS من إدراك أنّ الملف الذي يتعامل معه ملف تنفيذي فيقوم بنقل التنفيذ للقسم التالي أو ما يسمى DOS Stub و الذي هو عبارة عن برنامج EXE صحيح يعمل في حال عدم تعرف النظام على بنية PE, كما في الأنظمة القديمة مثلاً. يمكن لهذا البرنامج أن يقوم بعدة أعمال كأي برنامج عادي, لكن في العادة تكون وظيفته الشائعة في أغلب البرامج هي عرض رسالة تفيد بأن البرنامج غير قابل للتنفيذ على نظام DOS, حيث يقوم باستخدام الخدمة 9 من المقاطعة INT 21h حتى يقوم بطباعة العبارة التالية:


“This Program cannot run in DOS mode”.

يأتي بعد قسم DOS stub قسم ترويسة PEPE Header هي عبارة عن بنية PE تسمى IMAGE_NT_HEADERS. هذه البنية تحوي على العديد من الحقول الأساسية التي يستخدمها PE loader. و سنتعرف عليها أكثر مع تقدمنا في هذه الدورة أكثر. ففي حال تم تنفيذ البرنامج على نظام يفهم بنية PE, سيقوم محمّل PE بالتعرف على مكان إزاحة البداية الخاصة بترويسة PE من ترويسة DOS MZ. و هكذا يتجاوز قسم DOS stub بالقفز مباشرة إلى PE header.

كما ذكرنا بأنّ ملفات PE مقسّمة إلى عدة كتلة تسمى أقسام

sections . و القسم هو عبارة عن كتلة (مجموعة) من البيانات و صفات عامة مثل code/data, read/write, و غيرها…

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

يجب أن نوضح من هذه النقطة أنّ تجميع البيانات في القسم يتم عن طريق الصفات العامّة common attributes, و ليس على أساس منطقي.

من غير المهم كيف يتم استخدام code/data, إذا كان code/data في ملف PE يملك نفس الصفات, يمكن جمعهما في نفس القسم. لكن لا يجب علينا أن نفكّر بالأقسام على أنّها “code” أو “data” أو أي تمثيل منطقي آخر: فالأقسام يمكن أن تحوي على code و data في نفس المكان بشريطة أن تملك نفس الصفات العامة. فإذا كنت تملك كتلة من البيانات التي تود أن تكون للقراءة فقط, يمكنك وضعها في قسم معلّم على أنّه للقراءة فقط read-only. و عندما يقوم محمل PE بحجز الذاكرة و ربطها بالأقسام, يقوم بتفحّص صفات كل الأقسام و يعطي كتل الذاكرة المحجوزة لتلك الأقسام الصفات الموافقة لها و المحددة في بنية PE بالملف.

إذا فكرنا ببنية ملف PE كالقرص المنطقي, ترويسة PE كقطاع الإقلاع و الأقسام كملفات, لن نتمكن من التعامل مع الملفات لأننا لا نعرف أين هي, فنحن حتى الآن لم نتعرف على المكافئ للأدلة Directories في ملفات PE. لنعد مرة ثانية إلى بنية ملفات PE, فبعد ترويسة PE مباشرة يأتي section table, و الذي هو عبارة مصفوفة من السجلات. كل بنية تحوي معلومات حول كل قسم في ملف PE كالصفات, إزاحة الملف file offset , الإزاحة الإفتراضية virtual offset. فإذا وُجِد 5 أقسام في ملف PE , سيوجد 5 أعضاء في مصفوفة السجلات تماماً. و بناءً على هذا يمكننا مقارنة section table بالدليل الجدز root directory في القرص المنطقي. و كل عضو في المصفوفة مكافئ لأحد الأدلة في الدليل الجذز.

هذا كل شيء حول البنية الأساسية لصيغة ملفات PE , و سنقوم بتلخيص الخطوات الرئيسية في تحميل ملف PE إلى الذاكرة:

  1. عندما يتم تشغيل ملف PE, يقوم محمل PE بتفحص ترويسة DOS MZ للحصول على إزاحة ترويسة PE, فإن وُجدَت يتم القفز مباشرة إلى مكان ترويسة PE.
  2. يقوم محمل PE بفحص ترويسة PE للتأكد من صلاحيتها, فإذا كانت صالحة, يتقدم إلى نهاية ترويسة PE.
  3. يوجد مباشرة بعد ترويسة PE جدول الأقسام section table. يقوم محمل PE بقراءة المعلومات حول الأقسام و يقوم بربط هذه الأقسام في الذاكرة باستخدام file mapping. و يعطي كل قسم صفاته كما هو محدد في جدول الأقسام.
  4. بعد اكتمال ربط ملف PE بالذاكرة, يهتم محمل PE بالجزء المنطقي من ملف PE, على سبيل المثال بجدول الاستيراد import table.

علماً أنّ الخطوات السابقة تم تبسيطها جداً. لمزيد من المعلومات يمكنك مراجعة MSDN أو وصف LUEVEL SMEYER حول ملفات PE فهي مفصلة بشكل كبير, و يجب اتباعها كمرجع.