Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ReflectivePluginLoader — مُخطِّط PE انعكاسي ومحرك stomping للوحدات مُحصَّن ضد التهرب لنظام Windows x64 | Kitploit
أدوات/GitHubGitHub/racoten/reflectivepluginloader
أدوات دفاعيةآليات الاستمراريةالهندسة العكسيةشيل كودما بعد الاستغلالتحليل البرمجيات الخبيثةالتعلم والتعليمالفريق الأحمرتطوير الحمولاتاستغلال الملفات الثنائية
GitHubracoten/reflectivepluginloader
82118منذ يوم واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →

ReflectivePluginLoader

مُخطِّط PE انعكاسي ومحرك stomping للوحدات مُحصَّن ضد التهرب لنظام Windows x64

عرض المستودع
مشاركة

ReflectivePluginLoader

License: MIT

مُخطِّط PE انعكاسي بسيط ومحرك استبدال وحدات (module stomping) لنظام Windows x64، مبني حول واجهة IPlugin نظيفة. يقوم بتخطيط DLL من مخزن بايتات في الذاكرة، ويحل الصادرات (exports)، ويستدعي دوال الإضافة — إما من ذاكرة مجهولة (تحميل انعكاسي كلاسيكي) أو من داخل DLL تضحية مُحمَّلة بشكل شرعي (استبدال الوحدات).

مسار استبدال الوحدات مُحصَّن ضد الكشف: حمايات لكل قسم (بدون RWX)، تنظيف التخطيط الخاص، استعادة البايتات الأصلية، وتنظيف الكومة (heap scrubbing). عمليات الفحص بعد التنظيف باستخدام pe-sieve وMoneta وhollows_hunter وBeaconEye وYARA تُرجع صفر نتائج على الوحدة المستبدلة.

البدء السريع

يتطلب CMake 3.15+ وإما MSVC أو Clang أو MinGW على Windows.

# Configure (defaults to Release)
cmake -B build -G Ninja

# Build
cmake --build build

# The build produces:
#   build/Modules/CmdPlugin/cmdplugin.dll   (example plugin)
#   build/Testing/harness.exe               (test harness)

لإنشاء إصدار Debug مع مخرجات تشخيصية كاملة:

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build

الاستخدام

التحميل الانعكاسي الكلاسيكي

.\harness.exe cmdplugin.dll whoami

يعيّن الإضافة إلى ذاكرة مُخصصة عبر VirtualAlloc. لا يوجد إدخال في PEB، ولا إشعار للمُحمّل.

Module Stomping

.\harness.exe cmdplugin.dll whoami --stomp xpsservices.dll
.\harness.exe cmdplugin.dll "dir C:\" --stomp mscms.dll

يحمّل DLL القرباني بشكل مشروع عبر LoadLibrary، ثم يستبدل قسم .text الخاص به بالإضافة كصورة متجاورة. يحدث التنفيذ من مساحة عنوان DLL القرباني — حيث تُنسب مكدسات الاستدعاء وقوائم الوحدات الكود إلى الوحدة القربانية.

يتوقف المشغّل مؤقتًا بعد التنظيف حتى تتمكن من تشغيل ماسحات الذاكرة ضد العملية.

كيف يعمل Module Stomping

1. MapImage(plugin)               private reflective mapping
2. LoadLibrary(sacrificial)       legitimate load, PEB entry
3. Save original .text bytes      for later restoration
4. Copy plugin image -> .text     contiguous image preserves RIP-relative offsets
5. Relocate stomped code          fix addresses for new base
6. Patch entry point              mov eax,1; ret (safe FreeLibrary)
7. Per-section protections        RX / R / RW per section (never RWX)
8. Resolve exports                from private mapping, return stomped addresses
9. Free private mapping           eliminates floating PE artifact
10. Execute plugin                code runs inside "sacrificial.dll"

التنظيف (التهرب)

11. Restore original .text bytes  sacrificial code back in place
12. FreeLibrary(sacrificial)      unloads the module
13. LoadLibrary(sacrificial)      fresh load = clean file-backed pages
14. Scrub heap buffers            zero saved bytes + raw DLL data

بعد التنظيف، تصبح DLL القربانية غير قابلة للتمييز عن وحدة نمطية محمّلة بشكل طبيعي. الصفحات مدعومة بالملفات (وليست خاصة)، والمحتوى يطابق الملف الموجود على القرص، ولا تبقى أي آثار PE على الكومة.

تقنيات التهرب

IOCالتخفيف
مناطق ذاكرة RWXحمايات لكل قسم: .text RX، .rdata R، .data RW
ذاكرة تنفيذية خاصة (PE عائم)VirtualFree للتعيين الخاص بعد حل التصدير
كود وحدة نمطية معدّلاستعادة بايتات .text الأصلية، ثم FreeLibrary + LoadLibrary للحصول على صفحات نظيفة مدعومة بالملفات
رؤوس PE على الكومةmemset(0) لمخزن DLL الخام والبايتات المحفوظة قبل التحرير
انهيار DllMain عند الإلغاءتم تصحيح نقطة الدخول إلى mov eax,1; ret قبل الطمس

