/* Set the static base_addr and base_len variables then initialize all Signature Objects */ void InitSigs(void) { CSigScan::GetDllMemInfo(); /* void CBaseAnimating::Ignite(float flFlameLifetime, bool bNPCOnly, float flSize, bool bCalledByLevelDesigner); Last Address: 0x220BC7A0 Signature: 56 8B F1 8B? 86? BC? 00? 00? 00? C1? E8? 1B? A8? 01? 0F? 85? 9A? 00? 00? 00? 8B 16 FF 92? F0? 00? 00? 00? 80? 7C? 24? 0C? 00? 74? 08? 84 C0 0F? 84? 83? 00? 00? 00? 3C 01 75? 20? 80 7C 24 14 00 75? 19? 8B CE E8 83? 1A? 01? 00? 85? C0? 74? 0E? 8B 10 8B C8 FF 92? 08? 05? 00? 00? 84 C0 74? 5F? 57 6A 01 56 E8 48? EA? 07? 00? 8B F8 83 C4 08 85 FF 74? 3D? 8B 44 24 0C 50 8B CF E8 83? E5? 07? 00? 68 00 00 00 08 8B CE */ CBaseAnimating_Ignite_Sig.Init((unsigned char*) "\x56\x8B\xF1\x8B\x86\xBC\x00\x00\x00\xC1\xE8\x1B\xA8\x01\x0F\x85\x9A\x00\x00\x00" "\x8B\x16\xFF\x92\xF0\x00\x00\x00\x80\x7C\x24\x0C\x00\x74\x08\x84\xC0\x0F\x84\x83" "\x00\x00\x00\x3C\x01\x75\x20\x80\x7C\x24\x14\x00\x75\x19\x8B\xCE\xE8\x83\x1A\x01" "\x00\x85\xC0\x74\x0E\x8B\x10\x8B\xC8\xFF\x92\x08\x05\x00\x00\x84\xC0\x74\x5F\x57" "\x6A\x01\x56\xE8\x48\xEA\x07\x00\x8B\xF8\x83\xC4\x08\x85\xFF\x74\x3D\x8B\x44\x24" "\x0C\x50\x8B\xCF\xE8\x83\xE5\x07\x00\x68\x00\x00\x00\x08\x8B\xCE" , "xxx?????????????????" "xxx????????????xx???" "???xx??xxxxx??xxx???" "?????xxxxx?????xx??x" "xxxx????xxxxxxx??xxx" "xxxxx????xxxxxxx" , 116); return ; }
void FileFilter_Load() { CreateInterfaceFn engineFactory = Sys_GetFactory("engine.dll"); netstringtables = (INetworkStringTableContainer *)engineFactory(INTERFACENAME_NETWORKSTRINGTABLESERVER, NULL); if(netstringtables == NULL) { Msg("Unable to find string tables!\n"); return; } CSigScan::sigscan_dllfunc = engineFactory; bool scan = CSigScan::GetDllMemInfo(); sigcheckfileext_Sig.Init((unsigned char *)SIG_CHECKFILE, SIG_CHECKFILEMASK, SIG_CHECKFILELEN); Msg("CheckFile signature %x\n", sigcheckfileext_Sig.sig_addr); if(sigcheckfileext_Sig.sig_addr) { checkext_trampoline = (checkext_t)sigcheckfileext_Sig.sig_addr; DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)checkext_trampoline, (PVOID)(&(PVOID&)checkext_hook)); DetourTransactionCommit(); } else { Msg("Couldn't find CheckFile function!\n"); return; } }
factorylist_t GetFactories() { CSigScan::sigscan_dllfunc = Sys_GetFactory("server.dll"); if(!CSigScan::GetDllMemInfo()) { gLua->Error("Could not get access to factories."); } CSigScan sigscanFactories; sigscanFactories.Init((unsigned char *)"\x8B\x44\x24\x04\x8B\x0D\xC0\x33\x6D\x10\x8B\x15\xC4\x33\x6D\x10\x89\x08\x8B\x0D\xC8\x33\x6D\x10\x89\x50\x04\x89\x48\x08\xC3", "xxxxxx????xx????xxxx????xxxxxxx", 31); if(!sigscanFactories.is_set) { gLua->Error("Could not get access to factories."); } FactoryList_Retrieve = (void (*)(factorylist_t &))sigscanFactories.sig_addr; factorylist_t factories; FactoryList_Retrieve(factories); return factories; }