1 #include <ntos/kdbgsyms.h>
4 typedef NTSTATUS
STDCALL (*PEPFUNC
)(PPEB
);
6 typedef struct _LDR_MODULE
8 LIST_ENTRY InLoadOrderModuleList
;
9 LIST_ENTRY InMemoryOrderModuleList
; // not used
10 LIST_ENTRY InInitializationOrderModuleList
; // not used
14 UNICODE_STRING FullDllName
;
15 UNICODE_STRING BaseDllName
;
23 IMAGE_SYMBOL_INFO SymbolInfo
;
25 } LDR_MODULE
, *PLDR_MODULE
;
27 typedef struct _LDR_SYMBOL_INFO
{
28 PLDR_MODULE ModuleObject
;
31 ULONG SymbolsBufferLength
;
32 PVOID SymbolStringsBuffer
;
33 ULONG SymbolStringsBufferLength
;
34 } LDR_SYMBOL_INFO
, *PLDR_SYMBOL_INFO
;
37 #define RVA(m, b) ((ULONG)b + m)
40 typedef struct _MODULE_ENTRY
52 } MODULE_ENTRY
, *PMODULE_ENTRY
;
54 typedef struct _MODULE_INFORMATION
57 MODULE_ENTRY ModuleEntry
[1];
58 } MODULE_INFORMATION
, *PMODULE_INFORMATION
;
63 LdrpLoadUserModuleSymbols(PLDR_MODULE LdrModule
);
67 PEPFUNC
LdrPEStartup(PVOID ImageBase
, HANDLE SectionHandle
);
68 NTSTATUS
LdrMapSections(HANDLE ProcessHandle
,
71 PIMAGE_NT_HEADERS NTHeaders
);
72 NTSTATUS
LdrMapNTDllForProcess(HANDLE ProcessHandle
,
73 PHANDLE NTDllSectionHandle
);
77 LdrDisableThreadCalloutsForDll(IN PVOID BaseAddress
);
80 LdrGetDllHandle(IN ULONG Unknown1
,
82 IN PUNICODE_STRING DllName
,
83 OUT PVOID
*BaseAddress
);
86 LdrFindEntryForAddress(PVOID Address
,
90 LdrGetProcedureAddress(IN PVOID BaseAddress
,
93 OUT PVOID
*ProcedureAddress
);
96 LdrInitializeThunk(ULONG Unknown1
,
102 LdrLoadDll(IN PWSTR SearchPath OPTIONAL
,
104 IN PUNICODE_STRING Name
,
105 OUT PVOID
*BaseAddress OPTIONAL
);
108 LdrQueryProcessModuleInformation(IN PMODULE_INFORMATION ModuleInformation OPTIONAL
,
109 IN ULONG Size OPTIONAL
,
110 OUT PULONG ReturnedSize
);
113 LdrShutdownProcess(VOID
);
116 LdrShutdownThread(VOID
);
119 LdrUnloadDll(IN PVOID BaseAddress
);