MCPcopy Create free account
hub / github.com/ConEmu/ConEmu / GetLoadLibraryAddress

Function GetLoadLibraryAddress

src/ConEmuHk/Injects.cpp:62–104  ·  view source on GitHub ↗

Проверить, что gfLoadLibrary лежит в пределах модуля hKernel!

Source from the content-addressed store, hash-verified

60
61// Проверить, что gfLoadLibrary лежит в пределах модуля hKernel!
62UINT_PTR GetLoadLibraryAddress()
63{
64 if (gfLoadLibrary.fnPtr)
65 return gfLoadLibrary.fnPtr;
66
67 UINT_PTR fnLoadLibrary = 0;
68 HMODULE hKernel32 = ::GetModuleHandle(L"kernel32.dll");
69 HMODULE hKernelBase = IsWin8() ? ::GetModuleHandle(L"KernelBase.dll") : nullptr;
70 if (!hKernel32 || LDR_IS_RESOURCE(hKernel32))
71 {
72 _ASSERTE(hKernel32 && !LDR_IS_RESOURCE(hKernel32));
73 return 0;
74 }
75
76 HMODULE hConEmuHk = ::GetModuleHandle(ConEmuHk_DLL_3264);
77 if (hConEmuHk && (hConEmuHk != ghOurModule))
78 {
79 typedef FARPROC (WINAPI* GetLoadLibraryW_t)();
80 GetLoadLibraryW_t GetLoadLibraryW = (GetLoadLibraryW_t)::GetProcAddress(hConEmuHk, "GetLoadLibraryW");
81 if (GetLoadLibraryW)
82 {
83 fnLoadLibrary = (UINT_PTR)GetLoadLibraryW();
84 }
85 }
86
87 UINT_PTR fnKernel32 = (UINT_PTR)::GetProcAddress(hKernel32, "LoadLibraryW");
88 UINT_PTR fnKernelBase = hKernelBase ? (UINT_PTR)::GetProcAddress(hKernelBase, "LoadLibraryW") : 0L;
89 HMODULE hKernel = fnKernelBase ? hKernelBase : hKernel32;
90 if (!fnLoadLibrary)
91 {
92 fnLoadLibrary = fnKernelBase ? fnKernelBase : fnKernel32;
93 }
94
95 // Функция должна быть именно в Kernel32.dll (а не в какой либо другой библиотеке, мало ли кто захукал...)
96 if (!CheckCallbackPtr(hKernel, 1, (FARPROC*)&fnLoadLibrary, TRUE))
97 {
98 // _ASSERTE уже был
99 return 0;
100 }
101
102 gfLoadLibrary = InjectsFnPtr(hKernel, fnLoadLibrary, (hKernel==hKernel32) ? L"Kernel32.dll" : L"KernelBase.dll");
103 return fnLoadLibrary;
104}
105
106UINT_PTR GetLdrGetDllHandleByNameAddress()
107{

Callers 5

InjectHooksFunction · 0.85
DllStartFunction · 0.85
DllMainFunction · 0.85
InfiltrateDllFunction · 0.85
InjectRemoteFunction · 0.85

Calls 5

IsWin8Function · 0.85
GetProcAddressFunction · 0.85
GetLoadLibraryWFunction · 0.85
CheckCallbackPtrFunction · 0.85
InjectsFnPtrClass · 0.85

Tested by

no test coverage detected