MCPcopy Index your code
hub / github.com/EasyHook/EasyHook

github.com/EasyHook/EasyHook @v2.7.7097.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.7.7097.0 ↗ · + Follow
819 symbols 1,546 edges 129 files 251 documented · 31%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Welcome to EasyHook - The reinvention of Windows API Hooking

Join the chat at https://gitter.im/EasyHook/EasyHook

Master branch: Master branch build status

Develop branch: Develop branch build status

You can support the EasyHook project over at Bountysource or raise a bounty for an issue to be fixed: Current bounties

This project supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment on 32- or 64-bit Windows Vista x64, Windows Server 2008 x64, Windows 7, Windows 8.1, and Windows 10.

EasyHook currently supports injecting assemblies built for .NET Framework 3.5 and 4.0 and can also inject native DLLs.

EasyHook homepage

For more information head to the EasyHook site at https://easyhook.github.io

NuGet

https://www.nuget.org/packages/EasyHook

For native C++ apps there is also a native NuGet package available: https://www.nuget.org/packages/EasyHookNativePackage

Bug reports or questions

Reporting bugs is the only way to get them fixed and help other users of the library! If an issue isn't getting addressed, try raising a bounty for it.

Report issues at: https://github.com/EasyHook/EasyHook/issues

License

Copyright (c) 2009 Christoph Husse & Copyright (c) 2012 Justin Stenning

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

External libraries

EasyHook includes the UDIS86 library Copyright (c) 2002-2012, Vivek Thampi vivek.mt@gmail.com. See .\DriverShared\Disassembler\udis86-LICENSE.txt for license details. Minor modifications have been made for it to compile with EasyHook.

More information about UDIS86 can be found at https://github.com/vmt/udis86

Extension points exported contracts — how you extend this code

IEntryPoint (Interface)
EasyHook will search in the injected user library for a class which implements this interface. You should only
EasyHook/RemoteHook.cs
IAssemblyCache (Interface)
The IAssemblyCache interface is the top-level interface that provides access to the GAC.
EasyHook/GACWrap.cs
IClassFactory (Interface)
(no doc)
EasyHook/COMClassInfo.cs
IContext (Interface)
A context contains some basic information about the environment in which your library main method has been inv
EasyHook/RemoteHook.cs
IAssemblyName (Interface)
Represents an assembly name. An assembly name includes a predetermined set of name-value pairs. The assembly n
EasyHook/GACWrap.cs
IClassFactory2 (Interface)
(no doc)
EasyHook/COMClassInfo.cs
IAssemblyEnum (Interface)
Enumerates the assemblies in the GAC.
EasyHook/GACWrap.cs
IInstallReferenceItem (Interface)
The IInstallReferenceItem interface represents a reference that has been set on an assembly in the GAC. Instan
EasyHook/GACWrap.cs

Core symbols most depended-on inside this repo

ud_asmprintf
called by 76
DriverShared/Disassembler/libudis86/syn.c
ToString
called by 32
EasyHook/Domain/DomainIdentifier.cs
inp_next
called by 24
DriverShared/Disassembler/libudis86/decode.c
RtlReleaseLock
called by 18
EasyHookSys/Rtl/memory.c
RtlFreeMemory
called by 18
EasyHookSys/Rtl/memory.c
RtlCopyMemory
called by 15
EasyHookSys/Rtl/memory.c
GetCurrentProcessId
called by 15
EasyHook/DllImport.cs
modrm
called by 13
DriverShared/Disassembler/libudis86/decode.c

Shape

Method 405
Function 239
Class 140
Enum 26
Interface 9

Languages

C#63%
C29%
C++9%

Modules by API surface

EasyHook/DllImport.cs121 symbols
EasyHook/GACWrap.cs52 symbols
DriverShared/Disassembler/libudis86/decode.c43 symbols
DriverShared/Disassembler/libudis86/udis86.c30 symbols
DriverShared/LocalHook/barrier.c25 symbols
EasyHook/RemoteHook.cs21 symbols
EasyHook/LocalHook.cs20 symbols
EasyHook/COMClassInfo.cs19 symbols
EasyHookDll/RemoteHook/thread.c18 symbols
EasyHook/InjectionLoader.cs17 symbols
EasyHookSys/Rtl/memory.c14 symbols
Test/TestFuncHooks/Program.cs13 symbols

For agents

$ claude mcp add EasyHook \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page