#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(); } std::map bufferm; static SqPushRootFunc* yuancall; uint32_t ThFunc(uint32_t v) { int a = yuancall(v); //std::cout << u8"参数个数" << params << std::endl; //SQ_Get(v, -2); //std::cout <(&Lpfn_Init)); MH_CreateHook((void*)INIT_NUT_ADDRESS, &H_Register_Nut, reinterpret_cast(&MLnewclosure)); MH_CreateHook((void*)0x1358C50, &ThFunc, reinterpret_cast(&yuancall)); MH_EnableHook((void*)INIT_PACK_ADDRESS); MH_EnableHook((void*)INIT_NUT_ADDRESS); //MH_EnableHook((void*)0x1358C50); return 0; } int hook::InitGameScript() { MH_EnableHook((void*)0x1359280); /* 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; }