
أداة تعتمد على Python لإنشاء Shellcode من PIC C
SHGenOB هي أداة مبنية على بايثون مصممة لتوليد شيلكود من كود C مستقل عن الموقع (PIC). تقوم بأتمتة عملية ترجمة كود C، واستخراج مقطع .text، وتشفير الشيلكود الناتج اختياريًا باستخدام تشفير XOR.
يعتمد هذا المشروع بالكامل على هذا المستند من hasherezade.
ملاحظة هامة لمستخدمي SHGenOB: لكي تعمل أداة توليد الشيلكود هذه بشكل صحيح، يجب أن يكون كود C في ملف الإدخال مكتوبًا ككود مستقل عن الموقع (PIC). تفترض الأداة أن الكود المقدم يتبع مبادئ وخصائص PIC الموضحة أدناه.
الكود المستقل عن الموقع (PIC) هو نوع من كود الآلة يمكن تنفيذه بغض النظر عن عنوان ذاكرته المطلق. هذه الخاصية تجعل PIC مفيدًا بشكل خاص في إنشاء الشيلكود والمكتبات المشتركة وبعض أنواع البرامج الضارة. تشمل الميزات الرئيسية لـ PIC ما يلي:
يعتبر PIC ضروريًا في السيناريوهات التي لا يكون فيها عنوان التحميل الدقيق للكود معروفًا مسبقًا، مما يجعله مفهومًا حاسمًا في تطوير الشيلكود وبعض مجالات برمجة الأنظمة. عند استخدام SHGenOB، تأكد من أن كود C الخاص بك يتبع مبادئ PIC هذه لتوليد شيلكود فعال وموثوق.
pip install pefile argparse
قم بتشغيل السكربت من سطر الأوامر باستخدام الصيغة التالية:
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]
الوسائط:
--code-file أو -cf: (إلزامي) المسار إلى ملف main.c الذي يحتوي على كود PIC--masm-file أو -mf: (اختياري) مسار إلى ملف .masm خارجي لتضمين منطق تجميع إضافي في الشيلكود--debug أو -d: (اختياري) تمكين وضع التصحيح (يتجاوز تنظيف الملفات الوسيطة)--xor-key أو -xk: (اختياري) مفتاح XOR لتشفير الشيلكود (الصيغة: AA,BB,CC)أمثلة:
# الاستخدام الأساسي
python shgenob.py --code-file main.c
# مع ملف MASM خارجي
python shgenob.py --code-file main.c --masm-file custom_logic.masm
# مع جميع الخيارات
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC
save_to_file(content, filename): يحفظ المحتوى المعطى في ملف في الدليل الحاليcleanup(): يحذف الملفات الوسيطة (.asm, .exe, .obj, .lnk) في الدليل الحاليxor_encrypt(shellcode, key): يشفر الشيلكود باستخدام XOR مع المفتاح المقدمinsert_shellcode_into_loader(formatted_shellcode, loader_file): يدرج الشيلكود في قالب المحملextract_text_section(file_path, key): يستخرج مقطع .text من ملف PE ويقوم بتشفيره اختياريًاfind_file(root_dir, file_name): يبحث عن ملف في الدليل المحدد وأدلته الفرعيةrun_command_with_vcvars(command, vcvars_path): يشغل أمرًا مع تعيين متغيرات بيئة Visual Studiocompile_cpp_file(cpp_file, vcvars_path, output_exe): يترجم ملف C++ باستخدام مترجم Visual Studiomodify_asm_file(asm_file): يعدل ملف التجميع المُولَّد ليتوافق مع الشيلكودmain(cpp_file, args): الدالة الرئيسية التي تدير عملية توليد الشيلكوداستخدم العلامة --debug لتجاوز عملية التنظيف وفحص الملفات الوسيطة. هذا مفيد لاستكشاف الأخطاء وإصلاحها وفهم عملية توليد الشيلكود.
نرحب بالمساهمات لتحسين SHGenOB. يرجى اتباع الخطوات التالية: