GitPedia

Swift hook

⚓️ A Swift Library for hooking swift methods and functions.

From p-x9·Updated May 26, 2026·View on GitHub·

**swift hook** is a ⚓️ A Swift Library for hooking swift methods and functions. The project is written primarily in Swift, distributed under the MIT License license, first published in 2023. Key topics include: interpolation, swizzling.

Latest release: 0.5.0v0.5.0
April 6, 2024View Changelog →

SwiftHook

A Swift Library for hooking swift methods and functions.

<!-- # Badges -->

Github issues
Github forks
Github stars
Github top language

How works

  • Function / Struct Method
    Hook by facebook/fishhook.

  • Objective-C Class Method
    Simply, Objective-C runtime is used.

  • Swift Class Method
    Hook by rewriting Vtable.

Usage

[!NOTE]
To hook a function that exists in your own image, you must specify the following linker flag.
"-Xlinker -interposable"

Reference: johnno1962/SwiftTrace

Hook

Function / Struct Method

The targetFunction implementation is replaced by the replacementFunction implementation.
The original implementation is moved to originalFunction.

It is possible to call an originalFunction within a replacementFunction.

swift
try SwiftHook.hookFunction( "SwiftHookTests.targetFunction() -> Swift.String", "SwiftHookTests.replacementFunction() -> Swift.String", "SwiftHookTests.originalFunction() -> Swift.String", isMangled: false ) /* using mangled symbol names */ try SwiftHook.hookFunction( "$s14SwiftHookTests14targetFunctionSSyF", "$s14SwiftHookTests19replacementFunctionSSyF", "$s14SwiftHookTests16originalFunctionSSyF", isMangled: true )

Exchange Implementation

Function / Struct Method

swift
SwiftHook.exchangeFuncImplementation( "SwiftHookTests.StructItem.printA() -> Swift.String", "SwiftHookTests.StructItem.printB() -> Swift.String", isMangled: false ) /* using mangled symbol names */ SwiftHook.exchangeFuncImplementation( "$s14SwiftHookTests21hook_assertionFailure__4file4line5flagss5NeverOs12StaticStringV_SSAISus6UInt32VtF", "$s14SwiftHookTests25XXXXhook_assertionFailure__4file4line5flagss5NeverOs12StaticStringV_A2ISus6UInt32VtF", isMangled: true )

Class Method

swift
/// Swift Class try SwiftHook.exchangeMethodImplementation( "SwiftHookTests.SwiftClassItem.mul2(Swift.Int) -> Swift.Int", "SwiftHookTests.SwiftClassItem.add2(Swift.Int) -> Swift.Int", for: SwiftClassItem.self ) // Objective-C Class try SwiftHook.exchangeMethodImplementation( "mul2:", "add2:", for: ObjCClassItem.self )

License

swift-hook is released under the MIT License. See LICENSE

Contributors

Showing top 3 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from p-x9/swift-hook via the GitHub API.Last fetched: 6/26/2026