BOOL Initialize(PVOID BaseAddress) { LdrDisableThreadCalloutsForDll(BaseAddress); ml::MlInitialize(); BaseAddress = FindLdrModuleByName(&USTR(L"js.dll"))->DllBase; MEMORY_PATCH p[] = { PATCH_MEMORY(0x00, 4, 0x73779), PATCH_MEMORY(0xEB, 1, 0x6D382), // ping PATCH_MEMORY(0xEB, 1, 0x6D56D), PATCH_MEMORY(0xEB, 1, 0x6D477), PATCH_MEMORY(1, 4, 0x6FA73), // timer }; MEMORY_FUNCTION_PATCH f[] = { INLINE_HOOK_CALL_RVA_NULL(0x72A17, SaveNodeIndex), INLINE_HOOK_CALL_RVA(0x730C3, InitNodeName, StubAppendString), INLINE_HOOK_CALL_RVA(0x72F0C, InitNodeName, StubAppendString), INLINE_HOOK_JUMP(sendto, xy_sendto, stubsendto), INLINE_HOOK_JUMP(recvfrom, xy_recvfrom, stubrecvfrom), }; Nt_PatchMemory(p, countof(p), f, countof(f), BaseAddress); return TRUE; }
BOOL Initialize(PVOID BaseAddress) { PLDR_MODULE ExeModule; LdrDisableThreadCalloutsForDll(BaseAddress); BaseAddress = Nt_FindLdrModuleByHandle(NULL)->DllBase; MEMORY_PATCH p[] = { PATCH_MEMORY(HookRtlAllocateHeap, sizeof(PVOID), IATLookupRoutineRVAByEntry(BaseAddress, RtlAllocateHeap)), PATCH_MEMORY(HookRtlReAllocateHeap, sizeof(PVOID), IATLookupRoutineRVAByEntry(BaseAddress, RtlReAllocateHeap)), PATCH_MEMORY(HookRtlFreeHeap, sizeof(PVOID), IATLookupRoutineRVAByEntry(BaseAddress, RtlFreeHeap)), PATCH_MEMORY(HookRtlSizeHeap, sizeof(PVOID), IATLookupRoutineRVAByEntry(BaseAddress, RtlSizeHeap)), }; Nt_LoadLibrary(L"D3DCompiler_43.dll"); Nt_LoadLibrary(L"ole32.dll"); // Nt_PatchMemory(p, countof(p), NULL, 0, BaseAddress); return TRUE; }