Пожалуйста, обратите внимание, что пользователь заблокирован
Как без GetModuleInformation получить информацию о модуле lpBaseOfDll и SizeOfImage (через peb). Помогите кодом, кому не сложно)
// x64
BOOL get_dll_peb(LPCWSTR dllname /* in */, PUINT size /* out */, HMODULE* base /* out */)
{
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, * PUNICODE_STRING;
typedef struct LDR_MODULE
{
LIST_ENTRY e[3];
HMODULE BaseAddress;
void* EntryPoint;
UINT Size;
UNICODE_STRING Path;
UNICODE_STRING Name;
} LDR_MODULE, *PLDR_MODULE;
BOOL success = FALSE;
*size = 0;
*base = 0;
int offset = 0x60;
int ModuleList = 0x18;
int ModuleListFlink = 0x18;
int KernelBaseAddr = 0x10;
INT_PTR peb = __readgsqword(offset);
INT_PTR mdllist = *(INT_PTR*)(peb + ModuleList);
INT_PTR mlink = *(INT_PTR*)(mdllist + ModuleListFlink);
PLDR_MODULE mdl = (PLDR_MODULE)mlink;
do
{
mdl = (LDR_MODULE*)mdl->e[0].Flink;
if (mdl->BaseAddress != NULL)
{
if (!lstrcmpiW(mdl->Name.Buffer, dllname))
{
*size = mdl->Size;
*base = mdl->BaseAddress;
success = TRUE;
break;
}
}
} while (mlink != (INT_PTR)mdl);
return success;
}