mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-13 00:00:54 +01:00
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
|
|
|
||
|
|
/*
|
||
|
|
* This file is part of the CitizenFX project - http://citizen.re/
|
||
|
|
*
|
||
|
|
* See LICENSE and MENTIONS in the root of the source tree for information
|
||
|
|
* regarding licensing.
|
||
|
|
*/
|
||
|
|
|
||
|
|
// Changes:
|
||
|
|
// - 2021/2/24: Increased game segment size for Fallout4.
|
||
|
|
|
||
|
|
#include "TargetConfig.h"
|
||
|
|
#include <Windows.h>
|
||
|
|
|
||
|
|
#pragma comment(linker, "/merge:.data=.cld")
|
||
|
|
#pragma comment(linker, "/merge:.rdata=.clr")
|
||
|
|
#pragma comment(linker, "/merge:.cl=.zdata")
|
||
|
|
#pragma comment(linker, "/merge:.text=.zdata")
|
||
|
|
#pragma comment(linker, "/section:.zdata,re")
|
||
|
|
|
||
|
|
#pragma bss_seg(".game")
|
||
|
|
uint8_t game_seg[CurrentTarget.exeLoadSz];
|
||
|
|
|
||
|
|
// high rip zone, used for RIP relative addressing
|
||
|
|
// guaranteed to always be there.
|
||
|
|
uint8_t highrip[0x100000];
|
||
|
|
|
||
|
|
#pragma data_seg(".xcode")
|
||
|
|
uint8_t zdata[200] = {1};
|
||
|
|
|
||
|
|
namespace
|
||
|
|
{
|
||
|
|
extern "C" const IMAGE_DOS_HEADER __ImageBase;
|
||
|
|
|
||
|
|
constinit const uint8_t* pBasePtr = reinterpret_cast<const uint8_t*>(&__ImageBase);
|
||
|
|
const uint8_t* kpImageEnd{pBasePtr + ((PIMAGE_NT_HEADERS)(pBasePtr + __ImageBase.e_lfanew))->OptionalHeader.SizeOfImage};
|
||
|
|
|
||
|
|
bool InRange(const uint8_t* apObj, const uint8_t* apLo, const uint8_t* apHi)
|
||
|
|
{
|
||
|
|
return apObj >= apLo && apObj <= apHi;
|
||
|
|
};
|
||
|
|
} // namespace
|
||
|
|
|
||
|
|
#define EXP __declspec(dllexport)
|
||
|
|
bool EXP IsThisExeAddress(const uint8_t* apAddress)
|
||
|
|
{
|
||
|
|
return InRange(apAddress, pBasePtr, kpImageEnd);
|
||
|
|
}
|
||
|
|
|
||
|
|
bool EXP IsGameMemoryAddress(const uint8_t* apAddress)
|
||
|
|
{
|
||
|
|
return InRange(apAddress, &highrip[0], &highrip[sizeof(highrip)]) || InRange(apAddress, &game_seg[0], &game_seg[sizeof(game_seg)]);
|
||
|
|
}
|
||
|
|
#undef EXP
|