إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

مدخل الى معالجات arm

تقليص
X
تقليص

  • مدخل الى معالجات arm



    بسم الله الرحمن الرحيم

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

    المهم بعد هده المقدمة البسيطة دعونا ندخل الى صلب الموضوع ما هي اجهزة Arm اجهزة Arm هي الاجهزة التي تعتمد على معالج Arm وما هو معالج Arm معالج Arm هو [ هو نوع من أنواع المعالجات الدقيقة الذي يتعرف على أعداد قليلة من الأوامر (Reduced Instruction Set Computer) و يستخدم هذا المعالج بكثرة في الأجهزة ذات المصادر (الإمكانيات) المحدودة مثل أجهزة الهواتف المحمولة وأجهزة الحاسوب الكفي وأجهزة الألعاب المحمولة والآلات الحاسبة بسبب قدرته علي توفير استهلاك الطاقة] (المصدر wikipedia)

    قبل ان اتابع اود ان اقوم بتعقيب بسيط على هدا التعريف في الحقيقة الفرق بين معالجات الحواسيب و معالجات Arm هو ان معالجات الحواسيب تعرف نوعا من الرفاهية فالداكرة حدث ولا حرج وقوة المعالج قوية جدا وهدا راجع الى حجمه الدي يتيح له القيام بهده الامور لدلك فعدد الاوامر التي تستطيع هده المعالجات التعرف عليها كثيرة جدا اما معالجات Arm فهي لم تصمم لكي تعيش في انظمة تقوم بتقديرها والاهتمام بها لدلك ولتغلب على هدا الامر كان لابد لهده المعالجات ان تكون قادرة على التعرف على قدر بسيط من الاوامر فقط ولكن ان تكوت قادرة على فعل ما تستطيع معالجات الحواسيب فعله

    و تجدر الاشارة الى ان هده المعالجات مميزة عن بعضها البعض ففي الحقيقة فهي تصمم وترخص في شركة بريطانية اسمها ARM Holdings هده الاخيرة تقوم ببيع الترخيص لا غير الى الشركات هده الاخيرة تعمل على تطوير هده المعالجات على حسب اهدافها ومن اشهر الشركات التي تستخدم هده المعالجات Samsung,NVidia,Apple

    الشيئ الرائع حول الاسمبلي في بيئة arm هو ان التعليمات فيها "شرطية" واقصد بدلك ان التعلميات يمكن ان تنفد ادا تحقق شرط ما او ان تتحول الى nop ادا لم يتحقق هدا الشرط قد يبدو الامر مربكا ولكنه ليس كدالك دعونا نرى مثالا

    اولا نسخة السي

    كود PHP:

    if (a==0){
    a=1;

    لو قمنا بتحويل هدا الكود الى Assembly في بيئة x86 سيصبح هكدا تقريبا

    كود PHP:

    cmp eax
    ,0
    jnz add1

    add1
    :
    mov eax,
    ام في بيئة Arm فسيكون هكدا


    كود PHP:

    cmp   r2
    #0

    moveq r2#1 
    امل ان هده الاكواد لم تخفكم (رغم انها ارعبتني عندما رايتها اول مرة ) ولكن كما يمكنكم الملاحظة فان الشروط التي يمكن اظافتها الى الاوامر قد تجعل المعالج يقوم بعمله بشكل سريع جدا ففي المثال السابق فان التعليمة mov ادا تم اظافة eq لها تصبح بمعنى mov if equal وفي هدا المثال فان البيانات سوف تنقل ادا كانت رابة zero تساوي 1 يعني ان المسجل r2 يساوي 0 وبالتالي تنقل البيانات وراية الصفر سوف تفعل من خلال الامر cmp فادا كان هناك تشابه فراية الصفر سوف تكون 1 وادا كان هناك اختلاف فراية الصفر ستكون صفر

    وكمثال اخر على ليونة Assembly في بيئة Arm فلنفترض مثلا اننا نريد دفع ثلات مسجلات الى Stack في بيئة x86 (عندما اكتب x86 فانا اقصد حينها معالجات الحواسيب بصفة عامة رغم اختلافاتها) يمكننا فعل دلك عن طريق

    كود PHP:
    push eax
    push ebx
    push ecx 
    اما في بيئة Arm فيمننا فعل دلك في سطر واحد ودلك كالتالي

    كود PHP:
    push {r0,r1,r2
    كما تلاحظون قمنا بدفع ثلات مسجلات ضربة واحدة (اود ان اشير ايضا الى ان في بيئة Arm لا يمكن دفع مسجل بشكل منفرد )


    المسجلات في بنية ARM




    كما ترون فمعالجات Arm لديها عدة مسجلات ولكن كنظيرنها x86 فنحن لا تهمنا كل هده المسجلات (من وجهة نظر مخترق) بل يهمنا مسجل pc وهو المكافئ لمسجل eip في بيئة x86 وتجدرة الاشارة الى ان في بيئة Arm لدينا امكانية الكتابة مباشرة الى مسجل pc وهو امر مستحيل في بيئة x86

    هناك امر مهم جدا هو ان طريقة نداء دالة معينة تختلف من بنية الى بنية اخرى فمثلا في x86 يتم تسجيل عنوان العودة في Stack اما في Arm فان الامر معقد نوعا ما ولكن سوف ناخد ابسط حالة وهي الحالة التي يتم فيها النداء على الدوال باستخدام تعليمة BL او ما يعرف ب Branch and link وهي تعني اقفز واربط وباختصار فهي تقوم بالضبط بهدا الشيئ فهي تقفز الى الكود المراد تنفيده مع الاحتفاظ بعنوان العودة في مسجل LR هدا الاخير قد يتم حفظه في stack في حال ان الكود المنادى سوف ينادي بدوره على كود اخر (ابسط حالة ) من هنا يمكنكم الاستنتاج ان استغلال ثغرات buffer overflow ليس بديهيا كما هو الحال في بيئة x86 وربما ربما قد اكتب موضوعا اخر اوضح فيه هده الامور ان شاء الله

    اود الاشارة الى ان هدا الموضوع بسيييييييييييط جدا لانني لم اتحدث عن كل الطرق وهدا راجع الى انه ادا اردنا التعمق اكثر فاننا سوف نحتاج الى فهم اكثر ببنية Arm وبلغة الاسمبلي ولكن الجميل هو ان ناخد فكرة عن الموضوع خصوصا انه لا توجد مواضيع عربية نهائيا تخص هدا المجال وهو امر مؤسف جدا لان التوجه الحالى في الاختراقات هو نحو الهواتف الدكية واللوائح الرقمية التي كما اشرت سابقا تعتمد على معالجات Arm


    ملاحظة

    -في الحقيقة كنت قد كتبت هدا الموضوع مند مدة طويلة وكنت انوي ان ارفق معه فيديو اشرح فيه استغلال برنامج مصاب ب Buffer overflow في هده البيئة وبما انني تهاونت اكثر من مرة فانني فضلت ان انشر هدا المقال المتواضع (على الاقل)

    -كان هناك اخ قد راسلني للكتابة حول هدا الموضوع مند مدة وكنت قد اعتدرت له لانه حينها لم يكن لدي بيئة لكي اجرب فيها ولم اكن مهتما بالتجريب على محاكي على اي امل ان يجد الموضوع

    -لمعلومات اكثر وافضل يمكنكم مراجعة هدا المقال

    http://www.exploit-db.com/wp-content...docs/24493.pdf

    وهناك عدة مواضيع متقدمة في هدا المجال ومع قليل من البحث يمكنكم ايجادها بسرعة
      لا يمكن إضافة تعليقات.

    التصانيف

    تقليص

    Latest Articles

    تقليص

    • تجربة تثبيت توزيعة ديبيان بجانب ويندوز بدون usb او cd
      أحمد غريب
      التجربة تمت على VirtualBox النظام ويندوز اكسبي قرص صلب واحد قسمين c و d

      التجربة قسمين القسم الاول تجهيز ملف iso دبيان لعملية الاقلاع لايف من الهاردسك والقسم الثاني عملية الثتبيت تحتاج الى
      27-11-2016, 03:08 PM
    • عداد الإستغفار
      مبتدى في للينكس
      السلام عليكم ورحمة الله و بركاته

      شرح فكرة السكربت:

      عداد الأستغفار يعمل عند الضغط على أختصار من الكيبورد و عند كل ضغطة يضيف 1 إلى العداد و يظهر إطار صغير في منتصف الشاشة لعرض العدد لمدة ثانية ثم يتم أغلاقه تلقائياً . أذا وصل العداد إلى 100 يرجع إلى الصفر. يتم حفظ العدد في ملف count.txt يتم إنشاءه تلقائياً بواسطة السكربت.


      شرح إعداد السكربت:

      1. قم بفتح مجلد Home وقم بإنشاء مجلد بإسم counter

      2. في داخل المجلد counter قم بإنشاء ملف نصي بإسم Counter.java , ثم قم بنسخ السكربت التالية و ضعه في داخل الملف ثم قم بالحفظ



      :
      package counter; import java.awt.BorderLayout; import java.awt.Event; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.SwingConstants; public class Counter extends JFrame { private static String fileName = System.getProperty("user.dir") + "/counter/count.txt"; public Counter() { this.setTitle("Counter"); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack(); this.setSize(150, 150); this.setVisible(true); } public static void main(String[] args) { Counter obj = new Counter(); int count = 0; try { try { try { String countString = readFile(fileName, StandardCharsets.UTF_8).trim(); count = (int) Integer.parseInt(countString); } catch (Exception e) { outResult(fileName, String.valueOf(count)); } finally { if (count
      ...
      23-11-2016, 02:11 AM
    • سكربت بايثون لتسهيل تثبيت بعض الأشياء في فيدورا
      yucef
      بسم الله الرحمن الرحيم
      السلام عليكم ورحمة الله وبركاته




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

      https://github.com/yucefsourani/arfedy

      ...
      23-11-2016, 02:09 AM
    • إعادة تسمية الملفات باستخدام rename
      OtmanGX
      لينكس على السّريع : إعادة تسمية الملفات باستخدام rename


      تذكير بالموضوع السابق : إعادة تسمية الملفات باستخدام mv

      كما في المرة السابقة سنتحدث اليوم عن إعادة تسمية مجموعة من الملفات لكن باستخدام أداة أخرى وهي rename ؛ بحيث أنّنا لن نضطر لاستعمال حلقات التكرار والأمر مشابه نوعا ما لما يقوم به الأمرsed ، لكن الأداة rename تستخدم التعابير النظامية perlexpr لكننا سنذكر فقط التعابير النظامية المشتركة بين الاثنين .
      بعض خصائص الأمر :
      n, –no-act- : يوصى باستخدام هذه الخاصية كثيرا ، فمن خلالها يتم إظهار التغييرات التي ستتم بدون إجراء أي تعديل
      f, –force : الكتابة على الملفات بدون أدنى تحذير
      v, –verbose – : تفعيل وضع verbose ليتم إظهار التغييرات الجارية
      ويكون الشكل العام للأمر كالتالي :

      :
      rename [option] 's/old-name/new-name/' file
      باستبدال file بالملفات التي تود تغيير أسمائها
      كمثال أوّلي مثلا نريد استبدال المسافات الفارغة المتواجدة في أسماء الملفات أو المجلدات بالرمز _ :

      المثال 1 :
      :
      rename 's/ /_/g' *
      g ليتم الاستبدال في أكثر من موضع إن وجد
      الآن سنقوم كالعادة بإنشاء مجلد نقوم فيه بأمثلتنا
      ...
      23-11-2016, 02:05 AM
    • المراقبة العالمية ! Global surveillance
      عبدالرحمـن محمد
      السلام عليكم ورحمة الله

      مقدمة :
      في يونيو 2013، سرَّب إدوارد سنودين، وهو عميل متعاقد مع وكالة الأمن القومي، مستندات تّصِف بريسم "ومجموعة برامج أخري" بأنه برنامج يتيح مراقبة معمقة للاتصالات الحية والمعلومات المخزنة. ويمكن من استهداف أي عميل لشركة منخرطة في برنامج بريسم، في حال كان هذا العميل يسكن خارج الولايات المتحدة، أو كان مواطنًا أمريكيًا له اتصالات تتضمن محتويات وِب خاصة بأشخاص خارج الولايات المتحدة. البيانات التي يقال أن بريسم يمكِّن من الحصول عليها تتضمن، رسائل البريد الإلكتروني، ومحادثات الفيديو والصوت، والصور، والاتصالات الصوتية ببرتوكول الإنترنت، وعمليات نقل الملفات، وإخطارات الولوج وتفاصيل الشبكات الاجتماعية.
      كشفت الوثائق المسرّبة أن NSA كانت قادرة على الدخول مباشرة إلى الخوادم الخاصة لكل من
      ...
      23-11-2016, 02:04 AM
    • اضافة مستخدم لينيكس جديد و استعمال نفس اسم الحساب لMySQL و قاعدة بيانات بإسمه ايضًا.
      superlinux
      طبعًا هذه استعملها لفتح حساب جديد لشخص يريد ان يستعمل مجلده المنزل (او home directory بالانجليزي) لحفظ موقع الويب خاصته. يعني هذه طريقة ارجو تكون خفيفة ظريفة لإدارة الخادم عليكم. و هكذا ابدؤوا بيع المواقع عالسريع.

      انا استعمل دبيان 8.0 جسي هنا.

      قبل أي شيء, لتوظيف المجلدات المنزل كلها لتكون محافظ لصفحات ويب لكل مستخدم. نفعّل الوحدة userdir:
      كود:
      a2enmod userdir
      بس على شان تفهم كيف تحفظ الامر السابق: a2 = apache2 web server , enmod =enable module
      هناك الكثير من الاوامر تخص خادم الويب اباتشي تبدأ بــ a2 .

      ثم حرر بأي محرر نصي مثل vi او pico ملف اعدادات الاباتشي:

      كود:
      vi /etc/apache2/apache2.conf
      ضع في آخر سطر في الملف على سطر مستقل لوحده ما يلي:
      كود:
      UserDir public
      UserDir disable root
      الكلمة public_html هو اسم مجلد موجود في المجلد المنزل مباشرة. بمعنى لو كان عندك اسم مستخدم اسمه saleem (سليم) , لازم سليم يضع موقعه على الخادم داخل مسار القرص /home/saleem/public_html/ . و التعل...
      23-11-2016, 02:03 AM
    يعمل...
    X