Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
LdrLibraryEx — مكتبة x64 صغيرة لتحميل ملفات dll في الذاكرة. | Kitploit
أدوات/GitHubGitHub/cracked5pider/ldrlibraryex
التهرب من IDS/IPSما بعد الاستغلالالفريق الأحمرتطوير الحمولاتArchived
GitHubcracked5pider/ldrlibraryex

LdrLibraryEx

مكتبة x64 صغيرة لتحميل ملفات dll في الذاكرة.

عرض المستودع
469786منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

LdrLibraryEx

مكتبة x64 صغيرة لتحميل ملفات dll في الذاكرة.

الميزات

  • اعتماديات قليلة واستخدام دوال محدود (يُستخدم ntdll.dll فقط)
  • كود مستقل عن الموضع (PIC)
  • خفيف الوزن وبسيط
  • سهل الاستخدام
  • تحميل الوحدات من الذاكرة
  • تحميل الوحدات من القرص
  • دعم api sets
  • تجاوز استدعاءات تحميل الصور (باستخدام ذاكرة خاصة)
  • دعم للصور ذات الاستيراد المؤجل، tls، seh، إلخ.

التوثيق

أعلام المكتبة

يمكن دمج الأعلام

LIBRARYEX_NONE: تعيين الوحدة من القرص إلى الذاكرة وتنفيذ نقطة الدخول.

LIBRARYEX_BYPASS_LOAD_CALLBACK: تعيين الوحدة من القرص إلى ذاكرة خاصة (غير مدعومة) مما يتجاوز استدعاءات تحميل الصور (PsSetLoadImageNotifyRoutine)

LIBRARYEX_NO_ENTRY: عدم تنفيذ نقطة الدخول للوحدة.

LIBRARYEX_BUFFER: تعيين الوحدة من الذاكرة بدلاً من القرص.

الدالة: LdrLibrary

دالة سهلة الاستخدام لتحميل مكتبة في الذاكرة. المعلمة الأولى، بناءً على الأعلام المحددة، يمكن أن تكون إما اسم وحدة كنص عريض (wide string) لتحميله أو عنوان ذاكرة حيث يوجد ملف PE.

root@kitploit:~
/*!
 * @brief
 *  load library into memory
 *
 * @param Buffer
 *  buffer context to load library
 *  either a wide string or a buffer pointer 
 *  the to PE file to map (LIBRARYEX_BUFFER)
 *
 * @param Library
 *  loaded library pointer
 *
 * @param Flags
 *  flags
 *
 * @return
 *  status of function
 */
NTSTATUS LdrLibrary(
    _In_  PVOID  Buffer,
    _Out_ PVOID* Library,
    _In_  ULONG  Flags
);

يوضح هذا المثال كيفية تحميل وحدة من القرص (من مسار System32):

root@kitploit:~
PVOID Module = { 0 };
ULONG Flags  = { 0 };

//
// mapping flags to be used by the library
//
Flags = LIBRARYEX_NONE; 

//
// map file into memory
//
if ( ! NT_SUCCESS( Status = LdrLibrary( L"advapi32.dll", &Module, Flags ) ) ) {
    printf( "[-] LdrLibraryEx Failed: %p\n", Status );
    return; 
}

printf( "[*] Module @ %p\n", Module );

يوضح هذا المثال كيفية تحميل وحدة من مخزن مؤقت في الذاكرة:

root@kitploit:~
PVOID Module = { 0 };
ULONG Flags  = { 0 };

//
// mapping flags to be used by the library
//
Flags = LIBRARYEX_NONE  | 
        LIBRARYEX_BUFFER; 

//
// read file on disk into memory
//
if ( ! ( Image = ReadFileBuffer( L"C:\\Windows\\System32\\advapi32.dll", NULL ) ) ) {
    puts( "[-] ReadFileBuffer Failed" );
    return;
}

//
// map file into memory
//
if ( ! NT_SUCCESS( Status = LdrLibrary( Image, &Module, Flags ) ) ) {
    printf( "[-] LdrLibraryEx Failed: %p\n", Status );
    return;
}

printf( "[*] Module @ %p\n", Module );

من الممكن أيضاً تحميل الوحدات بناءً على api set الخاصة بها (دعم ويندوز 10+ فقط):

root@kitploit:~
//
// map file into memory
//
if ( ! NT_SUCCESS( Status = LdrLibrary( L"api-ms-win-base-util-l1-1-0.dll", &Module, Flags ) ) ) {
    printf( "[-] LdrLibraryEx Failed: %p\n", Status );
    return;
}

printf( "[*] Module @ %p\n",  );

الدالة: LdrLibraryEx

تسمح LdrLibraryEx بربط (hook) دوال معينة لتعديل سلوك كيفية تعيين المكتبة في الذاكرة.

root@kitploit:~
//
// mapping flags to be used by the library
// and insert the loaded module into Peb
//
Flags = LIBRARYEX_BYPASS_LOAD_CALLBACK |
        LIBRARYEX_NO_ENTRY;

//
// init LibraryEx context
//
if ( ! NT_SUCCESS( Status = LdrLibraryCtx( &Ctx, Flags ) ) ) {
    printf( "[-] LdrLibraryCtx Failed: %d\n", Status );
    goto END;
}

//
// hook function
//
Ctx.LdrLoadDll = C_PTR( HookLdrLoadDll );

//
// map file into memory
//
if ( ! NT_SUCCESS( Status = LdrLibraryEx( &Ctx, L"cryptsp.dll", &Module, Flags ) ) ) {
    printf( "[-] LdrLibraryEx Failed: %p\n", Status );
    return; 
}

ملاحظة

كُتبت قاعدة التعليمات البرمجية هذه وحُسّنت لبيئة x86_64-mingw، ومن المرجح جداً ألا تعمل أو تُترجم (compile) تحت Visual Studio.

الاعتمادات

يعود الفضل الكبير إلى الموارد والمشاريع التالية:

  • DarkLoadLibrary
  • MDSec: تجاوز استدعاءات نواة محمل الصور
  • ReactOS LdrLoadDll
  • Vergilius Project

لا ينبغي استخدام هذا المشروع في بيئة أو عملية حقيقية. لقد كتبته أساساً لفهم ومعرفة المزيد عن كيفية عمل محمل ويندوز. كتبته كمكتبة لأنني أردت استخدامه لأنواع أخرى من المشاريع العامة والخاصة. لقد حققت هدفي. أراك لاحقاً.

تنزيل الأداة