الدرس 1 من 9
الهندسة العكسية والبايت
- 10 دقائق
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
البرنامج بايتات، والبايت رقم من 0 إلى 255
الشرح
الهندسة العكسية (reverse engineering) أن تفهم كيف يعمل برنامج من الداخل بالنظر في بايتاته لا في شفرته المصدرية. تتعلّمها هنا على برامج صغيرة صنعناها لك. وهي مشروعة حين تدرس برنامجك أنت، أو ما تأذن به رخصته، أو في بحث أمني، أو في تحدّيات تعليمية (crackmes). أمّا كسر برنامج مدفوع، أو تجاوز مانع غشّ، أو فكّ حماية سكربت ليس لك فليس منها، ولا نعلّمه. كل ما في هذه المنطقة بايتات اخترعناها، تعمل كلّها داخل Python في متصفّحك.
وأوّل ما تحتاجه أن ترى البرنامج كما يراه الحاسوب، أي سلسلة بايتات. والبايت (byte) ثمانية بتات، فهو رقم صحيح من 0 إلى 255. وفي Python يحمل النوع bytes سلسلة منها، فتُنشئه من قائمة أرقام مثل bytes([0x89, 0x50])، وتقرأ كل بايت فيه بالفهرس كما في القائمة، فيعطيك data[0] رقمًا لا حرفًا.
وتعمل عليه الدوال التي تعرفها، فالدالة len(data) تعطي عدد البايتات، وsum(data) مجموعها. أمّا الطريقة data.hex() فتعرضه نصًّا ست عشريًّا (hexadecimal) برمزين لكل بايت، وهي الصورة التي ستقرأ بها البايتات في كل دروس هذه المنطقة.
المطلوب
اكتب الدالة summary(data) لتُرجع عن أيّ كتلة بايتات صفًّا من أربع قيم بهذا الترتيب: أوّل بايت فيها، وآخر بايت، ومجموع بايتاتها كلّها، ونصّها الست عشري. البايتات في data أوّل ستة بايتات من ملف صورة، جرّب دالّتك عليها.
الفحوص
5 فحوص- الدالة summary تُرجع أوّل بايت وآخره
- الدالة summary تحسب المجموع
- الدالة summary تكتب النصّ الست عشري
- الدالة summary تعمل على كتلة أخرى
- البايتات في data بقيت كما هي