• Stars
    star
    198
  • Rank 196,010 (Top 4 %)
  • Language
    C#
  • License
    GNU Lesser Genera...
  • Created over 5 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Advanced native function hooks for x86, x64. Welcome to the next level!

Project Reloaded: Hooking



WTF You can unit test function hooks!?

Coverage NuGet

Introduction

Reloaded.Hooks is a library for intercepting and modifying existing binary functions on x86 and x64 machines. It is most often used to either intercept Win32 API calls (e.g. NtCreateFile to find out what files the current process is loading) or to patch existing functions within a program; e.g. patching software at runtime.

If this concept is unfamiliar to you; I would suggest to research the term Hooking while reading the documentation.

Reloaded.Hooks is a managed alternative to native libraries such as MinHook and Detours, targeted at tackling more advanced/difficult use cases; such as when functions do not use standard calling conventions.

Feature Highlights

  • Support for x86 and x64 architectures.
  • Call & hook unmanaged functions with custom calling conventions.
  • Stack function hooks. You can hook already hooked functions as many times as you like.
  • Mid function x86/x64 assembly hooks; similar to the likes of Cheat Engine.
  • Highly compatible. Detects & patches common variations of existing function hooks when hooking. Hook functions hooked by other libraries; this feature is unique to Reloaded.Hooks.
  • Generate native wrapper functions for converting between custom calling conventions. e.g. Stdcall to Fastcall converter.
  • Many lower level utility functions allowing you to deal with things like Virtual Function Tables.

Documentation

As advanced as the library may sound, in reality using the library is super simple. Please visit the dedicated documentation site for getting started.

In addition, feel free to look through Reloaded.Hooks.Tests for some ideas πŸ˜‰.

Contributions

As with the standard for all of the Reloaded-Project, repositories; contributions are very welcome and encouraged.

Feel free to implement new features, make bug fixes or suggestions so long as they are accompanied by an issue with a clear description of the pull request.

If you are implementing new features, please do provide the appropriate unit tests to cover the new features you have implemented; try to keep the coverage high 😊.

Authors & Contributions

  • Reloaded.Hooks uses the Flat Assembler (FASM) by Tomasz Grysztar.

  • Reloaded.Hooks uses the Iced library by 0xd4d.

Legacy

  • Older versions of Reloaded.Hooks used the SharpDisasm library by Justin Stenning (spazzarama), a partial port of Udis86 by Vivek Thampi. Both of these libraries are originally distributed under the under the 2-clause "Simplified BSD License".

More Repositories

1

Reloaded-II

Next Generation Universal .NET Core Powered Mod Loader compatible with anything X86, X64.
C#
439
star
2

Reloaded.Injector

C# DLL Injection Library capable of injecting x86 DLLs to x86 process from x64 processes.
C#
143
star
3

Reloaded.Memory.SigScan

Simple good performance byte pattern/PE signature scanner, allowing upwards of 5000MB/s per core (30000+MB/s with AVX) on modern hardware.
C#
76
star
4

Reloaded.Memory

Managed, high performance, fully featured memory manipulation library written in C#, providing a very easy to use API.
C#
63
star
5

Reloaded.Assembler

Minimal .NET wrapper around the simple, easy to use Flat Assembler written by Tomasz Grysztar. Supports both x64 and x86 development.
C#
31
star
6

Reloaded.Core.Bootstrap

Tiny Visual C++ library/example that allows you to inject CoreCLR (the .NET Core Runtime) into the current unmanaged process and execute a .NET library.
C++
21
star
7

Reloaded.Memory.Buffers

[C# & Rust] An implementation of efficient, shared, concurrent and permanent storage of objects in unmanaged memory in static, non-changing locations that last the lifetime of a given process.
Rust
20
star
8

Reloaded.Messaging

Reloaded II's extensible "event-like" solution for passing messages across a local or remote network that sits ontop of LiteNetLib.
C#
8
star
9

Reloaded-III

[WIP] Formal Specification for the Next Iteration of Reloaded
6
star
10

reloaded.universal.steamhook

A Reloaded II mod that tricks steam into not restarting the game when launched by an external application by dropping `steam_appid.txt` and hooking some functions. Note: Does not touch DRM.
C#
4
star
11

Reloaded.Hooks-rs

[WIP, NOT YET USABLE] Next Gen no_std Rust rewrite the Reloaded.Hooks library.
Rust
3
star
12

reloaded.universal.redirector

Universal file redirector for Reloaded Mod Loader II.
C#
3
star
13

Reloaded.Universal.DInputPleaseCooperate

Does it annoy you when you play a game, take a screenshot ... and nothing happens? Here's a fix.
PowerShell
2
star
14

Reloaded.Community

Community repository for storing Reloaded-II application configurations.
1
star