DNF_DLL/test/hook.cpp

60 lines
1.1 KiB
C++

#include "pch.h"
#include "hook.h"
#include "sock.h"
#include "MinHook.h"
#include "squirrel.h"
#pragma comment(lib, "libMinHook.x86.lib")
uint32_t hook::H_Register_Nut(uint32_t v, void* f, int freeVarsCnt)
{
static int build = 0;
if (build == 0 && f == (void*)0x005C5980)
{
squirrel::R_Register_Nut();
}
return MLnewclosure(v, f, freeVarsCnt);
}
void hook::H_Register_Pack(void* Ecx)
{
Lpfn_Init(Ecx);
sock::R_Register_Pack();
}
int hook::RegisterHook()
{
MH_Initialize();
MH_CreateHook((void*)INIT_PACK_ADDRESS, &H_Register_Pack, reinterpret_cast<void**>(&Lpfn_Init));
MH_CreateHook((void*)INIT_NUT_ADDRESS, &H_Register_Nut, reinterpret_cast<void**>(&MLnewclosure));
MH_EnableHook((void*)INIT_PACK_ADDRESS);
MH_EnableHook((void*)INIT_NUT_ADDRESS);
return 0;
}
int hook::InitGameScript()
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"SetHudUI", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
//SQPushString(v, L"1.cpp", -1);
SQ_Call(v, 2, 1, 0);
SQPop(v, 2);
std::cout << u8"µ÷Óóɹ¦" << std::endl;
return 0;
}