# jmpews/dobby

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/jmpews-dobby).**

4,754 stars · 1,073 forks · C++ · Apache-2.0

## Links

- GitHub: https://github.com/jmpews/Dobby
- awesome-repositories: https://awesome-repositories.com/repository/jmpews-dobby.md

## Topics

`hook` `hook-framework`

## Description

Dobby is a dynamic function hooking framework and binary instrumentation tool designed to intercept and redirect function calls in compiled binaries. It serves as a cross-platform and cross-architecture library that provides a unified interface for modifying program execution flow across different operating systems and CPU architectures.

The library enables low-level binary instrumentation and runtime application instrumentation by injecting custom handlers into live processes. It is used for software reverse engineering to observe real-time data flow and logic by hooking internal functions.

The framework covers binary patching, runtime symbol resolution, and the generation of dynamic trampolines. It manages platform-specific memory protections and maps generic hook requests into architecture-specific opcodes to redirect execution via instruction-based hooking.

## Tags

### Software Engineering & Architecture

- [Function Hooking](https://awesome-repositories.com/f/software-engineering-architecture/function-hooking.md) — Provides a framework for intercepting and redirecting function calls in running programs to modify behavior.
- [Binary Instrumentation Tools](https://awesome-repositories.com/f/software-engineering-architecture/binary-instrumentation-tools.md) — Provides a toolset for modifying program execution flow by injecting custom handlers into live processes.
- [Dynamic Function Interception](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-function-interception.md) — Implements a low-level framework for intercepting and redirecting function calls in compiled binaries.

### Graphics & Multimedia

- [Cross-Platform Function Interception](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis/api-interception-hooks/cross-platform-function-interception.md) — Redirects execution from target functions to custom handlers across various operating systems and CPU architectures. ([source](https://github.com/jmpews/dobby#readme))

### Operating Systems & Systems Programming

- [Trampoline-Based Hook Engines](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-instruction-patching/trampoline-based-hook-engines.md) — Implements a hooking engine that uses dynamic trampolines to redirect execution to custom handlers.
- [Instruction Hooking](https://awesome-repositories.com/f/operating-systems-systems-programming/computer-architecture/instruction-execution-models/instruction-hooking.md) — Redirects program execution flow by modifying function entry points at the instruction level.
- [Cross-Architecture Hooking Libraries](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-architecture-hooking-libraries.md) — Provides a unified interface for function redirection across various hardware platforms.
- [Cross-Platform Hooking Libraries](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-platform-hooking-libraries.md) — Translates generic hook requests into machine-specific opcodes for multiple hardware architectures and platforms.
- [Reverse Engineering Tools](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-analysis-capabilities/reverse-engineering-tools.md) — Enables analysis of compiled program logic and data flow by hooking internal functions in real time.
- [Cross-Platform Binary Modifications](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-platform-binary-modifications.md) — Applies custom logic and patches to compiled binaries across different operating systems and architectures.
- [Relocatable Code Injections](https://awesome-repositories.com/f/operating-systems-systems-programming/live-process-code-injection/relocatable-code-injections.md) — Injects custom logic into process memory while maintaining correct relative addresses for execution.
- [Memory Protection Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-protection-managers.md) — Modifies memory protection flags at runtime to allow writing to executable code segments.
- [Process-Level Instrumentation](https://awesome-repositories.com/f/operating-systems-systems-programming/system-instrumentation-frameworks/native-runtime-instrumentation/process-level-instrumentation.md) — Injects custom handlers into live processes to monitor internal function calls or alter execution flow.

### Programming Languages & Runtimes

- [Binary Instrumentation](https://awesome-repositories.com/f/programming-languages-runtimes/binary-instrumentation.md) — Implements binary instrumentation by injecting diagnostic or monitoring code into compiled binaries.
- [Runtime Symbol Resolution](https://awesome-repositories.com/f/programming-languages-runtimes/compiler-interpreter-internals/linkers/runtime-symbol-resolution.md) — Resolves function entry points in compiled binaries by parsing symbol tables or scanning for byte signatures at runtime.

### Development Tools & Productivity

- [Architecture-Specific Mappings](https://awesome-repositories.com/f/development-tools-productivity/code-translation-mappings/opcode-mappings/architecture-specific-mappings.md) — Provides a mechanism to translate generic hook requests into architecture-specific machine code sequences.

### Part of an Awesome List

- [Android Hooking Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/android-hooking-frameworks.md) — Lightweight multi-platform hook framework for native code.