هيكل المشروع

ReflectivePluginLoader/
├── CMakeLists.txt
├── Include/
│   ├── IPlugin.h                      Plugin ABI (TaskApi, IPlugin)
│   ├── ReflectiveLoaderEngine.h       PE mapper + export resolver
│   └── StompedLoaderEngine.h          Module stomping engine
├── Modules/
│   └── CmdPlugin/
│       ├── cmdplugin.cpp              Command execution plugin
│       └── CMakeLists.txt
├── Testing/
│   ├── main.cpp                       Test harness
│   └── CMakeLists.txt
└── Tools/
    └── file2hex.py                    DLL to C byte array converter

كتابة إضافة

  1. أنشئ دليلاً تحت Modules/ وقم بتضمين IPlugin.h.
  2. نفّذ واجهة IPlugin:
#include "IPlugin.h"

class MyPlugin : public IPlugin {
public:
    void init()                  const override { /* setup */ }
    void execute(TaskApi* task)  const override { /* work  */ }
    void cleanup()               const override { /* tear  */ }
};
  1. صدّر نقاط الدخول الخمس (create_plugin، destroy_plugin، plugin_init، plugin_exec، plugin_cleanup). استخدم HeapAlloc + placement new لتخصيص آمن مع CRT.

  2. أضف CMakeLists.txt وسجّله في الجذر باستخدام add_subdirectory().

اختيار DLL قرباني

يجب أن يكون قسم .text في DLL القرباني أكبر من حجم الصورة الافتراضية للإضافة. يجب ألا يكون مستخدمًا بشكل نشط من قبل العملية أو خاضعًا لفحص السلامة في وقت التشغيل.

مرشحون جيدون: xpsservices.dll (1.8 MB .text)، mscms.dll، colorui.dll، npmproxy.dll

مرشحون سيئون: ntdll.dll، kernel32.dll (مستخدم بشكل نشط)، clr.dll (خاضع لفحص السلامة)

القيود

  • مدعوم: إعادة تحديد المواقع الأساسية، حل الاستيراد، حمايات لكل قسم، سحق الصورة المتجاورة، تنظيف كامل مع استعادة الصفحات
  • غير مدعوم: استدعاءات TLS، استيرادات التحميل المتأخر، الصادرات المُمرَّرة، CFG، تسجيل جدول SEH
  • السحق: يجب أن تتناسب الصورة الافتراضية الكاملة للإضافة داخل قسم .text القرباني

ما الذي تغيّر (v2.0 — تقوية التهرب)

هذا الإصدار هو إعادة كتابة من الصفر لإثبات المفهوم الأصلي:

  • محرك سحق الوحدات (StompedLoaderEngine.h) — سحق الصورة المتجاورة مع تنظيف تهرب كامل
  • حمايات ذاكرة لكل قسم — .text RX، .rdata R، .data RW؛ لا مزيد من مناطق RWX
  • إزالة الصفحات الخاصة — دورة FreeLibrary + LoadLibrary تستبدل الصفحات المُخصَّصة بصفحات نظيفة مدعومة بالملفات
  • تنظيف الكومة — بايتات DLL الخام وقسم .text الأصلي المحفوظ يتم تصفيرهما قبل نافذة الفحص
  • ترقيع نقطة الدخول — mov eax,1; ret يمنع انهيار DllMain أثناء FreeLibrary
  • تنظيف التعيين الخاص — VirtualFree للتعيين الانعكاسي بعد حل التصدير (يزيل PE العائم)
  • إعادة كتابة المحمّل الانعكاسي (ReflectiveLoaderEngine.h) — تعيين مباشر من مخزن الإدخال، بدون نسخة VirtualAlloc وسيطة
  • تنظيف ABI الإضافة (IPlugin.h) — إزالة المساعدات الميتة (BeaconCout، CStrLenA، PluginAlloc، PluginFree)
  • تنظيف CmdPlugin — إزالة جميع سلاسل العلامات ومخلفات التصحيح
  • إعادة كتابة أداة الاختبار (main.cpp) — ترجمة شرطية عبر NDEBUG؛ إصدارات Release تعرض فقط مخرجات الأوامر وأوامر الفحص
  • إعدادات CMake الافتراضية — نوع بناء Release افتراضيًا، -nostartfiles لـ DLL الإضافات (بدون CRT في الكود المحمّل انعكاسيًا)

نتائج الماسح (بعد التنظيف)

image

المراجع

  • stephenfewer/ReflectiveDLLInjection
  • ired.team - Module Stomping
  • fancycode/MemoryModule
  • PE Format (Microsoft)
  • forrest-orr/moneta
  • hasherezade/pe-sieve

الترخيص

MIT

تنزيل الأداة