mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Add method for obtaining PEB
Inline method for obtaining process environment block.
This commit is contained in:
parent
892fd19c4a
commit
a0419eec11
@ -112,7 +112,7 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
{
|
||||
s_ProcessEnvironmentBlock = (PEB64*)__readgsqword(0x60);
|
||||
s_ProcessEnvironmentBlock = CModule::GetProcessEnvironmentBlock();
|
||||
s_DosHeader = (IMAGE_DOS_HEADER*)s_ProcessEnvironmentBlock->ImageBaseAddress;
|
||||
s_NtHeaders = (IMAGE_NT_HEADERS64*)((uintptr_t)s_DosHeader
|
||||
+ (uintptr_t)s_DosHeader->e_lfanew);
|
||||
|
@ -58,6 +58,10 @@ public:
|
||||
inline static IMAGE_NT_HEADERS64* GetNTHeaders(QWORD pModuleBase)
|
||||
{ return reinterpret_cast<IMAGE_NT_HEADERS64*>(pModuleBase + GetDOSHeader(pModuleBase)->e_lfanew); }
|
||||
|
||||
// https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
|
||||
inline static PEB64* GetProcessEnvironmentBlock()
|
||||
{ return reinterpret_cast<PEB64*>(__readgsqword(0x60)); }
|
||||
|
||||
void UnlinkFromPEB(void) const;
|
||||
|
||||
private:
|
||||
|
@ -18,10 +18,7 @@ static void InitAllocator()
|
||||
if (!s_bAllocatorInitialized)
|
||||
{
|
||||
s_bAllocatorInitialized = true;
|
||||
|
||||
// https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
|
||||
const PEB64* processEnvBlock = reinterpret_cast<PEB64*>(__readgsqword(0x60));
|
||||
const QWORD imageBase = processEnvBlock->ImageBaseAddress;
|
||||
const QWORD imageBase = CModule::GetProcessEnvironmentBlock()->ImageBaseAddress;
|
||||
|
||||
CreateGlobalMemAlloc = CModule::GetExportedSymbol(imageBase,
|
||||
"CreateGlobalMemAlloc").RCast<CStdMemAlloc* (*)(void)>();
|
||||
|
Loading…
x
Reference in New Issue
Block a user