NativeHook 1.0.4
dotnet add package NativeHook --version 1.0.4
NuGet\Install-Package NativeHook -Version 1.0.4
<PackageReference Include="NativeHook" Version="1.0.4"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="NativeHook" Version="1.0.4" />
<PackageReference Include="NativeHook"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add NativeHook --version 1.0.4
#r "nuget: NativeHook, 1.0.4"
#:package NativeHook@1.0.4
#addin nuget:?package=NativeHook&version=1.0.4
#tool nuget:?package=NativeHook&version=1.0.4
NativeHook
A lightweight, source-generator-based native function hooking library for .NET. Hook Windows API functions with minimal boilerplate using C# attributes and auto-generated code.
📦 Installation
Requires project to target .NET 6.0 or later.
Install via NuGet Package Manager:
dotnet add package NativeHook
Or add the package reference directly to your .csproj file:
<PackageReference Include="NativeHook" Version="1.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Don't forget to enable unsafe code blocks (required for pointer operations):
<PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
🚀 Quick Start
1. Create a Hook Method
Add the [NativeHook] attribute to a static method that matches the signature of the function you want to hook:
using NativeHook;
partial class Program
{
[NativeHook("user32.dll", "MessageBoxA")]
static unsafe int MessageBoxHook(nint hWnd, byte* lpText, byte* lpCaption, uint uType)
{
fixed (byte* pCaption = "Hooked!"u8)
fixed (byte* pMessage = "This message box has been hooked."u8)
{
// Call the original function with modified parameters
return MessageBoxA_Hook.Call(hWnd, pMessage, pCaption, uType);
}
}
}
2. Install and Use the Hook
static int Main()
{
// Call MessageBox normally (not hooked yet)
MessageBox(0, "Original Message", "Original Caption", 0);
// Install the hook
MessageBoxA_Hook.Install();
// Now all calls to MessageBoxA will go through your hook
MessageBox(0, "Original Message", "Original Caption", 0);
// ^ This will show "Hooked!" with "This message box has been hooked."
// Clean up when done
MessageBoxA_Hook.Dispose();
return 0;
}
📝 Roadmap
- Cross-Platform Support - Add support for Linux and macOS
- Function Pointer Scan - Scan and hook functions by pattern/signature
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.