fishhook 0.1.0

A library that enables dynamically rebinding symbols in Mach-O binaries at runtime
# fishhook-rs

A Rust port of [fishhook](https://github.com/facebook/fishhook) — a library that enables dynamically rebinding symbols
in Mach-O binaries at runtime. Useful for intercepting system functions like `malloc`, `free`, or `open` on Apple
platforms.

> **Platform support**: Currently tested only on macOS (aarch64-apple-darwin)

### Installation

Add to your `Cargo.toml`:

```toml
[dependencies]
fishhook-rs = "0.1"
```

### Usage

Example below uses [ctor](https://github.com/mmastrac/rust-ctor) for invoking ***init()*** first

```rust
use fishhook::{register, Rebinding};

#[ctor::ctor]
fn init() {
    unsafe {
        register(vec![
            Rebinding {
                name: "malloc".to_string(),
                function: my_malloc as *const c_void,
            },
            Rebinding {
                name: "calloc".to_string(),
                function: my_calloc as *const c_void,
            },
            Rebinding {
                name: "realloc".to_string(),
                function: my_realloc as *const c_void,
            },
            Rebinding {
                name: "free".to_string(),
                function: my_free as *const c_void,
            },
            Rebinding {
                name: "atexit".to_string(),
                function: my_exit as *const c_void,
            },
        ]);
    }
}
```