#include "stdafx.h"
#include "Core\Inc\Core.h"
#include "Engine\Inc\Engine.h"
#define RESULT_DECL void* const Result
typedef void(*NativeFunc)(FFrame& stack, RESULT_DECL);
typedef BYTE(__cdecl* GRegisterNative_fnType)(INT iNative, NativeFunc Func);
GRegisterNative_fnType volatile GRegisterNative_fn = NULL;
extern "C" DLL_EXPORT TCHAR GPackage[];
DLL_EXPORT TCHAR GPackage[] = TEXT("Spectre");
void hookCore();
BOOL APIENTRY UIEvents( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
hookCore();
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
//extern "C" DLL_EXPORT TCHAR GPackage[];
//DLL_EXPORT TCHAR GPackage[] = TEXT("Spectre");
void execgetNewLog(FFrame& Stack, RESULT_DECL)
{
//guard(AUIEvents::getNewLog)
//P_FINISH;
*(const TCHAR**)Result = TEXT("Just a test");
//unguardexec;
}
void hookCore()
{
auto hCore = GetModuleHandleA("Core.dll");
if (hCore) {
GRegisterNative_fn = (GRegisterNative_fnType)GetProcAddress(hCore, "?GRegisterNative@@YAEHABQ8UObject@@AEXAAUFFrame@@QAX@Z@Z");
if (GRegisterNative_fn)
{
GRegisterNative_fn(-1, &execgetNewLog);
}
}
}