# shithook A c++ header only library for inline hooking. Supports x86_64, x86, and arm. Small, simple, and easily detected :) # usage Installing the hook/Init. ```cpp __attribute__((noinline)) // very important that this is not inline! FILE* hook_test(const char* filename, const char* open_type) { std::printf("> filename = %s\n", filename); std::printf("> open type = %s\n", open_type); std::getchar(); return hook::get_func(&fopen)(filename, open_type); } hook::make_hook(&fopen, &hook_test); ``` ### Calling Original `hook::get_func` is templated so that you can pass a function pointer I.E `&fopen` and the returned pointer will be of that type. ```cpp return hook::get_func(&fopen)(filename, open_type); // returned value is of type: FILE* (*)(const char*, const char*); ``` ### Disable Hook ```cpp hook::disable(&fopen); ``` ### Enable Hook ```cpp hook::enable(&fopen); ```