
🌸 بيئة تفاعلية لبرمجة الشيلكود لصياغة شيلكودات بسهولة
Shellen هي بيئة تفاعلية لكتابة أكواد الشل. إذا كنت تريد أداة عملية لكتابة أكواد الشل، فقد يكون Shellen صديقك. يمكن أيضًا استخدام Shellen كأداة للتجميع أو التفكيك.
تُستخدم محركا keystone وcapstone في جميع عمليات Shellen.
يعمل Shellen فقط على python3. قد يظهر دعم python2 في المستقبل.
أولًا، يجب عليك تثبيت تبعيات Shellen:
$ sudo apt-get install cmake python3-dev python3-setuptools
يمكنك تثبيت النسخة المستقرة من Shellen باستخدام pip3:
$ sudo pip3 install shellen
أو إذا كنت تمتلك بالفعل جميع الحزم المطلوبة (انظر المتطلبات):
$ python3 setup.py install
إذا واجهت أي مشاكل في تثبيت keystone-engine، فيجب عليك تجميع keystone-engine (انظر ملف COMPILE.md في مستودع keystone)
بعد تثبيت Shellen وحزمه المطلوبة، يمكنك تشغيل Shellen بكتابة ما يلي في الطرفية:
$ shellen
يمكنك تشغيل أمر help الخاص بـ Shellen للحصول على معلومات حول استخدام Shellen.
يقوم Shellen بتجميع التعليمات وتفكيكها، لذلك هناك وضعان للاستخدام: asm وdsm على التوالي. هناك ميزات أخرى تشمل البحث في جداول استدعاءات النظام والبحث عن أكواد الشل الشائعة.
يمتلك Shellen موجّهًا مفيدًا يعرض الوضع الحالي، ونظام التشغيل (نظام التشغيل لاستدعاءات النظام)، والبنية المعمارية المختارة للوضع الحالي. يبدو موجّه Shellen هكذا:
L:asm:x86_32 >
يمكنك تعديل إدخالك كما لو كنت تكتب في طرفية. أيضًا، يسجّل Shellen سجل أوامرك (فقط اضغط على السهم لأعلى لرؤية أوامرك السابقة).
L هو الاسم المختصر لـ Linux في الموجّه. فيما يلي جميع أسماء أنظمة التشغيل الأخرى:
L هو LinuxW هو WindowsM هو MacOSإذا أردت تغيير نظام التشغيل، فاكتب setos [linux/windows/macos] كما يلي:
L:asm:x86_32 > setos windows
[+] OS changed to windows.
لتغيير الوضع الحالي، أدخل asm أو dsm في الموجّه.
L:dsm:arm32 > asm
[+] Changed to asm (assembly) mode
L:asm:x86_32 > dsm
[+] Changed to dsm (disassembly) mode
L:dsm:arm32 >
| الأمر | الوصف |
|---|---|
clear | امسح شاشة الطرفية. كالمعتاد cls على Windows أو clear على أنظمة *nix. |
help | اعرض رسالة المساعدة. |
لتجميع التعليمات، اكتبها وافصل بينها بفواصل منقوطة كما هو موضح هنا:
L:asm:x86_32 > mov edx, eax; xor eax, eax; inc edx; int 80;
[+] Bytes count: 7
Raw bytes: "\x89\xc2\x31\xc0\x42\xcd\x50"
Hex string: "89c231c042cd50"
إذا كانت وحدات البايت المجمّعة تحتوي على بايت فارغ (null byte)، فسيخبرك Shellen بذلك.
التفكيك مشابه للتجميع. بدلاً من ذلك، اكتب وحدات البايت في الموجّه وشاهد النتيجة!
L:dsm:x86_32 > 89c231c042cd50
0x00080000: mov edx, eax
0x00080002: xor eax, eax
0x00080004: inc edx
0x00080005: int 0x50
أيضًا، يمكنك تشغيل كود الشل الخاص بك في عملية فرعية. انتبه، فقد يؤدي هذا إلى الإضرار بنظامك!. القفز إلى آخر كود شل في عملية فرعية. ما الذي قد يسوء؟' لاحظ أنك لا تتحكم في العنوان الأساسي الذي يتم تحميل كودك عنده، ويفترض هذا أن التعليمات ستكون منطقية لوحدة المعالجة المركزية لديك. انظر إلى help داخل shellen لمعرفة كيفية استخدامه.
أخطط لتنفيذ العملية الفرعية في بيئة افتراضية ما لجعل تشغيل أكواد الشل التي قد تكون خطيرة أكثر أمانًا.
يعمل وضعا asm وdsm مع بنى معمارية مختلفة. لعرض قائمة بالبنى المعمارية المتاحة للوضع الحالي لـ Shellen، اكتب ما يلي:
L:dsm:x86_32 > archs
┌────────┬────────┬─────────┬─────────┬────────┐
│ │ │ │ │ │
│ arm32 │ mips32 │ sparc32 │ systemz │ x86_16 │
│ arm64 │ mips64 │ sparc64 │ │ x86_32 │
│ arm_tb │ │ │ │ x86_64 │
└────────┴────────┴─────────┴─────────┴────────┘
إذا أردت تغيير البنية المعمارية الحالية، أدخل ما يلي:
L:dsm:x86_32 > setarch arm32
[+] Architecture of dsm changed to arm32
عند إنشاء كود شل، ستحتاج إلى استدعاءات النظام. للبحث عن استدعاءات النظام باستخدام Shellen، اكتب sys واسم استدعاء النظام المطلوب. سيعرض Shellen قائمة باستدعاءات النظام التي قد تحتوي على استدعاء النظام الذي كنت تبحث عنه.
L:asm:x86_32 > sys open
┌────────┬───────┬──────────────────────┬──────────────────────┬──────────────┬──────────────┐
│ name │ eax │ ebx │ ecx │ edx │ esi │
├────────┼───────┼──────────────────────┼──────────────────────┼──────────────┼──────────────┤
│ open │ 0x05 │ const char *filename │ int flags │ umode_t mode │ - │
│ openat │ 0x127 │ int dfd │ const char *filename │ int flags │ umode_t mode │
└────────┴───────┴──────────────────────┴──────────────────────┴──────────────┴──────────────┘
يطبع sys قائمة بالمتغيرات المحتملة لاستدعاء النظام المقدم. يعتمد جدول استدعاءات النظام الذي يبحث فيه Shellen على البنية المعمارية ونظام التشغيل المختارين. في هذه الحالة، البنية المعمارية هي x86_32 ونظام التشغيل هو Linux.
يمكن لـ Shellen عرض قائمة بأكواد الشل الشائعة بناءً على كلمتك المفتاحية. يستخدم بحث الكلمات المفتاحية في Shellen واجهة برمجة تطبيقات shell-storm.org (شكرًا للمؤلف!) ويمكن استخدامه هكذا:
L:asm:x86_32 > shell <keyword> <count>
لاحظ أن معامل count غير مطلوب. توجد صورة لمخرجات shell <keyword> <count> في قسم الصور.
حاليًا، Shellen مدعوم فقط على Linux. إذا أردت إضافة وظائف لنظامي Windows أو MacOS، فاكتب issue وسأضيف الدعم.
إذا وجدت مشكلة/خطأ أو شيئًا ما، فاكتب issue حول هذه المشكلة. أيضًا، إذا كنت تعتقد أن ميزة ما ستكون إضافة رائعة إلى Shellen، فافعل الشيء نفسه -- اكتب issue وسأحاول إضافة الميزة التي طلبتها.
asm وdsmمجرد مجموعة صغيرة من الصور. (إنها قديمة بسبب إضافة ميزات مختلفة)
quit,q,exit | أنهِ الجلسة الحالية واخرج |