Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
LdrLibraryEx — Une petite bibliothèque x64 pour charger des DLL en mémoire. | Kitploit
Outils/GitHubGitHub/cracked5pider/ldrlibraryex
Évasion IDS/IPSPost-ExploitationRed TeamingDéveloppement de Charges UtilesArchived
GitHubcracked5pider/ldrlibraryex

LdrLibraryEx

Une petite bibliothèque x64 pour charger des DLL en mémoire.

Voir le dépôt
469787il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

LdrLibraryEx

Une petite bibliothèque x64 pour charger des dll en mémoire.

Fonctionnalités

  • faible dépendances et utilisation de fonctions (seulement ntdll.dll utilisée)
  • code indépendant de la position
  • léger et minimaliste
  • facile à utiliser
  • charger des modules depuis la mémoire
  • charger des modules depuis le disque
  • prise en charge des ensembles d'API (api sets)
  • contourner les callbacks de chargement d'image (en utilisant la mémoire privée)
  • prise en charge des images avec importations différées, tls, seh, etc.

Documentation

Drapeaux de la bibliothèque

Les drapeaux peuvent être combinés

LIBRARYEX_NONE : Mappe le module depuis le disque en mémoire et exécute le point d'entrée.

LIBRARYEX_BYPASS_LOAD_CALLBACK : Mappe le module depuis le disque dans une mémoire privée (non adossée), ce qui contourne les callbacks de chargement d'image (PsSetLoadImageNotifyRoutine)

: N'exécute pas le point d'entrée du module.

LIBRARYEX_NO_ENTRY

LIBRARYEX_BUFFER : Mappe le module depuis la mémoire au lieu du disque.

Fonction : LdrLibrary

Fonction facile à utiliser pour charger une bibliothèque en mémoire. Le premier paramètre, selon les drapeaux spécifiés, peut être soit un nom de module en chaîne large à charger, soit une adresse mémoire où se trouve le 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
);

Cet exemple montre comment charger un module depuis le disque (depuis le chemin 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 );

Cet exemple montre comment charger un module depuis un tampon mémoire :

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 );

Il est également possible de charger des modules en fonction de leur ensemble d'API (api set) (prise en charge win10+ uniquement) :

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",  );

Fonction : LdrLibraryEx

LdrLibraryEx permet d'intercepter certaines fonctions pour modifier le comportement de la manière dont une bibliothèque doit être mappée en mémoire.

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; 
}

Note

Cette base de code est écrite et optimisée pour x86_64-mingw et il est très probable qu'elle ne fonctionne pas ou ne compile pas sous Visual Studio.

Crédits

Un immense crédit revient aux ressources et projets suivants :

  • DarkLoadLibrary
  • MDSec : Contourner les callbacks noyau du chargeur d'images
  • ReactOS LdrLoadDll
  • Vergilius Project

Ce projet ne devrait pas être utilisé dans un environnement réel ou une opération réelle. Je l'ai principalement écrit pour comprendre et en apprendre davantage sur le fonctionnement du chargeur Windows. Je l'ai écrit sous forme de bibliothèque parce que je voulais l'utiliser pour d'autres types de projets publics et privés. J'ai atteint mon objectif. À plus.

Télécharger l’outil