Example #1
0
        //delegate

        private static void HookApi(SHookInfo hook, FTrunkInfo trunk)
        {
            /*SMemoryBasicInformation mbi_thunk = new SMemoryBasicInformation();
             * RKernel32.VirtualQuery(pRealThunk, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));
             * RKernel32.VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, PAGE_READWRITE, &mbi_thunk.Protect);
             * if (pHookApi->pOldProc == NULL) {
             * pHookApi->pOldProc = (PROC)pRealThunk->u1.Function;
             * }
             * pRealThunk->u1.Function = (DWORD)pHookApi->pNewProc;
             * DWORD dwOldProtect;
             * RKernel32.VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, mbi_thunk.Protect, &dwOldProtect);*/
        }
Example #2
0
        public static void Hook(SHookInfo hook)
        {
            Nullable <SModuleEntry32> module = RModule.Find(hook.Module);

            if (module.HasValue)
            {
                FTrunkInfo[] trunks = RModule.FetchTrunks(module.Value.hModule);
                foreach (FTrunkInfo trunk in trunks)
                {
                    if (trunk.Name == hook.Function)
                    {
                        HookApi(hook, trunk);
                    }
                }
            }
        }