예제 #1
0
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;
}
예제 #2
0
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;
}