, 15 tweets, 3 min read Read on Twitter
الهندسة العكسية reverse engineering يندرج تحتها معاني عديدة تختلف كثيراً بمستوى صعوبتها ومجال تطبيقها بالحياة العملية.

من أهم معانيها:

التحليل العكسي لكود برنامج بلغة الآلة native.
التحليل العكسي لكود برنامج بلغة وسيطة managed.
التحليل العكسي لسلوك برنامج behavior.

يتبع..
البرامج التي يتكون الكود المصدري الخاص فيها من لغة الآلة machine language ويتم الترميز لها ب assembly، تكون برامج مكتوبة بلغات compiled او محولة من اللغة الأصلية C/C++/Go بالعادة إلى لغة الأسمبلي.

غالبا لا يمكن بوضوح رد كودها الي الكود الأصلي لذلك يتم تحليل الassembly مباشرة
مثل هذه البرامج تحتاج لتحليل كودها الى أداة فك لغة الآلة disassembler حيث تتحول من أرقام بصيغة hex مثل 89E5 إلى mov ebp, esp

حيث نسمي mov باسم opcode يعني كود لأمر mov لنقل قيمة رقم.

أشهر لغات آلة هي Intel x86 و ARM.

برامج تقوم بعمل disassembler مثل IDA Pro و Ollydbg.
هذه البرامج تأخذ برنامج بصيغة تنفيذية مثل dll exe وتفتح كود الآلة وتقوم بعملية الفك disassembly وتظهر لك الاوامر opcodes كما في الصورة.

بلا شك تحتاج لفهم عميق للغة الassembly + مواصفات النظام الذي عمل البرنامج له.

فرق برامج التحليل عن بعض هو بقدرتها على توضيح العمليات وبياناتها
بعض برامج التحليل العكسي تستطيع التعرف على الأشكال المكررة للدوال فمثلا تستطيع ان تتعرف على استخدام دالة CreateFile في الويندوز او مثلا strcpy وتستطيع ربط المكتبات البرمجية المستخدمة بالبرنامج وبعضها يستطيع ان يظهر بعض البيانات النصية strings الثابتة المستخدمة في البرنامج
طبعا لا أحد يقرأ برنامج assembly من الأول إلى الآخر بل يقوم بمحاولة فهم البرنامج عن طريق بعض الأمور التالية:

- معرفة مدخل البرنامج entry point.

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

معرفة الدوال التي يستوردها البرنامج من مكتبات النظام imports
بعض البرامج تتبع وسائل وطرق تصعب عملية التحليل او فك لغة الآلة للقيام بلخبطة الdisassembly مثلا عن طريق القفز لمكان غير متوقع بالبرنامج مثلا بنصف احد الأوامر او استخدام كود مشفر يتم فك تشفيره فقط اثناء التحليل او بمحاولات كشف استخدام برامج التحليل اثناء التشغيل.
هنا يأتي دور تحليل سلوك البرنامج او بمعنى اخر اما تشغيله سطرا بسطر debugging او بتشغيله بشكل غير متقطع ثم محاولة تحليل اثره على السستم dynamic analysis.

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

هناك أيضا تحليل سلوك البرنامج وتأثيره على النظام وهذا يأتي
تحليل سلوك البرنامج من الخارج يعني معرفة الملفات التي قام بفتحها والتي قام بكتابتها وما الذي قام بكتابته فيها، ومعرفة الاتصالات التي يقوم بها البرنامج على الشبكة ومع من يتصل والذي يتم إرساله واستقباله مثلا أوامر من مركز التحكم بالفايروس cnc او تسريب بيانات للخارج.
وايضا البرامج التي قام البرنامج بتشغيلها تباعاً و اي عمليات registry قام بها.
يتم تشغيل البرنامج ببيئة افتراضية virtual للتحكم الكامل به.

احيانا يتم عمل شبكة تشبيهية غير حقيقية لتحليل اتصالاته دون جعله يتصل بشكل حقيقي.

البرامج المستخدمة مثل systinternals و Wireshark وغيرها
النوع الآخر من تحليل البرامج هو للبرامج المكتوبة بلغات وسيطة ليست بلغة الآلة بل بلغة يتم ترجمتها أثناء التشغيل runtime مثل Java و dotnet.

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

وسلامتكم
تويتر الغبي قطع التسلسل إلى نصفين. هنا إكمال الجزء الثاني:

Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Mohammed Aldoub
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!