Пример #1
0
        /// <summary>
        /// Inject a delegate in VTable.
        /// </summary>
        /// <param name="pointerAddress">Pointer to address method.</param>
        /// <param name="delToInject">Delegate to be inject.</param>
        public void InjectHook(IntPtr pointerAddress, Delegate delToInject)
        {
            IntPtr     originalAddress = Marshal.ReadIntPtr(pointerAddress);
            IntPtr     hookAddress     = Marshal.GetFunctionPointerForDelegate(delToInject);
            VTableHook hook            = new VTableHook(delToInject, originalAddress, pointerAddress);

            WritePointer(pointerAddress, hookAddress);
            _hooks.Add(hook);
        }
Пример #2
0
 private bool RemoveHook(VTableHook hook)
 {
     WritePointer(hook.Address, hook.OriginalAddress);
     _hooks.Remove(hook);
     return(true);
 }