#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(&Lpfn_Init)); MH_CreateHook((void*)INIT_NUT_ADDRESS, &H_Register_Nut, reinterpret_cast(&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; }