عندما تفتح ملفاً تنفيذياً (مثل ملفات .exe في ويندوز أو ملفات الـ ELF في لينكس) باستخدام محررات النصوص العادية، ستجد ركاماً من الرموز الغريبة وغير المفهومة. هنا يأتي دور strings ليعزل لك المفيد من هذا الركام.

ما هي أداة strings وكيف تعمل تحت الغطاء؟

أداة strings هي أداة سطر أوامر (Command-line utility) متوفرة بشكل افتراضي في أنظمة Linux/Unix، وتوجد منها نسخ لأنظمة Windows (مثل أداة Strings من مجموعة Sysinternals).

آلية العمل (Under the Hood)

الملف التنفيذي يتكون من بايتات (Bytes). بعض هذه البايتات يمثل تعليمات للمعالج (Machine Code/Opcodes)، وبعضها الآخر يمثل نصوصاً يحتاجها البرنامج (مثل رسائل الخطأ، نصوص واجهة المستخدم، أو روابط السيرفرات).

تقوم الأداة بفحص الملف بايت تلو الآخر، وتبحث عن تتابع من الأحرف القابلة للقراءة (Printable Characters) وفقاً لترميز ASCII (والتي تقع قيمتها غالباً بين 32 و 126 في جدول ASCII)، وتستمر في القراءة حتى تصطدم بحرف غير قابل للقراءة أو تنتهي السلسلة النصية بما يُعرف بـ Null-terminator (وهو البايت 0x00 الذي يحدد نهاية النص في لغة C).

بشكل افتراضي، لا تعرض لك الأداة أي نص إلا إذا كان يتكون من 4 أحرف متتالية أو أكثر.

لماذا نستخدم strings في اختبار الاختراق والهندسة العكسية؟

تساعدك هذه الأداة في جمع معلومات استخباراتية (Information Gathering) سريعة جداً عن الملف دون الحاجة لتشغيله (وهذا يحميك أثناء تحليل البرمجيات الخبيثة Malware Analysis). من أهم ما يمكن العثور عليه:

الاستخدام العملي والأوامر المتقدمة (Advanced Usage)

لا تكتفِ فقط بكتابة الأمر بشكل عام، هناك خيارات (Flags) تجعل من هذه الأداة قوة ضاربة:

1. الاستخدام الأساسي (Basic Usage)

لعرض كافة النصوص داخل ملف معين:

strings vulnerable_binary

2. البحث عن نصوص محددة (Combining with Grep)

في الملفات الكبيرة، قد يطبع لك الأمر آلاف السطور. للبحث عن شيء محدد مثل روابط مواقع أو كلمة flag: